12月10日,由DVB+OTT融合创新论坛、贵州省广播电视信息网络股份有限公司主办,中广互联、贵州广电网络承办的 “第三届DVB+OTT融合创新论坛年会”在贵阳中天凯悦酒店举行。
12月10日下午的论坛由中广互联CEO曾会明主持,上海联彤网络通讯技术有限公司资深研发经理赵学庆做了题为《TVOS组件详解》的演讲,他介绍了TVOS组件实现、应用以及联彤目前的工作情况。
图为:上海联彤网络通讯技术有限公司资深研发经理赵学庆
以下为演讲实录:
各位来宾,各位领导大家下午好。
在这之前得益于陈所给大家系统详细的介绍了TVOS整个的框架,对我下面的整个的讲解可能会稍微平缓和顺利一点,我讲的题目是“细说TVOS组件层”。把我们联彤公司在整个TVOS工作组中所做的贡献来一个梳理,我希望大家通过我这次的介绍对我们的工作能有一个更细致,更明确的理解。
今天主要的内容分为两部分,一个是TVOS组件的实现,这个更偏技术一点,组件的应用,我们实现组件以后,这个组件通过什么方式来用起来,达到开发运用的便捷这样高效的方法。TVOS作为广电推的开放的,智能的电视操作系统也是广电技术的标准化和智能化的关键技术,我们希望分这两部分能够对整个的工作细节有一个完整而清晰的认识。
开始我们就简单介绍一下联彤公司,联彤公司是一家内资公司,我们主要的目标是打造跨终端,有安全保障的系统。我们在2014年1月15日中科院软件研究所在北京联合发布了具有自主知识产权的操作系统,比如在智能手机,电子书包、平板电脑,这方面我们有比较多的移动端的开发经验,我们会把我们整个针对设备上的一些心得,一些技术手段来引进到TVOS项目中,对TVOS组件层的实践贡献我们的力量,这是我们主要的在TVOS决策和定位。
主要内容可以分为以下几个方面:刚刚陈所已经有一个非常详尽和系统的介绍,我们再把它拎出来作为我们的一个开始。
1、TVOS软件架构,TVOS与生俱来的数字电视基因,TVOS组件标准化接口,分为两种,一个是应用开发来说,一个是适配来说,就是一个JAVA和WEB的应用执行环境。
我们要讲一下通过什么样的技术手段能够达到兼容安卓应用的方式,这也是我想表达的技术上的最主要的思想。这个图我就不多讲了,从软件架构图来说分为五层,应用框架层,执行环境层,组建层和内核层。
那我们做的框架是在组件层,组件层作为TVOS核心部件的最本质的模块,它对上会提供一个通用的接口,对安卓的JAVA开发也好,还是WEB也好,都是外部接口,对TVOS通过一个标准的接口。至于这个中间怎么实现的,我们的主要工作应该在左边,这边是右边,应用管理组件,还有安装组件,还有创作组件,这是系统应有的安装、卸载、运行、组件,有了这个组件以后,就可以有一个最基本的,但是有一个UI,有一个用户输入输出的根本环境。对其他的第二个组件我们可能提供一个标准接口,就是我们开发的工作。
这个就是刚刚陈总说的一句话,组件层主要是采用开源代码,主要采用C/C++的代码实现,接下来这是我要讲的主要的内容。
核心组件层作为三个,刚才已经讲过了,一个应用管理层面,一个窗口管理层面,一个高含量图片。有了这三个图片以后组成一个最基本的用户的输入输出系统,那数字电视就是对于机顶盒来说必备的组件,这个运营商的环境和硬件环境相关,大家都有一个不同的方式,本质上我们必须要提炼出两个最基本的接口,一个是EPT管理接口,后面三个我就以应用的角度来讲述一下,对于家庭互联组件,在线网关的应用环境,媒体组件还有一个云输入组件作为一个视频阵地服务和智能遥控器两个主要的用途。
在介绍我们组件为什么能够和安卓实现兼容,实际上这个框图对技术路线的理解有很大的用处,会分为四个部分,第一个Client,第二个是server,第三个是 service Manager Binder,第四个是 Driver,Driver它是一个社会文件型的,我想从更容易理解的角度讲述一下这个问题怎么实现。做IT的,做显示器的都比较喜欢画这个框图,这个框图有利于对整个模块之间的信息的交互或者是调研过程有一个比较好的理解的方式。
对这四个模块中最本质的核心就是Binder,open Binder本身就是一个开源的框架,oner而 Binder开源的框架以为这是一个Driver本身的最基础的实践方式,实际上大家从做技术的这一块很了解。我讲一下为什么这个方式能够做到安卓兼容的程度。我们分为两个层面,左上角的Client,右边是Server Manager,Binder,那又分为上下两层,一个是(英文)它的JAVA和Server,以及Server Manager是做再一个(英文)Binder作为一个设备文件在里面运行,这是基本的Binder的框架。实际上这就是一个基本的框架,再往下更细致的讲一下,那也就是说本身让Client、Server、SerVice Manager这三个应用实际上是在不同的B结构,但是这个时候的Client Server都要通过Server Manager本身来获取对方的接口,这个时候他们三折之间本身也是一种机制,这个讲起来就比较复杂一些。
也就是说我们Server和SerVice Manager内存和Binder 进行交互,那调查的方式我们不做进一步的理解。也就是说我们的Client获取的服务,我可以叫SerVice Manager如果我的服务注册到系统,我就调用一个指导方式。整个环境运营起来了,我中间有一个点加和点CPP的方式,你既可以用JAVA的环境,也可以用C++的方式实现这两点,这个非常重要。比如说我的Client用JAVA的方式来实现,但是我的Server用C++的方式来实现,这个时候我同样用JAVA的方式可以反问到C++的Server方式,这本质上讲就是为什么我们能够用C++的方式完全取代JAVA的方式而达到对安卓完全兼容的一个最本质的思想,后续的我就不多展开讲。
从这个框图来说,如果做一个简短的描述,比如说我们有一个TVOS Server,不管是站在什么层面的Server的层面上,只要我的客户端遵循一定的网络协议我都可以浏览相同的网页,这就是我们用C++实现组件层最核心的方式,这个比喻应该可以套在这个里面。
有了C++重新写了服务以后,这些服务是怎么起来的,或者说怎么注册到系统里面去的,从这个方框图我们可以看出来,也就是说系统起来以后我们都要通过一个创建服务的方式,那TVOS的系统服务,C++的服务,有应用管理房屋,和窗口管理服务和包管理服务,本身的服务,也就是遵循安卓的启动流程,相当于我们把这三个服务从右边到左边,根据刚刚那个PPT的介绍,同样的通过JAVA端可以完全的访问到我们Server的方式,这就是一个最基本的系统注册服务的机制。
那右边来说安卓的应用是不是创建服务的这个过程是不是可以不要,完全不是,我们可以兼容安卓的服务,但是安卓本身应用的启动依赖于安卓的进程,我们叫分离也好,叫分化也好,我们启动一个安卓的服务,右边用整个的流程启动安卓的服务。
左下角的Server的服务,实际上我们可以实现整个C++的系统服务,在这个基础上我们都可以开发另外一种开发环境,换一个简单的说法完全可以剔除安卓的环境,依赖左边的环境可以达到,这仅仅是提供了去安卓化一个技术的线路,而且这种线路我们本质上也面临过,从根本角度上达到TVOS系统组建如何启动从而达到一个对安卓的应用程序的无缝支持。
相当于是对前面的框图做了一个更具体化的讲解。
这个图稍微会更复杂一点,我就尽量讲得更简化一点,系统最基本的三个服务,就是应用管理还有窗口管理组件,还有包管理组件,这个图足够大,右边这个图还可以看得清楚。我就主要讲一下包管理服务,应用管理服务和窗口管理服务,这三个服务之间如何作为一个支撑,一个应用开发最核心的模块是如何运作的。
我们先明确一下各自的职责,包管理服务针对一个应用的安装、卸载这几个来提供的,当然这两个基本功能之外还有提供检索APP安装的信息的接口,大家可能在看手机上经常玩一个应用以后,他问你是否要访问你的GPS,是否要访问你的通讯录都通过包管理服务来达到的,在安卓上面,实际上任何一个应用老是会访问你的通讯录,实际上本身就是一个不安全的开发方式,你无关的应用为什么会访问我的通讯录,拿到你的通讯录可以做很多的程序或者是不应该做的服务。对于应用管理服务我在电视上我切换不同的应用,那切换应用本身就是通过应用管理服务来实现的,一个应用的管理启动,一个暂停,一个启动,这是一个状态转换的过程。你任何一个UI的呈现,一个窗口的展示,都是通过窗口的管理服务平台做的。最后Server和政的方面最后把画面作为一个合成,作为渲染。
在细化讲一下,我们从包装安装到应用整个的流程。包管理服务是作为系统服务的一个安全的第一道门槛,他分为两种,第一个他会检测你这个包本身,本身会不会作为有人为的修改,实际上不会改变他的代码,把你的资源文件,把你的文字,把图片替换一个非法的文件,文件名是一样的。那包安装管理服务会做一个校验,会发现你这个程序是错的,他会拒绝安装。
我这个应用本身没做什么,不会是从官方的应用上下载,比如说安卓也是应用的安装,但是在我们的TVOS不是安全管控的方式。为了从应用上面下载的包有些会做,在我们安卓的时候也会检测这个签名,这个签名是非法的签名,那么也是这个用户的来源是非法的,我们具体安装。
还有一个,我这两个方面都是满足条件的,你会非法获取一些系统权限,比如说你不应该具有系统权限,我们做一些相关的有应用的操作,比如说上传文件,或者修改第三方的程序,这个也是有一个校验,你要具备相应的一个权限的话我也要有相应的组织机构,这三个环节可以达到对应用基本的管控手段,这就是包管理服务最核心的,最本质的一个作用。
安装了一个程序完了以后,这个程序怎么启动,这就是我们接下来讲应用管理服务一个核心的思想,我们的Linux,Linux层面上通过遥控器把第三方应用,实际上这就是知道这个名字,我不需要你应用具体的信息,我说一个简单的例子,我要打开一个DTV APP,通过这种搜罗门的方式,这个是怎么实现的,它在包管理的时候,把安装包里面详细的信息已经做了一个过程,那么它把这个信息存储我在管理服务会检索所有的安装应用包,找到这个名字,这个时候就会体现一个服务。
启动一个服务之后,实际上有一个UI的展现,创造管理服务实际上所有UI的绘制,文字也好,图片也好,那整个窗口的绘制都要做到详细的管理。这仅仅是一个现实,除了窗口管理程序之外,除了显示本身还要做输入、输出,主要是输入管理的服务,文件上有一个遥控器或者是第三方的空属,或者是Linux的系统,它要通过截获这个事件,截获这个事件以后通过窗口本身的定位来把消息发送到激活的焦点窗口,从整个过程来说就可以达到一个最基本的应用的安装、启动、显示,达到一个最简单的输入输出的系统,APP就是通过这种方式可以正常的酝酿起来,说出来很简单,但是本质的实践方式是相当复杂的一个过程,希望从这个角度也可以简单的描述一下,这三个核心组建各自的分工和各自的职责。这个简单的说一下,之所以画这个图的话能够通过这个框图能够更表达出我们组件层,或者是TVOS这个组件层对上统一接口,对下统一接口的原则,本质上是三层,上面是一个应用,中间是应用接口,最下面是应用资源,最中间的是两层,就刚刚讲的这些。不过黄线下面是框图,我们要播一个数字电视业务,或者是EBG,DTAV接口,通过DTV Midea Server最后去访问硬件资源。如果是去做一个DVB的播放通过一个BPmediaPlay,再走一个DVB的Client Server,最后可以走到JAVA和应对端,我做一个本地播放或者在线视频播放他会走到最右边和DTAV Midea最后标准的硬件,解码接口。在这个当中我们做了一些特别有意义的工作,就是最下面的框图,Client Server在一个进程中,DVB相关的播放和EPG信息的获取,这样最大的一个好处是这样的,我们通过运营方式的表述,对于直播业务它的头端的编码器,或者是转码器他的参数是固定的,这个参数也通过很长时间的检验,或者是直播电视特征变化是很小的,通过一定的运营方式可以把它非常稳定的运行环境,但是通过本地的播放和在线播放来源是各异的,你不可能保证你所有的解码程序是足够的。我一个来源不统一的,有可能有问题的一个播放器它的出错并不会导致我本身的直播业务的播放不影响,因为他们是通过技术层面的,通过这种方式,大家的有些方式是不太一样的,但本质上他现在的框架、接口是大同小异。
大概讲一下TVOS组件技术方面的应用,介绍了它设计的思路是怎么样用C++进行改写,怎么样达到安卓兼容,是怎么样进行交互的。可能技术方面会特别强一些,针对不同的应用产品,他的组件是怎么使用的,这个仅仅是体现在使用的方法上,可能不会涉及到更多的接收信息。
前面很多领导也做了一些展望以及应用的环境,实际上它的使用方式、业务形态我们就不做更多的解释。TVOS也可以做电视直播,也可以点播,OTT的应用,多屏互动,家庭媒体中心,智能组件网络组件统一的标准接口,便于第三方应用,在此基础上开发各自的应用程序的开发。
右边的话是EOC的模块,可以得到不同的网络端口,我会关心你下面的网页是怎么做的,还是访问外网OTT的业务资源也好,这样对你的开发来说是一个非常便捷而且非常便于应用的环境。
手机环境大家都是通过DRV还是PLAY也好,这是一个单向的过程,手机作为一个购物机,电视作为渲染的。倒过来,我们这边有一个存储管理组件,或者是移动硬盘,或者是SD卡,或者是相机里面任何的一个存储设备,通过USB接到我们的机顶盒上去了以后,我们的媒体扫描组件和存储管理组件会对你的视频进行一个扫描,可以按时间、按地点节省你的空间,你用手机可以实现一定的TVOS的方式,这个时候检索按地点,按时间,可以检索到移动硬盘里面的任何一个方式,这是另外一个方式,如果进一步拓展的话就会把手机的图片存储到移动硬盘里面去,这时候从某种程度上简化了家庭媒体中心的概念,至于说你后面通过网络访问刚刚的外网,或者是访问存储设备,或者是访问智能家居设备,我借这个图通过这个方面比较努力的便于第三方的开发来达到简单的家庭网关开发环境。
后面我们讲一下视频业务,视频业务是机顶盒最本质,最成熟的收费模式或者是利益点。直播我们就不讲了,视频的讲解,一个是游戏,一个是视频同化,那云游戏,本质上讲是一个游戏,从视频点播上来说,游戏的任何一个场景在服务器端是进行的,你打开一个应用通过网络上升到服务器,服务器端进行渲染,把渲染的图案进行编码压缩,再通过网络下传。这个时候你看到整个的视频3D的效果就是一个视频,你机顶盒+一个1080视频解码能力,3D的画面,UP的整体。在整个环境里面对你的延迟有这么三个,第一个是网络延迟,上传数据和下行编码延迟进行解码,这三个延迟加在一起足够选才能在真实的环境里面有一个画面,我们达到一百毫米,特别是一般的不是剧烈运动的,可以达到比较好的用户体验。
视频通话,视频通话我们可以通过下面这几个媒体组建可以达到很简单的,通过一个USB的摄像头,非常实用的视频通话的场景,主要得益于媒体的解码和编码的访问接口,还有TVOS媒体处理组件,对于视频通话对网络的拥塞或者处理有一个比较好的策略,这个时候通过这个方式比较流畅,视频通过的方式,在此基础上你可以有不同的应用场景,不管是社区也好,还是家庭远程的监控也好都可以在此上进行二次开发。
最后我们讲一下我们做的一个技术上的演变过程,一般电视机遥控器都是通过遥控器来操作,控制频道也好,还是打开第三方应用也好,还是玩游戏也好,最终的目标使用起来并不是很方便,我们也作为一个,仅仅是作为技术上的论证或者一个技术上的演进过程,通过我们遥控器,在遥控器里面我们可能带着一个语音的输入,语音输入的APP,这个APP是第三方,任何一个第三方的APP,以及语音来做语音解析,把你所说的控制命令通过语音解析以后有一个字符串,最后把这个解析做出来的命令进行转发,转发到系统里面去那第三方的应用,通过注册于监听的世界就可以获取你所关注的命令,我们可以做一个控制,对播放来说可以做一个播放停止,跳转、暂停、退出。
第三方的应用,比如说查找一些愤怒的小鸟,这个时候就可以跳转到第三方的愤怒的小鸟,把那个应用调出来进行打开。还有其他延伸的应用,我可以察看一下TVOS点播的内容,我看东方卫视昨天的什么节目,第三方的EPT服务器进行对接,这仅仅是从技术的角度我们也从第三方合作,也达到了这个目的。我们从组件层的角度来证明一下这些接口的设计该如何去定义,这些接口和第三方的应用之间如何去交付,这是做了一些有意义的尝试。
本来有一个TVOS展示的视频,这里由于时间原因不做更多的展示,实际上会场外面有我们联彤公司的方案,百闻不如一见,虽然我讲的TVOS组件实现技术方面的简单的报告,当然外面的服务都是站在整个组件之上,当然看不到组件,但是只要能够应用能够丰富多彩,而且应用能够运行,那这一切都得益于最基本的TVOS组件层核心的设计思路,以及它的可靠性和稳定性,这就是我今天所讲的。谢谢大家!
推荐阅读
经典栏目
精彩专题
关注我们
大视频行业颇具影响力的行业社群平台,重要新闻、热点观察、深度评论分析,推动电视行业与各行各业的连接。
集合电视台、网络视听、潮科技等各种好玩信息。
专注于报道广电行业新鲜5G资讯,致力于成为广电行业有权威、有深度的5G自媒体平台。
UHD、4K、8K的最新资讯和最深入的分析,都在这里。
视频产业的专业圈子,人脉、活动、社区,就等你来。
我们只沉淀有深度的信息和数据。
致力于卫星电视信息、卫星通信技术、天地一体网络应用案例、以及广电、通信等产业的市场动态、政策法规和技术资讯的传播。