IPTV播放器客户端与服务端模块设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IPTV播放器客户端与服务端模块设计

IPTV播放器客户端与服务端模块设计   摘 要:在IPTV播放器的开发过程中,一般用客户端、服务器端架构来实现。本文主要对IPTV播放器客户端和服务器端模块进行了分析和设计,为IPTV客户端和服务器端开发提供了参考。   关键词:客户端;服务器端;IPTV   中图分类号:TP391 文献标识码:A   1 引言(Introduction)   IPTV是一种利用数据网络进行音视频数据传输的新型媒体技术。IPTV相比模拟电视具有良好的互动性,用户可以根据自己的兴趣进行内容选择。随着网络技术的发展,IPTV势必会成为未来家庭中的一种重要的业务形态。本文主要研究IPTV客户端和服务器端模块的设计。   2 客户端模块设计(Client-side module design)   播放器客户端模块主要完成如下功能:   (1)提供与播放相关的API供播放器应用层模块调用,比如播放、暂停、跳转等。   (2)封装来自播放器应用层模块的命令并以IPC的方式发送至播放器服务端模块。   (3)接收来自播放器服务端模块的通知,并通知给播放器应用层模块。   播放器在播放音视频时,同一时刻播放音视频的个数主要受制于嵌入式设备上的解码器个数(软件解码和硬件解码)。一般情况下,嵌入式设备上都会有且只有一个硬解码器存在,且为独占式的,即有一个音视频在基于硬件解码正在播放时,另外一个音视频是无法基于硬件解码器播放的[1]。   但是,在设计播放器架构时我们却可以做到预留添加软件解码器接口,以便未来应对多路音视频同时播放的需求。而且,播放器应该可以做到同时支持几个实例(相当于多个player)在运行,比如在播放本地视频时,一个播放器实例正在播放用户选中的视频,此刻应该允许另外一个播放器实例负责获取本地文件夹下的其他视频的源文件信息(编码信息、播放时长、视频宽高、缩略图等),这样在退出正在播放的视频时,用户可以快速地预览到其他视频的源文件信息,让用户感觉速度很快,体验很好[2]。   结合上述考虑,客户端设计如图1所示。IMediaPlayer为MediaPlayerClient和服务端RealPlayer的共同接口;MediaPlayerClient为播放器暴露给应用层的与播放相关的接口;CmdWrapper用于打包来自应用层的与播放相关的命令;CmdSender用于向播放器服务端发送来自客户端的命令;EventQueue用于接受来自服务端的通知事件;PollThread用于轮询EventQueue,并将每个Event派发给应用层。   3 服务端模块设计(Server-side module design)   播放器服务端模块主要完成如下功能:   (1)接收来自播放器客户端模块的命令,并进行播放相关处理。   (2)将播放器的相关播放状态通知给播放器客户端模块。   (3)负责数据源获取模块、音视频分离模块、音频同步模块和音视频输出模块的调度和管理。   (4)维护播放器的播放状态机。   播放器服务端的主要设计类图如图2所示。IMediaPlayer为MediaPlayerClient和服务端RealPlayer的共同接口;MediaPlayerServer为播放器服务端的代理接口,充当播放器服务端对外门户,来自客户端的命令都必须经过其转手派发给相应的某个RealPlayer实例,其内部保存一个RealPlaye实例链表;RealPlayer为播放器服务端核心管理类,与MediaPlayerClient一一对应,负责处理来自客户端的命令、维护播放器状态器切换、将播放器的状态以Event的方式通知给播放器服务端,同时,也负责MediaSource、MediaDemux、DecoderBase和Render之间的调度;CmdQueue负责接收来自客户端的命令;PollThread负责轮询CmdQueue并将命令派发给RealPlayer进行处理;EventWrapper负责打包服务端通知给客户端的Event;EventSender负责将Event发送给客户端;DecoderBase为解码器基类,HardewareDecoder为继承自DecoderBase的硬解码类,未来若是需要支持多路视频播放的话,只需从DecoderBase派生一个类,并实现相关接口函数即可;MediaDemux为所有媒体格式分离器类的基类;MediaSource为所有协议(网络或本地)的媒体源获取类的基类;Render负责对解码器解码完成后的音频帧和视频帧进行渲染输出。DecoderBase的某个派生类、MediaDemux的某个派生类、MediaSource的某个派生类和Render皆为MediaPlayerServer的成员变量

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档