基于DLNA的多屏直播分享技术在机顶盒中的应用
2021-03-07曾令刚
曾令刚
(四川长虹网络科技有限责任公司 四川省绵阳市 621000)
数字电视机顶盒,在国家政策持续利好的大背景下,得到了空前的发展和迅速的普及,如今已经进入普通百姓家庭。数字电视以其全数字化的清晰内容呈现和丰富多彩的电视节目内容得到大众消费者的认可和喜爱。随着电视显示终端设备的高清化,数字电视解码芯片的持续迭代升级,其解码能力得到大力的提升。加之存储器件和内存器件容量的持续扩容,让数字电视也由之前的标清呈现形式迅速的搭上了向高清整体切换的快速列车。网络技术的发展,网络带宽的提高,网络视频等新媒体业务迅速进入大众的视野,慢慢的被越来越多的人群所接受和喜爱。加之智能终端(手机、平板以及电脑)的普及和推广,使得传统数字电视机顶盒面临巨大的市场冲击。基于此设计一种基于DLNA协议框架的数字电视机顶盒的直播节目分享方法,让数字电机顶盒的节目内容实现跨屏播放,丰富数字电视内容多样化呈现的同时拓展数字电视机机顶盒新的应用场景。利用智能终端的优势,实现数字电视机顶盒与智能终端间的互连互通和资源共享。
1 技术协议原理概述
1.1 DLNA规范
DLNA是一套让各种智能电子产品如何在日常生活中被广泛连接应用的规范。DLNA规范为了保证支持DLNA功能的设备彼此间能稳定可靠的互连互通,提出了所有支持DLNA功能的设备产品必须严格遵循UPnP规范且通过DLNA认证。
DLNA规范定义了数字媒体服务器、数字媒体播放器、数字媒体控制器、数字媒体渲染器以及数字媒体打印机等五种形态的类型对象,并为每种类型的对象赋予了明确的含义和功能职责。DLNA规范定义互连互通,网络协议,设备发现、控制和媒体管理、媒体传输和媒体格式等五个功能组件。其中的互连互通和网络协议组件是整个DLNA框架系统内设备互连互通的网络基础,规定了所接入网络的类型和协议:802.3.i/u和802.11a/b/g/n以及所使用的网络层协议:IPv4和IPv6。其中的设备的发现、控制和媒体管理组件是整个DLNA规范框架中的骨干和核心,基于此实现了网络环境中各种智能设备的如何被相互发现、如何提供服务和如何相互控制等核心功能,其实现以UPnP协议标准为基础。DLNA规范是以定义一种通用的行业规范为初衷,让整个规范的具体实现富有弹性而不失去准则,是因为该规范准确的定义每个功能组件的实现要求和技术方案。
1.2 UPnP协议
UPnP是一种通用即插即用技术协议,是一种分布式的、开放的网络体系结构,利用TCP/IP和Web技术来实现无缝网络链接,以及在联网设备之间进行控制和数据传输。在UPnP体系架构中没有设备驱动程序,取而代之的是TCP/IP、UDP以及HTTP等普通网络协议,让任何可以连接网络的设备都可以使用它。
完整的UPnP设备体系架构由设备寻址、设备发现、设备描述、设备控制、通用事件通知以及基于HTML的设备展示等几部分组成。其中TCP/IP协议是整个系统的基础,使用DHCP完成UPnP设备的寻址,使用IP进行数据的发送与接收,使用TCP完成可靠信息的传送。简单服务发现协议(SSDP)内建在HTTPU/HTTPMU等HTTP变种协议里面,使用UDP来承载,并可用于组播形式的通信。其定义如何发现网络上的UPnP服务以及UPnP设备如何向网络发布自己所能提供的服务。简单对象访问协议(SOAP)定义如何使用可扩展标记语言(XML)与HTTP来执行远程过程调用,每个UPnP控制请求以及响应都是一个SOAP消息。通用事件通知架构协议(GENA)定义在控制点想要监听设备的某个服务状态变量的状况时,控制点如何传送订阅信息并如何接收这些信息。
UPnP设备在网络中要能被正常使用,必须要拥有自己的IP地址。UPnP设备的工作流程包括寻址、发现、描述、控制、事件和展示等六个步骤。
(1)寻址。寻址的过程就是设备获取IP地址的过程,设备首次加入网络通常使用DHCP服务获取并设置IP地址。这一步是所有工作流程的基石。
(2)发现。通过SSDP协议完成设备的发现。当新设备加入网络时,其通过组播方式告知网络上的控制点它能提供的服务,使用保留的组播地址239.255.255.250:1900。
(3)描述。描述包括设备描述和服务描述,以XML语法形式表示。控制点发现一个设备后,控制点为了更多地了解设备及其功能或者与设备交互,控制点必须从发现消息中得到设备提供的URL,并通过URL得到更详细的设备描述和功能描述。
(4)控制。控制点可以要求这些服务调用操作并接收操作结果的响应,一般是由控制点向设备服务的控制URL地址发送一个适当的控制消息。而服务则会对此动作出响应,返回相关的结果或错误。同时控制点也可以轮询服务的状态。
(5)事件。UPnP服务描述包括服务响应的操作列表和运行时模拟服务状态的变量列表。当这些变量被事件触发而改变时,服务将会发布更新,控制点被允许订阅该消息后就会收到设备事件的状态更新。
(6)展示。如果设备拥有用于表示的URL,控制点就能通过URL得到页面并装载到浏览器中,用户可以控制设备或者浏览设备状态。
2 多屏直播分享系统实现
以C/S模型为基础,DLNA服务进程存在于机顶盒中等待移动终端设备的连接请求。移动终端设备作为客户端向DLNA服务器进程发起连接请求并建立DLNA连接,获取机顶盒当前的IP地址以及当前的电视节目列表,解析并组装成包含节目信息的URL播放连接地址待用。客户端再次向机顶盒服务端发起播放指定节目的请求,经进程间通信模块(socket)传递URL播放连接地址,通过URL播放连接地址访问HTTP数据流服务器,开启指定节目的音视频数据读取线程并打开IJKplayer播放器,之后等待从HTTP数据流服务器获取的音视频流的PES数据量达到启播阈值。数据处理模块获取URL播放连接地址后开启直播节目内容的过滤解析线程,将过滤后的音视频数据流PES数据写入预定的共享内存循环BUFFER中供客户端使用,同时将对应节目音视频流的编码格式回传给客户端。客户端在获取音视频流的编码格式后更新IJKplayer播放器相关参数,读音视频数据线程等待从HTTP数据流服务器获取的数据量达到启播阈值后,立即开始将整块数据写入播放器缓存,并开启音视频流读数据线程。
如图1所示,多屏直播分享系统由移动客户端和机顶盒服务端两部分组成,它们之间通过DLNA和socket方式实现互连和互通。移动客户端进程内包括多屏直播分享UI模块,播放器模块以及读数据流控制模块。机顶盒服务端进程包括DLNA服务进程,HTTP数据流服务器模块,数据处理模块,电视节目列表模块以及写数据控制模块。各个功能模块的具体实现如下:
图1:基于DLNA的多屏直播分享架构图
多屏直播分享UI模块,负责直播分享应用内容的呈现和音视频播放,并与用户交付诸如DLNA连接、直播节目的浏览与选择、播放和暂停等功能命令。
播放器模块,以HTTP数据流服务器的输出为来源,集成IJKplayer播放器,负责分享后的直播节目的播放。
读数据控制模块,负责从HTTP数据流服务器读取直播节目的音视频数据,读取数据的同时写入相应节目数据到播放器模块。读数据控制等待从HTTP数据流服务器获取的音视频流的PES数据量达到启播阈值后开始往播放器注入数据。启播阈值的选择会影响启播放的快慢和启播后的流畅度。
DLNA服务进程,以PlatinumKit为基础进行实现,以数字媒体服务器类型对象的形式随机顶盒上电启动后开始运行并等待其他DLNA设备的访问接入和控制。
HTTP数据流服务器模块,以数据控制模块的数据输出为来源,依据客户端的请求,读取共享内存循环BUFFER中指定节目的音视频数据以HTTP协议为载体下发到客户端的播放器缓存中,供播放器播放使用。基于多路复用、系统开销以及解析出错概率的考虑,使用HTTP2.0版本实现HTTP数据流服务器。
数据控制模块,以HTTP数据流服务器为输出目标,负责将客户端请求的指定节目的音视频数据进行过滤处理。数据过滤使用机顶盒本身芯片方案提供的以音视频PID为过滤条件的PES数据过滤功能,以单独的机顶盒数据前端demux数据通路为数据输入来源,将过滤后的音频数据和视频数据以共享内存循环BUFFER的方式注入到HTTP数据流服务器模块。多路数据管理方面,以电视节目音视频PID为索引,动态处理的方式为每一路音视频数据建立独立的数据过滤和存储通道。考虑到标清节目和高清节目数据码率的差异,共享内存选取10MB字节的循环BUFFER。该系统实现方案已实现多个节目(5个)音视频数据的过滤处理,以满足家庭多成员同时观看不同电视节目的需求。
电视节目列表模块,负责将机顶盒获取的电视节目信息以JSON的文件形式存入某个预定的位置供客户端获取使用。同时后台实时同步机顶盒电视节目到该模块。
写数据控制模块,负责将数据处理模块过滤后的音视频PES数据注入到共存内存中供HTTP数据流服务器读取和下发使用。
3 结束语
综上所述,将DLNA技术应用于传统非Android机顶盒实现多屏分享直播高清数字节目的方法,以共享内存和socket等方式进行通信,利用DLNA技术搭建起移动终端设备与机顶盒之间的桥梁,能快速稳定的部署到机顶盒和移动终端设备上。由此可以让机顶盒电视节目内容呈现不再是仅停留在电视这块大屏上,可以让机顶盒电视节目内容“移动起来”,让机顶盒电视节目内容呈现样式更多样化。促进机顶盒产业在全球中的进一步推广部署。