开启辅助访问
 找回密码
 立即注册

在Android中实现DVB-T数字电视机的实时播放

碧海狂龙 回答数2 浏览数687
一、前言
        手机取代了生活中很多的东西,包括钱包、数码相机、导航仪、红包、…等,确实为我们带来了省事。本文要讨论的是如何在安卓系统Android上实现地面波标/超清数字电视机信号的实时接收与播放。如果手机能嵌入移动接收数字电视机功能,对芯片提供者及手机/平板厂商都是巨大的商机。目前手机市场已经基本饱和了,需要寻找一些新的亮点来说服消费者购买新的手机。
二、地面波数字电视机
手机上最熟悉的电视机莫过于是网络电视机。但是它有很多缺点:首先是不免费,是要花流量的。超清电视机的数据流量在每秒20MB左右,一小时流量大约7GB,估计一般人一年的家底就只够看一部影片。其次网速是有限的,特别是当很多人同时观看同一节目时;而且视频服务器的链接数也是有限的。所以网络电视机比较适合画面较小且时间较短的小视频。
国内家里比较普遍的是安装有线电视机(DVB-C),它的缺点是每天只有下班后回到家才能观看,时间段非常有限,利用率不高。有线电视机系统最后一公里的铺设时间较早,信号质量参差不齐,且铺设成本较高,所以无论你看与不看服务商都强制每月定期交费用。服务商不愿意花成本来及时更新电缆,随着时间的推移,信号质量会越来越差。在欧美日本等地,由于高楼大厦较少且居住分散,安装有线电视机的成本太高,所以并不流行。
卫星电视机也是常见的一种形式。缺点是卫星是流动的,信号不稳定,天线需要不断调整方向以对准卫星才能观看,比较适合开阔和人烟稀少的地方比如草原、船舶上使用。
另外一种不太为人所知的是地面波数字电视机。它有诸多优点:首先是免费的,不仅服务商不收取每月的服务费(因为信号是通过电视机塔无线广播的,没有线缆铺设成本),而且不花流量(因为信号是单向广播,不需要网络),你就是整天24小时收看超清电视机也不会发生任何费用。相比卫星电视机它的信号源是固定的电视机发射塔,信号是十分稳定的;相比网络电视机它可以适应上千万人同时观看同一节目(例如春晚),不会引起任何网络阻塞;相比有线电视机它的信号好坏不受线缆的质量所束缚,消费者可享受同等品质的视听盛宴。同时它是可以移动接收的。




国际上共有四种地面波数字电视机的制式,分别是欧洲DVB-T/T2、日本ISDB-T、美国ATSC、中国 DTMB。以下图表是采用四种制式的国家数量统计。可以看出DVB-T/T2采用的国家数量最多。
乐观估计今年就会出现屏幕可折叠的手机,手机屏幕趋势是会更大,地面波数字电视机会有更大的发展空间。
三、市场分析
市面上常见的是各种DVB-T/T2、ATSC、ISDB-T、DTMB的电视盒子(有点类似网络电视机盒),电视盒子要接一根长长的天线到窗边或阳台上才能接收电视机信号,不仅很麻烦而且完全丧失了地面波信号可以移动接收的优势,这样的产品多少有点奇葩。国内虽然国家强制要求在大尺寸电视机里安装DTMB模块,但是在消费者看来抬高了价格,但是使用起来十分麻烦,大多数人不愿意使用甚至都不知道电视机里有此功能存在。
地面波数字电视机可以移动接收且信号稳定,最合适的应用应该在移动设备,例如手机、平板电脑等。消费者可以在任何时间和地点收看电视机节目,也将会彻底颠覆只有晚上才是电视机的黄金时间的观念。
四、硬件上技术难度分析
    粗略看起来实现信号的接收与播放的技术难度应该是不大的,表面上只是比普通的网络电视机信号增加了信号接收的硬件设备(例如电视机棒Dongle等),但是实际上技术难度是很大的。
