2014-07-09 142 views
1

我一直在研究一个C++应用程序,根据用户的操作播放不同的视频。到目前为止,我与OpenCV合作只播放视频,因为我需要对视频进行实时更改。由于OpenCV不能播放声音,因此我需要使用不同的库来独立播放声音。到目前为止,我尝试了FFMPEG,但由于我没有在C++上工作经验(至少在带有外部库的计算机上,我通常在微控制器上编程),所以我无法工作。C++在控制台应用程序中播放视频音频

声音不需要与视频同步,也只能在Windows上运行。我最好的选择是什么?

谢谢。

+0

opencv的主要功能是处理帧,而不是I/O它们。我会为此使用Qt +声子。 http://qt-project.org/doc/qt-5/multimedia-examples.html – baci

+0

我'使用OpenCV来处理帧,因为我需要实时处理视频。但是,OpenCV不处理音频,我也需要播放它,确切地说它是如何在视频中播放的。 –

+0

opencv可以将I/O视频作为图像数据 - 实际上它在较低层使用ffmpeg - 但其主要功能是处理它们。对于音频它没有能力。 – baci

回答

0

如果它只需要在Windows上工作,WINAPI function PlaySound应满足您的要求。

#include "windows.h" 
#include "mmsystem.h" 

void play() 
{ 
    PlaySound(TEXT("sound.wav"), NULL, SND_FILENAME); // plays sound.wav once 
} 

为了完成这项工作,您需要链接到winmm.lib

如果您的文件名不是ASCII,则应该使用PlaySoundA(ANSI)或PlaySoundW(unicode)。

See also this question如果声音播放不正常。

+0

我做了你所说的,但由于某种原因,它播放窗口的“错误”声音(我一定犯了错误)。这里是代码: PlaySound(TEXT(“C:/ Users/Ricardo/Documents/Visual Studio 2013/Projects/SomEVideo/SomEVideo/KinectAudio-02-23-32.wav”),NULL,SND_FILENAME); //播放sound.wav一次 –

+0

我无法真正帮助你,因为我不明白它播放的是什么“错误的声音”。你应该提出一个新的问题。 – Theolodis

+0

下面就是我所做的:首先在stdafx.h中包含头文件,然后在主函数中只放这一行代码来测试它PlaySound(TEXT(“C:/ Users/Ricardo/Documents/Visual Studio 2013/Projects/SomEVideo/SomEVideo/KinectAudio-02-23-32.wav“),NULL,SND_FILENAME);.在此之后,我将winmm.lib链接到项目属性中。当我运行该程序,而不是播放wav声音时,我想让它播放此wav声音:https://dl.dropboxusercontent.com/u/45453297/Windows%20Background.wav –