从视频文件的简单帧抓取器

时间:2011-11-09 15:29:47

标签: c++ audio video decoding libs

我想为我的C ++项目找到一个简单的lib,它可以启动视频和音频解码的线程,我可以抓住一些帧吗? 我试着在示例代码中解释我对lib API和行为的期望:

player = new Player("video.avi");
player->Play();   // lib start video decoding into internal hidden buffer 
                  // and audio decoder start play sound from video file
.....
buffer = new ....
player->SyncCopyCurrentFrameIntoBuffer(buffer);   // copy last decoded frame into buffer
....
play->Pause();    // lib freeze video and audio decoding
可能有人可以推荐我一些东西吗? (对于胜利)

2 个答案:

答案 0 :(得分:1)

DirectShow是一种MS技术,允许您创建由一堆过滤器(如源,编码器,解码器,颜色转换器,渲染器等)组成的媒体管道。在DirectShow中,您可以创建一个类似于以下内容的图表

Video source -> Sample grabber filter -> Video renderer

然后您可以播放并暂停图表。 sample grabber过滤器允许您配置在每个样本通过媒体管道时触发的回调。

请注意,DirectShow不是最容易学习的框架。但是,一旦掌握了它,您想要完成的任务就很容易实现。 DirectShow需要熟悉C ++和一些COM(在MSDN文档中有解释)。主要支持是通过MSDN文档,这是非常广泛的MS DirectShow论坛。

答案 1 :(得分:0)

也许您想看一下libavcodec(或更一般地说,ffmpeg包)?有关http://ffmpeg.org

的更多信息