移动设备对硬件有其特殊的要求:首先要体积小,其次是功耗低,然后是成本低。一般设备中调谐器+解调器+解码器可以都用硬件实现,但是在移动设备中只有调谐器+解调器的方案是现实的,因为手机或平板电脑中CPU里就有解码器。只有这样体积、功耗和成本才是最低的,而解码可以利用CPU进行软解码或硬解码。
一般视频播放软件主要涉及的是视频解码格式的问题,而数字电视机涉及到很多特殊概念,像ts流、解复用、PAT、PMT、EPG等,而且还要考虑数字电视机的后端设备的情况,所以在软件上远比简单的视频播放复杂得多。
移动设备对适用性也有特殊的要求。例如4G信号在全世界都是兼容的,用户出国旅游时不用更换手机就可以接收当地的移动通讯信号。生产商肯定希望其中的数字电视机模块能兼容所有的四种制式,这样对生产、质量管控和销售都有益处。
手机/平板电脑中的解码器都是支持多种制式的,调谐器已经出现能兼容多制式的产品,解调器目前虽然只出现了单一芯片可兼容DVB-T/T2/C的产品,但是对于欧美日芯片厂商来说技术上不存在任何障碍,只要市场有需求且技术细节确定就很快会设计出芯片。国内DTMB标准的应用很不理想,这与国内一直缺芯少魂的情况有关,芯片一直是中国人的软肋。解调器是数字电路且标准是国内自个制定的,设计上没问题,但是调谐器是射频模拟电路,设计和生产的难度都要高一两个数量级,所以不难理解DTMB在国际上推广很差的原因,与中国高铁在国际上的影响力相比有天壤之别。
五、安卓系统中的数字电视机播放器
尽管硬件上对欧美日厂商来说并没有太大的技术难度,但是一台有趣的现象是目前在欧美日的移动设备中并未普遍嵌入移动电视机功能,在Google Play的应用商店中能提供播放移动电视机信号的应用凤毛麟角,且只针对自个公司产的特定电视机棒,根本无法找到针对所有硬件和制式的播放器。即使这样的播放器界面看起来也很奇怪,完全不像用Google推荐的Android Studio工具开发出的应用,倒像是用QT等特殊软件开发出来的,更奇怪的是应用中有将近10个左右的动态链接库(.so),而一般安卓应用中只有一台so库。国内应用市场中可以找到类似的DTMB播放器,也是只能针对特定的电视机棒,界面与其类似,更奇葩的是应用中的动态链接库高达二三十个。猜测所有的开发源头只有一台,否则很难解释为何如此相似。
欧美日厂商的芯片设计和生产能力远在我们之上,所以猜测他们的瓶颈应该不在硬件上,主要是在软件上。熟悉Linux系统的人知道,即使在Linux这么成熟悠久的系统也很难找到非常通用的数字电视机播放器,有的虽然代码中有此功能,但是在发行版中却被阉割掉了;只有一些绑定硬件的播放器才支持此功能。安卓是这四五年才兴起的,所以在安卓上开发此类播放器将更加困难。
2010年时本人在一家日本公司工作,负责在国内推广日本一家芯片厂商的硅调谐器IC。当时北京一家DTMB芯片厂商曾评估过,认为这是他们评估过的最好的一款硅调谐器IC,在全温度范围内都是符合标准的。但是令人尴尬的是在深圳上海北京等地拜访的所有生产厂商都反馈虽然硬件很好,他们的客户也的确有这种需求,但是鉴于硬件与软件整合开发的难度太大,都不愿意尝试。最后找到欧洲一家著名的电视盒子方案提供商在深圳的研发总部,当时他们的研发部总经理和专门负责调谐器部分开发的经理在场,尽管我们表示愿意花费几百万来请他们研发相应的驱动及方案,非常有诚意地交流了近四个小时,或是被负责调谐器部分开发的经理以花费时间太长、难度太大拒绝。当时从那里出来的时候心情是十分沮丧和生气的,但是或是没弄明白到底技术难度在哪里。后来的几年间在网络上不断查找到一些相关的信息才最终明白。
后来问过日本人为啥不在日本找一家方案提供商,他们的答复是虽然可以找到,但是方案提供商是按照一款调谐器、一款解调器、一款CPU来分别收费的,编译一次要付一次的钱,而且每次的收费数额都很吓人。解调器和CPU的厂商都非常多,开发费用将是一台无底洞。
也找过上海和深圳的国内方案提供商,提出的条件更是奇葩:如果不将芯片交与他们代理,就不可能提供方案,根本不是开发费用的问题。
六七年前欧洲一家知名的平板电脑厂商曾经联合软件公司试图开发数字电视机播放器,但是最后失败了。可以浏览一下著名的开源网站Github,2012年以前还能找到类似droidTV这样在Android系统上的播放器,之后就基本上销声匿迹了。实际上droidTV也不是ts流直接播放,也是通过工具软件转为网络流媒体再播放。欧美手机一些著名的论坛里2012年前经常有玩家讨论如何将电视机棒接到手机上播放,还上传了自个编译的内核模块供大家测试,但是那以后基本上就没有了。欧洲专门做网络流媒体软件的网站论坛里2011年类似的交流也很活跃,玩家们纷纷向网站里负责解答问题的工程师询问如何将电视机棒接到安卓手机上播放数字电视机,工程师给出的答案是不能。看到2013年此论坛里仍然有不少人提出这样的问题,工程师很不耐烦地给出的答案直接是“不要再问这样愚蠢的问题了”。这几年连提这样的问题的人都没有了。
总之结论是即使在欧美日也没有人认为在安卓系统上开发数字电视机播放器是可能的,虽然做过很多尝试都以失败告终。
六、本人方案的特点
本人涉足数字电视机领域开始与十五年前,当时在日本一家公司负责销售日本某公司的广播级MPEG-2/H.264编解码模块,主要用于电视机台的移动摄像机上做实况转播或新闻采集。几乎拜访过全国的数字电视机后端设备制造商,因此对数字电视机的后端技术有较深的了解。后来销售的集成电路产品基本上与手机相关,例如RF、PA、FEM、BB、液晶模块、GPS模块、三维加速度传感器、硅调谐器、射频二三极管甚至是手机整体方案等等,所以对手机从硬件、射频到软件都是相当熟悉的。本人一直是电子产品的狂热爱好者,初中上过朝阳区少年宫学过组装晶体管收音机,高中在学校里玩编程,大学专业是半导体与集成电路,还自学过PCB设计,工作后一直在半导体器件和集成电路的圈子里打转,从未离开过这一行业。
本人开发的数字电视机播放器已经在安卓4.0、4.1、4.2、4.3、4.4、5.0和内核2.6.36、3.0的多款开发板和平板电脑上验证过。因为手机在ROOT之后无法获得保修,手机厂商也拒绝公布他们的Linux内核和Android源代码,所以未在手机上测试,但是方案是不需要通讯联网的,所以手机和平板测试是等价的。
最初是在Tiny210开发板上开发的,当第一次看到播放出数字电视机画面时,连自个都觉得实在是不可思议,狂喜了一阵。为了更慎重起见,在安卓的每个版本上都做了尝试,想看看到底会在哪里卡住,因为实在想知道为啥别人觉得难。修改代码、应用崩溃、查看日志、再修改、再崩溃、再查看、……,如此往复,有时觉得脑子快要崩溃了,心都要跳出来了。甚至有连续三个星期的时间,除了简单吃饭和5小时的睡眠,剩下的时间就是坐在电脑前敲代码。终于越过了一台又一台错误,目前完全确信实现数字电视机播放器是可能的。
最新一版代码是在安卓5.1上测试的,决定从此版开始推广,原因是5.1是分水岭,以下一般针对低端32位CPU,以上基本都针对64位中高端CPU,从低端开始更容易被市场所接受。
下面简单介绍一下最新版的开发环境:
1.制式选择:选择的是DVB-T。选择的原因是DVB-T/T2覆盖的国家最多,市场最广阔且芯片成熟价格最低。没有选择DTMB的原因是覆盖的国家太少,芯片只有三片最原始的三片方案,功耗很大电视机棒很烫,价格是DVB-T/T2的2~3倍,几年了并没有根本性的性能提升和价格降低。但是方案本身对各种制式都是适用的,只需要做一些小的修改即可以适应各种制式。
2.信号来源:北京本地的DVB-T广播信号。使用专门的调制卡虽然也可以作为信号源,但是最后或是要进行场测,所以直接使用真实的广播信号更简单。很多人质疑北京还有DVB-T广播,请参考网上这篇文章:
   北京DVB-T单频网和公交信号覆盖测试说明  http://www.dvbcn.com/2006/06/22-4379.html
