法律状态公告日
法律状态信息
法律状态
2017-02-22
未缴年费专利权终止 IPC(主分类):H04N21/434 授权公告日:20121212 终止日期:20160104 申请日:20100104
专利权的终止
2012-12-12
授权
授权
2010-10-27
实质审查的生效 IPC(主分类):H04L29/08 申请日:20100104
实质审查的生效
2010-09-08
公开
公开
技术领域
本发明属于网络多媒体技术领域,特别是一种基于DM6446的嵌入式P2P流媒体直播系统实现方法。
背景技术
随着计算机网络技术的发展,流媒体已成为音频、视频等多媒体文件流行的分发方式。流媒体与常规多媒体的不同主要在于,流媒体可以边下载边播放。流媒体直播系统可以广泛地应用于视频会议、远程培训、广播电视等领域。但是对于这些拥有大规模潜在用户的领域,传统C/S(客户端/服务器)架构的流媒体直播系统对服务器性能和网络带宽要求很高,因而服务器的处理性能和网络带宽会成为整个系统扩展的瓶颈。基于P2P(peer to peer)技术的流媒体直播系统应运而生。P2P流媒体直播系统具有非中心化、可扩展性、健壮性等特点,可以将服务器的压力(视频流化处理、网络分发传输等)向客户端转移,可以充分利用客户端的网络资源和存储资源。
但是,目前流媒体直播系统的客户端主要由PC(通用计算机)来承担,而嵌入式多媒体终端(如机顶盒、PDA、手机等)日益受到用户的青睐。基于嵌入式平台的P2P流媒体直播系统已经成为一种发展趋势。将在现有PC上运行的P2P软件直接移植到嵌入式平台,存在与嵌入式平台兼容性差、可移植性低、开发周期长、成本高等缺点。
发明内容
本发明的目的是为克服现有技术的缺陷,提供一种基于TI的达芬奇平台DM6446的P2P流媒体直播系统实现方法,具有模块化设计、可移植性高、开发周期短等优点。
为实现上述目的,本发明采用如下技术方案:
一种基于DM6446的P2P流媒体直播系统,它由若干个通过网络连接在一起的达芬奇数字平台组成,各达芬奇数字平台采用ARM+DSP双核架构,ARM模块作为通用处理器运行主程序,DSP模块作为协处理器负责音频和视频的解码;其中,ARM模块包含P2P引擎模块、播放器模块、UI模块和控制模块,P2P引擎模块与以太网连接,负责从网络中获取需要的音视频数据,播放器模块负责播放从P2P引擎模块获取的数据,UI模块负责为用户提供良好的界面,控制模块与UI模块、播放器模块和P2P模块连接,配合UI模块负责控制各个模块的运行状态并响应用户的遥控器按键操作;播放器模块分别与显示器和音频设备连接;UI模块与显示器连接。
所述P2P引擎模块根据用户的需求,连接系统中的Tracker,获取相应节目的较好的节点列表,然后连接已知节点,如连接的节点数目不够,启动节点寻找算法寻找新的节点;与已连接的节点交互数据;周期性的向Tracker和已连接的节点报告自己的状态;周期性的检测已连接节点的状态并给其打分,断开分数最低的节点,并与新的邻居节点建立连接。
所述播放器模块从P2P引擎模块获取音视频数据,将获得的音视频混合数据解复用成音频数据和视频数据,将已分离的音视频数据分别送到DSP端让其解码,实现音视频的播放。
所述UI模块为基于Qt4的UI模块,它显示从控制模块获取的节目列表,并周期更新,或者用户主动更新;根据节目类别分类显示,并更改节目的分类依据;显示节目的受欢迎程度,并排序显示;显示节目的网络状态,并排序显示。
所述控制模块控制P2P引擎模块、播放器模块和UI模块的状态,处理各个模块的请求,实现模块间的相互通信,响应用户的遥控器请求,执行相应的命令,更新相应的UI模块界面。
一种基于DM6446的P2P流媒体直播系统的工作方法,它的步骤为:
1)控制模块首先启动,初始化各个模块需要的环境;
2)然后启动P2P模块,P2P模块连接Tracker服务器,获取最新的节目列表;
3)控制模块将获取的节目列表作为参数启动UI模块,UI模块在显示器上绘制用户界面,同时控制模块安装遥控器的各个按键的处理函数;此时,系统接受用户的按键交互;
4)用户按键时,控制模块处理按键请求,并产生相应的信号发送给UI模块,UI模块根据信号更新,当用户选择想观看的节目,按键后,控制模块处理按键请求,发送信号给UI模块,UI模块将想观看的节目参数传给控制模块,控制模块再将节目参数传给P2P模块,同时启动播放器模块;
5)播放器模块通过socket线程通信的方式获取P2P模块的音视频数据,处理后通知控制模块,控制模块通知UI模块显示媒体的播放;
6)当用户切换频道时,控制模块将新的节目参数传递给P2P模块,P2P模块主动断开与现有节点的连接,清空节点列表,告诉Tracker自己已经切换频道,同时向Tracker请求新的节目的节点列表,然后返回步骤3)。
所述步骤3)中,UI模块启动后,周期性的更新节目列表,更新节目列表的请求通过控制模块转发给P2P模块,P2P模块将更新后的节目列表通过控制模块再转发给UI模块,UI模块根据需要自己更新UI界面。
所述步骤2)中,P2P模块向Tracker请求相应节目的节点列表,Tracker应答并传送给P2P模块节点列表。P2P模块测试已知节点的的RTT,连接RTT相应较小的4个节点。之后,P2P模块与已连接的节点交互数据,同时周期性的执行以下动作:告诉Tracker自己的状态;告诉已连接节点自己的状态;评测已连接的节点,断开评价最低的一个节点并重新选择节点连接;与已连接的用户交互更新节点链表。
所述步骤5)中,播放器模块获取的音视频是混合的TS格式,播放器模块首先解复用音视频,然后通过调用DMAI的接口,分别将编码的音频数据MP3和视频数据H.264传送给DSP端的解码器,通过调用DMAI库接口,控制/dev/dsp播放解码后的音频数据,控制/dev/fb/1播放解码后的视频数据。
本发明引入跨平台的图像库Qt4,用以开发良好的UI界面;引入TI的DMAI(DavinciMultimedia Application Interface)库,用于提供音视频的解码接口和硬件设备接口;引入Gstreamer多媒体框架,用于播放器的实现。
本发明设计了一种基于DM6446的P2P流媒体直播系统实现方案。系统基于TI公司的达芬奇数字平台TMS320DM6446开发,达芬奇平台采用ARM+DSP双核架构,ARM端作为通用处理器运行主要的程序,DSP作为协处理器负责音频和视频的解码。本系统包含P2P引擎模块、播放器模块、用户界面(UI)模块和控制模块。P2P引擎模块负责从网络中获取需要的音视频数据,播放器模块负责播放从P2P引擎模块获取的数据,UI模块负责为用户提供良好的界面,控制模块配合UI模块负责控制各个模块的运行状态并响应用户的按键操作。
P2P引擎模块负责从P2P网络中获取需要的音频和视频数据,主要部分包含:
(1)根据用户的需求,连接系统中的Tracker,并按照以下策略来获取相应节目的较好的节点列表:较大比例(80%)的较近的IP地址(从高位到低位匹配较多),较近的IP地址节点之间拥有较好的带宽和RTT(Round-trip Time)值的几率较高;较小比例(20%)的随机的IP地址,这些地址用以保证节点的多态性
(2)检测节点状态并连接已知节点,如连接的节点数目不够,启动节点寻找算法寻找新的节点
a从已连接的节点请求节点列表
b如步骤a获取的节点仍不够,等待一段时间,请求Tracker
c若步骤b仍不够,等待一段时间,转到步骤a
(3)与已连接的节点交互数据
(4)周期性的向Tracker和已连接的节点报告自己的状态
(5)周期性的检测已连接节点的状态并给其打分(计算节点间的RTT,RTT的值较小的为较好的节点,可以获得较高的分数),断开分数最低的一个节点,并重新连接一个节点。
播放器模块基于开源的Gstreamer多媒体框架,Gstreamer是一个跨平台的基于管道的多媒体框架,采用Gstreamer使本系统具有更好的可移植性。播放器模块完成的主要功能包括:
(1)采用线程通信的网络通信(socket通信)的方式,从P2P引擎模块获取视音频数据
(2)将获得的音视频混合数据(TS封装)解复用成音频数据(MP3编码)和视频数据(H.264编码)
(3)调用DMAI接口,将已分离的音视频分别送到DSP端,控制DSP端的解码器,解码音视频数据,其中,视频被解码成YUV数据。
(4)通过DMAI库提供的接口,控制硬件处理已经解码的音频数据和视频数据,实现音视频的播放
用户界面(UI)模块,包含:
(1)基于Qt设计UI模块
(2)显示从控制模块获取的节目列表,并周期更新,或者用户主动更新
●UI请求控制模块
●控制模块将请求传递至P2P模块
●P2P模块将节目列表传递给控制模块
●控制模块将节目列表传递给UI模块
(3)根据节目类别分类显示,可更改节目的分类依据。
(4)显示节目的受欢迎程度,并可排序显示
(5)显示节目的网络状态,并可排序显示
控制模块负责整个程序的运行状态,完成的主要功能有:
(1)控制P2P引擎模块、播放器模块和用户界面(UI)模块运行状态
(2)控制整个程序的流程
(3)处理各个模块的请求,实现模块间的相互通信
(4)相应用户的遥控器请求,执行相应的命令,将产生的信号发送给UI模块,更新相应的UI界面
本发明的有益效果是:本发明基于达芬奇DM6446平台上设计一种嵌入式P2P流媒体直播系统的实现方法,可充分利用闲置的用户资源,有效地降低服务器压力,提高可容纳用户的数量。本方法采用模块化设计,模块之间分工明确,耦合性低,从而具有较好的可维护性和可扩展性,可以有效地缩短开发周期,降低开发成本。本方法虽然基于DM6446平台设计,但可提供良好的可移植性,根据各平台的不同修改相关模块(如若解码器不同,可只修改播放器模块)即可方便地移植到其他平台。
附图说明
图1基于DM6446的P2P流媒体直播系统终端的功能框图;
图2系统运行流程框图;
图3P2P流媒体网络拓扑图;
图4播放节目时主要模块时序图。
具体实施方式
下面结合附图与实施例对本发明做进一步说明。
本发明设计的系统如图3所示,它由若干个通过网络连接在一起的达芬奇数字平台组成,各达芬奇数字平台采用ARM+DSP双核架构,如图1所示,ARM模块1作为通用处理器运行主程序,DSP模块2作为协处理器负责音频和视频的解码;其中,ARM模块1包含P2P引擎模块8、播放器模块6、UI模块5和控制模块7,P2P引擎模块8负责从网络中获取需要的音视频数据,播放器模块6负责播放从P2P引擎模块8获取的数据,UI模块5负责为用户提供良好的界面,控制模块7与UI模块5、播放器模块6和P2P模块8连接,配合UI模块5负责控制各个模块的运行状态并响应用户的遥控器按键操作;播放器模块6分别与显示器3和音频设备4连接;UI模块5与显示器3连接。
P2P引擎模块8根据用户的需求,连接系统中的Tracker,获取相应节目的较好的节点列表,然后连接已知节点,如连接的节点数目不够,启动节点寻找算法寻找新的节点;与已连接的节点交互数据;周期性的向Tracker和已连接的节点报告自己的状态;周期性的检测已连接节点的状态并给其打分,断开分数最低的节点,并与新的邻居节点建立连接。
播放器模块6从P2P引擎模块8获取音视频数据,将获得的音视频混合数据解复用成音频数据和视频数据,将已分离的音视频数据分别送到DSP模块2让其解码,实现音视频的播放。
UI模块5为基于Qt4的UI模块,它显示从控制模块7获取的节目列表,并周期更新,或者用户主动更新;根据节目类别分类显示,并更改节目的分类依据;显示节目的受欢迎程度,并排序显示;显示节目的网络状态,并排序显示。
控制模块7控制P2P引擎模块8、播放器模块6和UI模块5的状态,处理各个模块的请求,实现模块间的相互通信,响应用户的遥控器请求,执行相应的命令,更新相应的UI模块界面。
下面介绍本系统运行的流程,如图2所示。
控制模块7首先启动,初始化各个模块需要的环境。然后启动P2P引擎模块8(整个P2P网络的拓扑结构如图4所示),P2P引擎模块8连接Tracker服务器,获取最新的节目列表。控制模块7将获取的节目列表作为参数启动UI模块5,UI模块5在显示器3上绘制用户界面,同时控制模块7安装遥控器的各个按键的处理函数。这时,系统可以接受用户的按键交互。
用户按键时,控制模块7处理按键请求,并产生相应的信号发送给UI模块5,UI模块5根据信号更新,当用户选择想观看的节目,按键后,流程如图4所示,控制模块5处理按键请求,发送信号给UI模块5,UI模块5将想观看的节目参数传给控制模块7,控制模块7再将节目参数传给P2P引擎模块8,同时启动播放器模块6。
P2P引擎模块8向Tracker请求相应节目的节点列表,Tracker应答并传送给P2P引擎模块8节点列表。P2P引擎模块8测试已知节点的的RTT,连接RTT相应较小的4个节点。之后,P2P引擎模块8与已连接的节点交互数据,同时周期性的执行以下动作:告诉Tracker自己的状态;告诉已连接节点自己的状态;评测已连接的节点,断开评价最低的一个节点并重新选择节点连接;与已连接的用户交互更新节点链表。
播放器模块6通过socket线程通信的方式获取P2P引擎模块的音视频数据,这时音视频是混合的(TS格式),播放器模块6首先解复用音视频,然后通过调用DMAI接口9,分别将编码的音频数据(MP3)和视频数据(H.264)传送给DSP解码器10,通过调用DMAI库接口,控制/dev/dsp播放解码后的音频数据,控制/dev/fb/1播放解码后的视频数据。当播放器模块6可以播放时,通知控制模块7,控制模块7通知UI模块5显示媒体的播放。
UI模块5启动后,周期性的更新节目列表。更新节目列表的请求通过控制模块7转发给P2P引擎模块8,P2P引擎模块8将更新后的节目列表通过控制模块7再转发给UI模块5,UI模块5根据需要自己更新UI界面。当用户切换频道时,控制模块7将新的节目参数传递给P2P引擎模块8,P2P引擎模块8主动断开与现有节点的连接,清空节点列表,告诉Tracker自己已经切换频道,同时向Tracker请求新的节目的节点列表,此后的步骤与上述节目播放相同。
机译: 基于CZT探测器阵列的铀富集嵌入式系统及其工作方法
机译: 一种基于特殊特权的嵌入式SIM中的MNO变化方法,嵌入式SIM及其记录介质
机译: 一种基于特殊特权的嵌入式SIM中的MNO变化方法,嵌入式SIM及其记录介质