我一直在研究一个C++应用程序,根据用户的操作播放不同的视频。到目前为止,我与OpenCV合作只播放视频,因为我需要对视频进行实时更改。由于OpenCV不能播放声音,因此我需要使用不同的库来独立播放声音。到目前为止,我尝试了FFMPEG,但由于我没有在C++上工作经验(至少在带有外部库的计算机上,我通常在微控制器上编程),所以我无法工作。C++在控制台应用程序中播放视频音频
声音不需要与视频同步,也只能在Windows上运行。我最好的选择是什么?
谢谢。
我一直在研究一个C++应用程序,根据用户的操作播放不同的视频。到目前为止,我与OpenCV合作只播放视频,因为我需要对视频进行实时更改。由于OpenCV不能播放声音,因此我需要使用不同的库来独立播放声音。到目前为止,我尝试了FFMPEG,但由于我没有在C++上工作经验(至少在带有外部库的计算机上,我通常在微控制器上编程),所以我无法工作。C++在控制台应用程序中播放视频音频
声音不需要与视频同步,也只能在Windows上运行。我最好的选择是什么?
谢谢。
如果它只需要在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如果声音播放不正常。
我做了你所说的,但由于某种原因,它播放窗口的“错误”声音(我一定犯了错误)。这里是代码: PlaySound(TEXT(“C:/ Users/Ricardo/Documents/Visual Studio 2013/Projects/SomEVideo/SomEVideo/KinectAudio-02-23-32.wav”),NULL,SND_FILENAME); //播放sound.wav一次 –
我无法真正帮助你,因为我不明白它播放的是什么“错误的声音”。你应该提出一个新的问题。 – Theolodis
下面就是我所做的:首先在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 –
opencv的主要功能是处理帧,而不是I/O它们。我会为此使用Qt +声子。 http://qt-project.org/doc/qt-5/multimedia-examples.html – baci
我'使用OpenCV来处理帧,因为我需要实时处理视频。但是,OpenCV不处理音频,我也需要播放它,确切地说它是如何在视频中播放的。 –
opencv可以将I/O视频作为图像数据 - 实际上它在较低层使用ffmpeg - 但其主要功能是处理它们。对于音频它没有能力。 – baci