3.电视机棒:使用RTL2832U芯片系列的DVB-T电视机棒。原因是价格很低,在欧美论坛里的评价较好,且是两片方案,有直接嵌入移动设备的可能。
4.开发板:使用友善之臂的nanoPC-T2或M2开发板(三星S5P4418 32位CPU),安卓版本5.1,内核版本3.4。使用开发板的原因是系统可以随心所欲的定制,而对真实的手机做系统修改必须先ROOT,但是厂商可以ROOT为由拒绝保修。方案本身对安卓版本的要求在4.0以上,内核版本在3.0以上。不一定要求双核,如果系统本身只是播放,单核就可以。选择开发板而不选手机的另外一台原因会在下面的方案特点中内核层驱动谈到。
设计的出发点不是简单玩玩,而是希望最终将芯片/模块等嵌入手机/平板等量大的移动设备,是为芯片、设备、终端等厂商配套服务的,所以才有以下方案的特点:
1.内核层级驱动:安卓是基于Linux内核的,所以方案中的硬件驱动也是基于Linux内核。好处之一是硬件与软件完全隔离,因为播放器的代码巨大而复杂,如果发现有问题可以通过更换硬件来查找分清是硬件或是软件问题。好处之二是Linux内核代码里的资源丰富,里面已经支持了欧美日所有常见芯片的驱动,增添驱动只需要重新编译就可以,即使没有也可以进行代码移植。令人奇怪的是中国厂商的很多芯片的驱动不在代码支持的范围里,不知道是我们不积极或是人家不愿意。缺点是在安卓中增添新的内核模块时,必须得到相应的权限,导致安卓镜像必须重新编译。因为目前手机厂商都提供系统的OTA升级功能,所以只是稍微麻烦一些。
另外一种驱动模式是用户层级驱动:USB硬件的驱动是在用户应用中处理的。好处是安卓镜像不需要重新编译;缺点之一是用户层驱动比内核层驱动的优先级要低很多,数字电视机的码流相当高,如果系统资源有限时则很容易导致应用层驱动无法及时处理硬件。缺点之二是当把芯片直接嵌入设备中而不是从USB口作为外围设备插入时,用户层应用只能通过内核来与硬件通讯,不能直接指挥硬件工作,否则会带来冲突和系统安全问题,所以当直接嵌入芯片至板子上时,只能放弃用户层驱动,回归到内核层级驱动。此种驱动更适合在开发硬件的初期阶段用来测试硬件。
目前方案中只采用了内核层级驱动,因为最终目标是为将芯片直接嵌入移动终端中而开发,所以未考虑用户层级驱动。同一块板子同一种电视机棒只能采用内核层级驱动或用户层级驱动中的一种,不能兼容。
2.驱动应用隔离:硬件驱动与软件播放器完全隔离,因为打算将软件上传到Google Play商店中供下载,所以未将软件与任何硬件绑定。
3.兼容多种制式:播放器可以兼容DVB-T2/C/S/S2等多种制式,制式完全由驱动决定。
4.兼容多种硬件:Linux内核中支持的所有电视机棒原则上都支持,还可以将驱动在内核之间移植。
5.TS流直接播放:播放器直接播放TS流,未在播放前将TS流转为UDP等网络流媒体后再播放。
6.支持软/硬解码:支持软解码和硬解码
7.融合本地播放:播放器即是专门的数字电视机播放器,也是通用的本地视频播放器(几乎支持所有编码格式)
8.代码授权明确:除了自个的代码,使用的第三方代码遵守明确的授权协议,不会发生盗版侵权的问题。软件界面采用欧美风格的界面,可能中国人看起来比较平庸,但是在License上更保险,没有发生法律纠纷的风险。Github上实际有一些看起来很炫酷的界面,但是开发者基本都在国外,在无法得到书面的授权协议之前只好割爱。
9.代码长期维护:所有代码均为源代码或Github上公开源代码的库文件,编译为源代码级的编译。
七、未来规划
下面谈一下未来打算做的一些工作:
1.交流与推广:希望与电视机棒、手机/平板电脑生产商及芯片厂商进行交流,听取意见以将应用完善得更好。
尽管市场的空间很大,但是开始或是会有较大的风险,所以希望选择目前正在做电视机棒、手机/平板电脑产品的生产商,并且具有外销经验和相关客户群的先进行交流。等完成了编程有了充裕的时间再扩大。
抱歉希望您到北京来交流,一是北京有DVB-T广播信号,可以当面做场测;二是还有后续的升级开发要完成,没时间出差;三是要等交流了一定数量的厂商后再出差,这样效率更高。
出差时希望能参观您的工厂。本人对硬件、PCB设计及射频也很精通,并且有在外企十年以上销售集成电路产品的经验,对技术方面整体没有太高的要求,但是从未有在工厂长期工作的经验,所以反而对厂商的工厂管理、质量把控更在意和挑剔。本人参观过瑞萨、日立、松下的多家工厂,虽然日本的工厂普遍已经有几十年的历史,显得有点旧,依然整洁而井井有条,给人留下很深刻的印象。
2.升级安卓和内核版本:验证播放器在安卓6.0以上及驱动在内核3.10以上的性能,
3.开发更多硬件驱动:很多在欧美销售的电视机棒都是在中国制造的,如果您是他们的OEM厂商,希望您能提供产品以供验证测试之用。目前使用的电视机棒是在淘宝上购买的,都是无牌的。
4.用户层级驱动:希望与手机及平板电脑厂商交流之后,再决定是否开发此类驱动。
5.开发多种制式:有些制式在国内是无法进行场测的,例如ISDB-T和ATSC。暂时只能放在最后来考虑。
八、合作伙伴
本人在外企工作多年,更习惯国外注重能长期合作的模式,因此对合作伙伴或是比较挑剔的。下面详细谈一下希望交流的厂商顺序及内容:
1.电视机棒厂商:个人认为目前的电视机棒不太适合在手机上使用,首先接口要改为microUSB接口,其次形状和天线都需要改进。还有其它一些需要改进的地方。
2.平板电脑厂商:个人认为目前平板电脑是最适合直接嵌入数字电视机的产品。看数字电视机很耗电,对电池容量要求高,而手机电池的容量一般都很小,平板电脑的体积可以容纳更大容量的电池和稍大的天线。
3.芯片厂商:目前虽然台湾厂商有单芯片DVB-T方案,但是性能较差;如果出现性能较好、价格小于3美金的单芯片DVB-T2方案,需求将会有爆炸性的增长。个人认为主要的问题或是电视机棒的需求太少,每年也就十万数量级,如果需求放大100倍到千万级,价格会迅速下降。另外,希望能对我公开芯片的详细技术资料。
4.手机厂商:对芯片的体积、功耗和价格都非常敏感,应该是最难攻克的市场;最好是内置天线,但是还不确定硅调谐器厂商是否能进一步提高灵敏度以降低对天线的要求。
九、联系方式
因为播放器还要持续改进,还要花大量的时间在编程上,所以没有太多的时间来答复所有感兴趣的来电。
联系请先加微信tv4android,说明目的,然后请传一些公司的介绍和目前在做的产品给我,便于我很快答复。
使用道具 举报
| 来自北京
当贝投影