C:打开视频文件最简单的图书是什么?

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

我试图使用Direct Show与SampleGrabber过滤器(使用这个示例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链接似乎不工作(see the bug)

目前这些是Win32平台上最受欢迎的视频框架:

> Windows视频:来自Win95的老Windows框架,但仍然被广泛使用,因为它使用起来非常简单。不幸的是,它只支持已经安装了正确的VFW编解码器的AVI文件。
> DirectShow:标准的WinXP框架,它可以基本上加载所有可以使用Windows Media Player播放的格式。相当难以使​​用
> Ffmpeg:更为精确的是与Ffmpeg开源多媒体实用程序一起提供的libavcodec和libavformat。它是非常强大的,可以读取很多格式(几乎所有你可以玩与VLC),即使你没有安装在系统上的编解码器。使用起来相当复杂,但您始终可以受到随附的ffplay代码或开源软件中的其他实现的启发。无论如何,我认为使用起来比DS要容易得多(快得多)。它需要在Windows上由MinGW接受,但所有步骤都非常好地解释了here(在这一刻,链接关闭,希望不会死)。
> QuickTime:苹果框架不是Windows平台的最佳解决方案,因为它需要安装QuickTime应用程序,并且每种格式都有适合的QuickTime编解码器;它不支持许多格式,但它在专业领域很常见(所以有些编解码器实际上只适用于QuickTime)。不应该太难实施。
> Gstreamer:最新的开源框架。我不太了解它,我想它会覆盖一些其他系统(但我不确定)。

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

http://stackoverflow.com/questions/37956/c-whats-the-easiest-library-to-open-video-file

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:C:打开视频文件最简单的图书是什么?