当前位置:  开发笔记 > 编程语言 > 正文

C++:打开视频文件最简单的库是什么

如何解决《C++:打开视频文件最简单的库是什么》经验,为你挑选了1个好方法。

我想打开一个小视频文件并映射内存中的每个帧(以应用一些自定义过滤器).我不想处理视频编解码器,我宁愿让库为我处理.

我尝试使用SampleGrabber过滤器使用Direct Show(使用此示例http://msdn.microsoft.com/en-us/library/ms787867(VS.85).aspx),但我只设法抓住一些帧(不是每一帧!).我是视频软件编程的新手,也许我没有使用最好的库,或者我做错了.

我已经粘贴了我的一部分代码(主要是来自msdn示例的修改后的复制/粘贴),遗憾的是它没有像预期的那样抓住25个第一帧...

[...]

hr = pGrabber->SetOneShot(TRUE);
hr = pGrabber->SetBufferSamples(TRUE);

pControl->Run(); // Run the graph.
pEvent->WaitForCompletion(INFINITE, &evCode); // Wait till it's done.

// Find the required buffer size.
long cbBuffer = 0;
hr = pGrabber->GetCurrentBuffer(&cbBuffer, NULL);

for( int i = 0 ; i < 25 ; ++i )
{
    pControl->Run(); // Run the graph.
    pEvent->WaitForCompletion(INFINITE, &evCode); // Wait till it's done.

    char *pBuffer = new char[cbBuffer];
    hr = pGrabber->GetCurrentBuffer(&cbBuffer, (long*)pBuffer);

    AM_MEDIA_TYPE mt;
    hr = pGrabber->GetConnectedMediaType(&mt);
    VIDEOINFOHEADER *pVih;
    pVih = (VIDEOINFOHEADER*)mt.pbFormat;

    [...]
}

[...]

是否有人,有视频软件经验,谁可以建议我有关代码或其他更简单的库?

谢谢

编辑:Msdn链接似乎不起作用(请参阅错误)



1> martjno..:

目前,这些是Win32平台上最流行的视频框架:

    Video for Windows:旧的Windows框架来自Win95时代,但仍然被广泛使用,因为它使用起来非常简单.不幸的是,它只支持安装了正确的VFW编解码器的AVI文件.

    DirectShow:标准的WinXP框架,它基本上可以加载你可以用Windows Media Player播放的所有格式.相当难以使​​用.

    Ffmpeg:更准确地说是Favmpeg开源多媒体实用程序附带的libavcodec和libavformat.它非常强大,即使您没有在系统上安装编解码器,也可以读取很多格式(几乎所有可以用VLC播放的格式).它使用起来相当复杂,但你总能受到随附的ffplay代码或开源软件中的其他实现的启发.无论如何,我认为它比DS更容易使用(并且更快).它需要由MinGW在Windows上进行编辑,但所有步骤都在这里得到了很好的解释(此时链接已关闭,希望不会死).

    QuickTime:Apple框架不是Windows平台的最佳解决方案,因为它需要安装QuickTime应用程序以及适用于每种格式的QuickTime编解码器; 它不支持多种格式,但在专业领域很常见(所以有些编解码器实际上只适用于QuickTime).不应该太难实施.

    Gstreamer:最新的开源框架.我不太了解它,我猜它包裹了一些其他系统(但我不确定).

除了DirectShow之外,所有这些框架都已在OpenCv Highgui中作为后端实现.Win32 OpenCV的默认框架是使用VFW(因此只能打开一些AVI文件),如果你想使用其他的,你必须下载CVS而不是正式版本,并且仍然对代码进行一些黑客攻击,无论如何不是太完整了,例如FFMPEG后端不允许在流中寻找.如果您想将QuickTime与OpenCV一起使用,这可以帮助您.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有