原文鏈接:Android-Tv
本文總結(jié) Android-TV 開發(fā)過程中坏怪,常見的基礎(chǔ)知識點搀缠。主要分為TV-UI,IPTV,OTT,DVB,TVOS,DEBUG等幾大模塊展開烧颖。適用于常見盒子,電視代嗤,投影儀等TV開發(fā)棘钞。
MindMap
開局一張圖,直接上腦圖
UI
Android TV 界面開發(fā)有別與傳統(tǒng)的移動手機端開發(fā)干毅,TV端的交互主要是有用戶遙控器操作完成宜猜,因而在TV上按鍵和焦點的處理顯得尤為重要,其次TV端的輸出顯示媒介主要是電視顯示屏硝逢,不同的電視所能支持的輸入顯示分辨率也不一樣姨拥,因而分辨率的適配也是TV界面開發(fā)需要考慮的一點,除此之外TV界面的設(shè)計也與手機上的小屏顯示不一樣渠鸽,由于是大屏顯示叫乌,對UI的設(shè)計需更加偏平話,便捷化徽缚。
- 焦點 TV上焦點處理
- 按鍵 可以了解下Android View事件分發(fā)流程憨奸,針對具體的業(yè)務(wù)進行事件分發(fā),攔截處理
- 屏幕適配 TV上屏幕適配只需適配常見的720p 1080p 常見的幾種分辨率即可凿试。
- 播放器 TV上播放器一般分為硬件軟件排宰,如果定制開發(fā),建議硬解那婉,其他情況可以考慮ijkplayer等
- UI組件 TV上常見的的控件ListView GridView RecycleView TabLayout ViewPager ScorllView等
IPTV
IPTV概念的普及板甘,國內(nèi)主要靠電信,聯(lián)通吧恃,移動虾啦,廣電四大寬帶運營商麻诀。IPTV主要特點如下:
- 基于城域網(wǎng)傳輸
- 主要面向電視等大屏終端輸出
- 內(nèi)容來源主要為牌照商
OTT
OTT的概率痕寓,國內(nèi)主要靠互聯(lián)網(wǎng)行業(yè)推動,類似小米/樂視電視蝇闭,盒子呻率,創(chuàng)維,康佳呻引,海信等智能電視礼仗。OTT主要特點如下:
- 基于互聯(lián)網(wǎng)傳送
- 除了面向電視等終端輸出外,還有手機,pad等元践,即所謂的“多屏互動”韭脊。
- 內(nèi)容主要來源于牌照商,視頻網(wǎng)內(nèi)容(有版權(quán))+其他
DVB
DVB的概念单旁,存在時間最早沪羔,即傳統(tǒng)的廣電業(yè)務(wù)。DVB系統(tǒng)按照信號傳播的順序可以分成前端系統(tǒng)象浑,傳輸系統(tǒng)和終端系統(tǒng)蔫饰。其中前端系統(tǒng)一般位于節(jié)目生產(chǎn)部門(例如電視臺等部門),而終端系統(tǒng)一般用戶設(shè)備中(例如機頂盒)
傳輸標(biāo)準(zhǔn)
區(qū)別于傳送方式的不同愉豺,DVB的通用國際標(biāo)準(zhǔn)又可以分為以下:
DVB-S,數(shù)字衛(wèi)星電視系統(tǒng)篓吁,即通常山區(qū)里面的“戶戶通”小鍋。
DVB-T,數(shù)字地面電視廣播系統(tǒng),即通常區(qū)域電視塔發(fā)射出來的信號蚪拦,國內(nèi)標(biāo)準(zhǔn)對應(yīng)為DTMB
DVB-C,數(shù)字有線電視系統(tǒng)杖剪,即通常通過Cable線傳輸信號
分層結(jié)構(gòu)
DVB標(biāo)準(zhǔn)中描述的系統(tǒng)根據(jù)所屬的層次不同從上層到底層可以分為:音視頻編碼層,服務(wù)信息層驰贷,基帶傳輸層摘盆,信道編碼層,射頻層饱苟。對于Android開發(fā)而言孩擂,主要涉及的為服務(wù)信息層。服務(wù)信息層主要分為:
- PSI 節(jié)目引導(dǎo)信息
- SI 業(yè)務(wù)信息
PSI
PSI信息由節(jié)目關(guān)聯(lián)表PAT箱熬、條件接收表CAT类垦、節(jié)目映射表PMT和網(wǎng)絡(luò)信息表NIT組成,這些表會被插入到TS流中城须。 PSI信息是對單一TS流的描述蚤认,它是TS流的引導(dǎo)信息;PSI信息指定了如何從一個攜帶多個節(jié)目的傳輸流中找到指定的節(jié)目糕伐。 下面給出的是節(jié)目引導(dǎo)信息(或稱節(jié)目特定信息砰琢,PSI)的四個表結(jié)構(gòu)
- PAT節(jié)目關(guān)聯(lián)表 將節(jié)目號碼和節(jié)目映射表PID相關(guān)聯(lián),是獲取數(shù)據(jù)的開始
- PMT節(jié)目映射表 指定一個或多個節(jié)目的PID
- CAT條件接收表 將一個或多個專用EMM流分別與唯一的PID相關(guān)聯(lián)
- NIT網(wǎng)絡(luò)信息表 描述整個網(wǎng)絡(luò)良瞧,如多少個TS流陪汽、頻點和調(diào)制方式等信息
SI
PSI只提供了單個TS流的信息,使接收機能夠?qū)蝹€TS流中的不同節(jié)目進行解碼褥蚯; 但是挚冤,它不能提供多個TS流的相關(guān)業(yè)務(wù),也不能提供節(jié)目的類型赞庶、節(jié)目名稱训挡、開始時間澳骤、節(jié)目簡介等信息。 因此澜薄,DVB對PSI進行了擴展为肮,提供了其他不同類型的表,形成了SI肤京。
SI定義的表弥锄,并不需要全部傳輸, 其中蟆沫,SDT籽暇、EIT和TDT是必須傳輸?shù)模?而又以SDT和EIT最為重要,利用這2個表可以構(gòu)成功能不同的EPG饭庞, 如提供節(jié)目附加信息戒悠、節(jié)目分類、節(jié)目預(yù)定和家長分級控制等舟山。
S 業(yè)務(wù)I信息表分為以下幾類:
- SDT業(yè)務(wù)描述表 SDT描述了業(yè)務(wù)內(nèi)容及信息绸狐,連接了NIT、EIT和PMT(PSI)
- BAT業(yè)務(wù)群關(guān)聯(lián)表 BAT將網(wǎng)絡(luò)中所有的業(yè)務(wù)分成了多個業(yè)務(wù)群累盗,以此界定用戶寒矿。
- EIT事件信息表 EIT按時間順序提供每一個業(yè)務(wù)所包含的事件信息
- RST運行狀態(tài)表
- TDT事件信息表 TDT為時間和日期表(Time&Date Table),它僅傳送UTC時間和日期信息若债。
- TOT事件偏移表 TOT表提供了UTC時間和日期信息符相,以及和本地時間的時差
- ST填充表
- SIT選擇信息表
- DIT間斷信息表
SEARCH
DVB的搜臺從用戶角度來說,一般可以分為自動搜臺蠢琳,全頻點搜臺啊终,手動搜臺。其中手動搜臺實質(zhì)是單頻點搜臺傲须,自動搜臺是檢索到ts流里面的頻點信息后蓝牲,還是回到單頻點搜臺,全頻點搜臺一般是固定了頻率的數(shù)組泰讽,依次掃描單頻點例衍。
機頂盒搜臺的實質(zhì)是從TS流中獲取并存儲每套節(jié)目的音視頻PID值和構(gòu)建出電子節(jié)目節(jié)目指南。
以下總結(jié)三種搜臺實現(xiàn)流程:
①:主頻點鎖頻->NIT獲取ServiceList ->獲取SDT
機頂盒軟件開發(fā)廠商會在機頂盒內(nèi)設(shè)定一個初始頻點(MainFrenquency).或稱主頻點,機頂盒可以根據(jù)這個主頻點的物理參數(shù),如頻點.符號率,和調(diào)制方式,去鎖定此頻點.如某機頂盒設(shè)置506MHZ作為數(shù)字節(jié)目的承載主頻點已卸,獲取NIT(Network Information Table)佛玄,NIT表由以下兩個描述:1.Cable Delivery System Descriptor,這個描述主要包含了頻點咬最,符號率翎嫡,調(diào)制參數(shù)等信息;2.ServiceList Descriptor永乌,這個描述主要包含當(dāng)前節(jié)目信息的描述惑申,通過NIT表獲取ServiceList,進而獲得SDT(Service Descriptor Table)表翅雏,獲取SDT.依靠SDT.機頂盒可以知道頻道名,頻道類型節(jié)目開始時間,節(jié)目名稱,節(jié)目長度,節(jié)目分類等信息,通過系統(tǒng)的BAT(業(yè)務(wù)群關(guān)聯(lián)表)過濾節(jié)目信息圈驼,可以構(gòu)建出EPG應(yīng)用的頻道列表.將播放節(jié)目和業(yè)務(wù)名稱關(guān)聯(lián)起來顯示于節(jié)目列表中蚌讼,最后將新的節(jié)目信息寫入E2PROM之類的非易失存儲介質(zhì)中必搞,開機自動讀取這個存儲器中的數(shù)據(jù)。E2PROM之類的非易失存儲介質(zhì)中暇藏,開機自動讀取這個存儲器中的數(shù)據(jù)橄抹。至此機頂盒的節(jié)目搜索工作算是完成靴迫。②:主頻點鎖頻->PAT獲取->PMT獲取
機頂盒找到主頻點獲取PAT表。PAT(Program Association Table)表是不加密的楼誓。PAT是一個傳輸流所有節(jié)目的總?cè)肟邳c.每路TS流都有一個PAT和一個PMT,但是最后合成的TS流中只有一個PAT和與相對應(yīng)的總的多個PMT(Program Map Table),通過這兩個表的信息進而獲取搜取的節(jié)目信息玉锌,并將節(jié)目信息寫入寫入E2PROM之類的非易失存儲介質(zhì)中,開機自動讀取這個存儲器中的數(shù)據(jù)疟羹。③:間隔跨頻點鎖頻->獲取頻點的節(jié)目信息主守。
全頻點搜臺方式:通過設(shè)置的最低頻點和最高頻點,機頂盒從最低頻點榄融,一般系統(tǒng)最低頻點為幾十MHz参淫,然后每增長8M,依次搜臺到最高頻點愧杯,搜所到這一頻點的節(jié)目信息涎才,便寫入某一特定的存儲空間,最后寫入E2PROM之類的非易失存儲介質(zhì)中力九,
PLAY
播放主要分為大屏播放以及畫中畫播放憔维,一直搞不懂為啥還要有畫中畫這種業(yè)務(wù)場景的需求。畫中畫一般需要雙demux支持畏邢。
dvb的播放流程與傳統(tǒng)的播放器調(diào)用有所差別业扒,一般需要底層,jni層封裝單獨的播放器接口調(diào)用舒萎。
dvb播放需傳入頻點信息程储,音視頻pid,以及音視頻類型等。
TVOS
先看下官方簡介-NGB TVOS臂寝,全稱Next Generation Broadcasting Network TVOS章鲤,是中華人民共和國國家新聞出版廣電總局科技司帶頭研發(fā)的基于Linux和安卓系統(tǒng)的一套應(yīng)用于網(wǎng)絡(luò)電視的操作系統(tǒng)。其開發(fā)者自稱“兼顧現(xiàn)有操作系統(tǒng)的技術(shù)咆贬,比如Linux败徊、安卓”,并增加信息安全模塊掏缎,加強用戶的信息安全保障皱蹦,是專門針對電視終端的操作系統(tǒng)煤杀。
根據(jù)以上描述,結(jié)合NGB相關(guān)規(guī)范沪哺,不難看出沈自,TVOS其實還是基于Android系統(tǒng)開發(fā)改造,主要是通用規(guī)范了中間層接口規(guī)范辜妓,為硬件軟件廠家集成通用接口枯途。
一套完整的TVOS系統(tǒng),基本集合了DVB+IPTV的業(yè)務(wù)功能籍滴。TVOS應(yīng)用層面基本覆蓋如下幾個方面
- 桌面 >>>>>> 一般支持動態(tài)配置更新
- 直播 >>>>>> 分為DVB直播(需傳統(tǒng)廣電Cable線支持)酪夷,IPTV直播(http或者udp)
- 回看 >>>>>> 目前主要是IPTV回看,走http
- 時移 >>>>>> 目前主要是IPTV時移孽惰,走http晚岭,也有部分rtsp
- 點播 >>>>>> 目前主要是IPTV回看,走http灰瞻,也有部分rtsp
- 多屏互動 >> 主要通過DLNA,AIRLPAY等集成腥例,也有部分通過局域網(wǎng)socket實現(xiàn)或者組播實現(xiàn)
- 設(shè)置 >>>>>> 定制化設(shè)置,主要包含網(wǎng)絡(luò)設(shè)置酝润,圖像設(shè)置燎竖,系統(tǒng)設(shè)置,其他設(shè)置等
- 本地媒體 >> 主要提供外置usb或者sdcard多媒體文件瀏覽播放要销,或者apk安裝等
- 應(yīng)用管理 >> 主要提供本地應(yīng)用管理以及遠程應(yīng)用推薦构回,升級等
- 系統(tǒng)升級 >> 主要提供系統(tǒng)ROM升級,分IP形式升級以及Cable形式升級
- 消息管理 >> 主要提供前端消息下發(fā)疏咐,終端消息分發(fā)纤掸,上報等
- 廣告管理 >> 主要提供前端廣告下發(fā),終端廣告分發(fā)等浑塞,包含IP雙向廣告借跪,以及Cable單向廣告
- 終端管理 >> 主要提供遠程運維,遠程升級等酌壕,一般采用tr069,mqtt,xmpp等協(xié)議
- 數(shù)據(jù)采集 >> 主要進行用戶行為分析掏愁,需終端應(yīng)用埋點集成上報數(shù)據(jù),前端進行大數(shù)據(jù)分析卵牍,一般采用mqtt,xmpp等
DEBUG
TV端的開發(fā)調(diào)試工作果港,與手機端也有些差異,TV端調(diào)試方式大致如下:
AndoroidStudio 調(diào)試 糊昙,可以直接debug
adb命令行辛掠,Linux常用命令
串口工具,需拆盒子
Tftp 文件傳輸
系統(tǒng)簽名 释牺,root ,remout等
stetho ,可在谷歌瀏覽器遠程查看數(shù)據(jù)庫萝衩,sp回挽,文件等信息。
Android-Debug-Database 欠气,瀏覽器在線插件數(shù)據(jù)庫