没有合适的资源?快使用搜索试试~ 我知道了~
首页基于Directshow的H.264流媒体播放器设计
资源详情
资源推荐
基于基于Directshow的的H..264流媒体播放器设计流媒体播放器设计
摘要:基于目前最新的视频压缩编解码标准H.264,采用Directshow应用框架,设计了网络流媒体播放器系
统;Directshow是微软提供的基于windows平台的优秀的流媒体应用架构,H.264标准具有高压缩比和优良的
网络亲和性,
摘要:基于目前最新的视频压缩编解码标准
关键词:Directshow;H.264;Filter;流媒体
0 引言
Directshow应用框架完成了流媒体处理的底层工作,使得编程者无需关心数据如何输入,以及处理完后如何输出,而只需
关心如何对输入数据进行处理。H.264视频编解码标准具有高压缩比和优良的网络亲和性,被普遍认为是最有影响力的流媒
体视频压缩标准。将Direct-show和H.264两种相结合的流媒体播放器无疑将具有非常优秀的性能。
1 Directshow技术和H.264视频压缩标准简介
Directshow是微软公司提供的一套流媒体开发软件包,为在windows平台上处理各种格式的媒体文件的回放、音视频采集的
高性能要求的多媒体应用,提供了完整的解决方案。
Directshow是一套完全基于COM的应用系统,该系统位于应用层中,它使用Filter Graph的模型来管理整个数据流的处理过
程;参与数据处理的各个功能模块叫Filter;各个Filter在Filter Graph中按照一定的顺序连接成一条“流水线”协同工作。Filter是
一个COM组件,其功能可以由用户自行实现,DirectShow SDK也为用户提供了一些标准的Filter供用户使用。各个Filter在
Filter Graph中按一定顺序通过Pin互相连接起来,Pin也是一个COM对象。
H.264是由ITU-T和ISO/IEC的联合开发组共同开发的最新国际视频编码标准。H.264/AVC视频编码标准在编码质量和
压缩比上比原有的视频编码标准都有了明显的提高。在相同的视觉感知质量上,编码效率比H.263,MPEG-2和MPEG-4提
高了50%左右。H.264不仅具有优异的压缩性能,而且具有良好的网络亲和性。因此,H.264被普遍认为是最有影响力的流
媒体视频压缩标准。
2 系统设计框架
本系统基于Direotshow应用框架和H.264视频压缩标准,实现了从网络接收流媒体数据,并在客户端实时播放的功能。流
媒体文件是采用H.264编码的AVI文件,由于directshow提供了AVI Splitter Filter、Audio Decoder和标准的Video/Audio
Renderer,因此,本系统只需设计自定义的网络源Filter、H.264解码Filter。
多媒体流式传输实际上牵涉到两个方面的技术。其一就是服务器与客户端的通信技术,包括多媒体数据的传输、命令控制
等;其二就是客户端对接收到的多媒体流实时解码后播放的技术。显然,网络通信可以使用windows socket技术,多媒体流的
解码播放可以使用direct-show技术。本文采用direetshow应用框架,设计了网络源filter和h.264解码filter,并通过Filter
Graph构建了流媒体播放器。
播放本地基于H.264编码的AVI文件的Filter Graph如图1。只需将本地File Source Filter替换为网络源Filter,将CoreAVC
Video De-coder替换为h.264解码Filter,即可实现网络H.264视频播放器。
3 系统的设计与实现
3.1 Filter设计流程
Filter的编码实现包括Filter的注册信息、Filter上的框架函数实现、逻辑控制类实现、自定义接口实现、属性页实现、产权保
护等。
首先,要对Filter所要完成的功能和它在Filter Graph中的位置进行分析,以确定filter模型,选择一个合适的基类;然后,再定
义输入输出PIN以及自定义接口,注册Filter信息;最后实现基类的全部纯虚函数和自定义接口函数,并重写基类的相关函数以
定制filter功能。
3.2 网络源Filter的设计
源Filter主要功能是接收服务器发来的流媒体数据,并提供给Filter Graph中其它Filter使用。
由于directshow自带的AVI splitter工作于拉模式,故该源Filter也工作于拉模式。
本源Filter采用双缓冲循环队列技术来实现数据的接收和向下一级Filter传递数据。采用该技术有如下理由:
(1)在Source Filter与SpliRer连接的过程中,会从Source Filter中读取一部分数据,以获得数据的格式描述,否则Filter
Graph无法完成连接。源Filter与Splitter Filter进行连接前,应启动一个等待线程,当Source Filter的数据缓存预先接收到足够
的数据后,再构建完整的Filter Graph。
(2)当完整的Filter Graph构建完成,并且处于运行状态后,Source Filter必须动态地接收数据,并持续地把新数据提供给
Splitter Filter,双缓冲循环队列既充分利用内存空间,又能为Splitter Filter提供稳定的数据源。
(3)缓冲队列可以稳定码率,有效减小网络延时、阻塞和抖动的影响。
源Filter的工作过程如下:建立一个循环缓冲队列,队列尾指针用于缓冲从网络接收的数据,队列头指针供Splitter读取数
据,进行音视频分离,并传给下一级Decoder处理;当Socket接收到网络数据后,将数据插入队列尾部,并使尾指针后移;当
Splitter需要读取数据时,从队列头读取数据,并使头指针后移。
流媒体传输采用客户端/服务器的架构,服务器与客户端之间还有一个Socket通信协议问题,由于流媒体是连续的,它的
同步点不能随意选择,因此,为了传送流媒体数据,必须使用面向连接的可靠的传输协议(TCP)。客户端与服务器端的控制与
反馈消息,则可以使用(UDP)来传输。服务器端首先创建一个侦听Socket,侦听来自客户端的连接请求。一旦侦听到客户端的
weixin_38584058
- 粉丝: 5
- 资源: 971
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功