我想为我的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
可能有人可以推荐我一些东西吗? (对于胜利)
答案 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
的更多信息