gpt4 book ai didi

C++ : What's the easiest library to open video file

转载 作者:IT老高 更新时间:2023-10-28 21:34:08 26 4
gpt4 key购买 nike

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

我尝试使用带有 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 链接似乎不起作用(see the bug)

最佳答案

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

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

  2. DirectShow:标准的WinXP框架,它基本上可以加载你可以用Windows Media Player播放的所有格式。比较难用。

  3. Ffmpeg :更准确地说是 Ffmpeg 开源多媒体实用程序附带的 libavcodec 和 libavformat。即使您没有在系统上安装编解码器,它也非常强大并且可以读取很多格式(几乎所有您可以使用 VLC 玩的东西)。它使用起来相当复杂,但你总是可以从它附带的 ffplay 代码或开源软件中的其他实现中获得灵感。无论如何,我认为它仍然比 DS 更容易使用(而且速度更快)。 Windows下需要MinGW编译,但是所有步骤都解释的很好here (此时链接已断开,希望不要死)。

  4. QuickTime :Apple 框架不是 Windows 平台的最佳解决方案,因为它需要安装 QuickTime 应用程序以及每种格式的正确 QuickTime 编解码器;它不支持多种格式,但在专业领域中很常见(因此某些编解码器实际上仅适用于QuickTime)。实现起来应该不会太难。

  5. Gstreamer : 最新的开源框架。我对此了解不多,我猜它涵盖了其他一些系统(但我不确定)。

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

关于C++ : What's the easiest library to open video file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com