OpenCV中如何播放avi文件的音频

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV中如何播放avi文件的音频相关的知识,希望对你有一定的参考价值。

OpenCV中能播放avi视频,但是没有声音,如何提取出avi文件中的音频来播放?

如果你一定要用OpenCV来播图像,那么声音可以用OpenAL,因为OpenCV没有播放音频功能。或者可以采用directshow播放视频和音频 参考技术A   OpenCV对avi文件的兼容性不好。可以用其他第三方播放器来播放。如:暴风影音或影音之星打开.avi格式的视频。windows本身的媒体播放器也可以打开avi格式文件。

  AVI是将语音和影像同步组合在一起的文件格式。它对视频文件采用了一种有损压缩方式,但压缩比较高,因此尽管面面质量不是太好,但其应用范围仍然非常广泛。

在 OpenCV 中播放 AVI 文件

【中文标题】在 OpenCV 中播放 AVI 文件【英文标题】:Playing AVI files in OpenCV 【发布时间】:2010-07-15 03:05:47 【问题描述】:

我似乎无法使用 OpenCV 播放我的 avi 文件。我在 Mac 上,文件与 Quicktime 和 VLC 播放器一起使用。我曾尝试使用 mencoder 将其转换为 i420,但仍未成功。没有出现错误消息,似乎程序自动关闭,我不知道如何调试它。

int main(int argc, char* argv[]) 

    cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );
    CvCapture* capture = cvCreateFileCapture( argv[1] );
    IplImage* frame;
    while(1) 
        frame = cvQueryFrame( capture );
        if( !frame ) break;
        cvShowImage( "Example2", frame );
        char c = cvWaitKey(33);
        if( c == 27 ) break;
    
    cvReleaseCapture( &capture );
    cvDestroyWindow( "Example2" );

【问题讨论】:

当您在调试器中单步执行它时,它在哪里中止? 它什么也没说。它只是正常退出。 您确定作为命令行参数提供的文件名正确吗?尝试添加检查以确保文件确实存在。如果不是,则产生错误。 我会加一张支票看看。谢谢! 【参考方案1】:

好吧,由于您的代码缺少错误检查,因此 cvCreateFileCapture() 可能存在问题,直到您检查函数的返回时您才会知道。

无论如何,您应该在此处删除或添加此语句的调试:

if( !frame ) break;

因为如果在检索文件的第一帧时出现问题,您的应用程序会简单地放弃并静默退出,给您“什么都没有发生”的感觉。

将其更改为:

if (!frame)  printf("Uow, huge fail!\n"); break;

但最重要的是:你为什么不使用 cvCaptureFromAVI() ? 看看这个:http://nashruddin.com/How_to_Play_AVI_Files_with_OpenCV

【讨论】:

我也尝试过这种方法,但我肯定会把调试信息放进去看看。谢谢! 我遇到了同样的问题。未正确检索第一帧。但是,我使用教科书提供的test.avi和tree.avi文件进行测试。这里有什么问题? 我不知道@Kalla。我得看看你的源代码。很多事情可能是错误的。问一个问题,然后用我的名字发表评论,这样我就可以关注你了。

以上是关于OpenCV中如何播放avi文件的音频的主要内容,如果未能解决你的问题,请参考以下文章

opencv 提取avi视频中的帧,逐帧播放

openCV1.0 播放AVI视频并实现进度条

opencv视频播放不了的问题是如何解决的?播放时一闪而过。

如何在 Java 中使用 openCV 的 VideoCapture 方法打开和处理 .mpeg 或 .avi 等视频文件

学习OpenCV(中文版)的作品目录

在 OpenCV 中编写 AVI 文件