DirectShow 播放mp4编码 视频

来源:互联网 发布:网络机顶盒怎么装 编辑:程序博客网 时间:2024/06/10 02:25

1、初始化 com, 调用CoInitialize(NULL)

2、初始化GraphBuilder, 调用CoCreateInstance。  GraphBuilder是DirectShow中视频的管理类。 非常重要。

3、枚举需要的接口,调用QueryInterface, 常用的有IID_IMediaControl、IID_IVideoWindow等。

4、创建自己需要的Filter(若是播放AVI,则可以略过这一步), 这一步需要分别创建:

                  分离器: 从磁盘中读取文件,并将视频文件内容分为音频流和视频流。

                  视频解码器: 将视频流解码为一帧一帧的画面,之后传给视频渲染器。

                  音频解码器: 将音频流解码为音频设备可播放的形式,之后传给音频播放设备。

                  视频渲染器: 负责渲染视频画面。

                  音频渲染器:负责播放声音。

      然后,需要将各filter的pin链接起来。形成一个通畅的视频流。之后,输入文件后,DirectShow就会按照事先设定好的线路运转。

5、枚举IID_IFileSourceFilter接口,读取文件。 之后使用MediaControl对视频的播放进行控制。


这个过程需要,预先安装好对应的解码器和分离器。 渲染器系统提供了。 lav filter包含同时分离器和解码器。

我用的是,lav的分离器 lav splitter filter 和 ffdshow的解码器。

同时,如果希望直观的了解这个通路的建立过程,可以使用graphstudionext。

不过,如果希望看到程序的播放通路。需要将graphBuilder加入到ROT(对象活动表)中,具体过程参照MSDN。




参考博客: http://blog.csdn.net/shaqoneal/article/category/1887469

这个博客,详细的介绍了上述的过程。

0 0
原创粉丝点击