基于IPv6的嵌入式互聯(lián)網(wǎng)視頻應(yīng)用開(kāi)發(fā)
架構(gòu)接口參見(jiàn)圖3。
網(wǎng)絡(luò)功能庫(kù)
網(wǎng)絡(luò)功能庫(kù)在標(biāo)準(zhǔn)IPv6協(xié)議的基礎(chǔ)上設(shè)計(jì)了用于通過(guò)互聯(lián)網(wǎng)處理查詢/檢索音視頻內(nèi)容,同時(shí)負(fù)責(zé)實(shí)時(shí)流媒體內(nèi)容下載的應(yīng)用協(xié)議。圖4描述了網(wǎng)絡(luò)功能庫(kù)的處理過(guò)程:
?、偻ㄟ^(guò)NETLIB_handlerInit()創(chuàng)建NETLIB_Handler實(shí)例,完成初始化工作;②通過(guò)NETLIB_search() 或 NETLIB_searchByIndex()進(jìn)行查詢;③檢索的結(jié)果由Handler處理,亦可重新搜索;④NETLIB_readContent()或NETLIB_getCount()可以從handler保存的檢索信息中讀取指定內(nèi)容;⑤檢索完畢可通過(guò)NETLIB_handlerDestroy銷除緩存中的結(jié)果集。
下面介紹網(wǎng)絡(luò)功能庫(kù)主要功能函數(shù)說(shuō)明,包括下面幾個(gè)API。
int NETLIB_search (NETLIB_Handler handler, char* keyword, NETLIB_QueryType queryType, unsigned int maxCount )。描述:搜索給定關(guān)鍵字的視頻,并返回不超過(guò)maxCount指定數(shù)量的結(jié)果。
int NETLIB_readContent(NETLIB_Handler handler, int index, NETLIB_VideoDetail* videoDetail)。描述:從檢索結(jié)果中根據(jù)指定的順序(index)讀取相應(yīng)的內(nèi)容。
流媒體處理庫(kù)
流媒體處理庫(kù)負(fù)責(zé)處理流媒體數(shù)據(jù),它的功能包括:①?gòu)膶?shí)時(shí)媒體流中分解音視頻;②選定音視頻解碼庫(kù)對(duì)分解的音視頻進(jìn)行解碼;③對(duì)解碼后的音視頻進(jìn)行同步渲染,確保播放效果。處理流程參見(jiàn)圖5。
音視頻解碼庫(kù)
一個(gè)功能完善的Flv播放器必然包括以下三大核心功能模塊。
(1)標(biāo)簽解析模
塊:能夠按照Adobe公司制定的文檔格式規(guī)范對(duì)Flv文檔[3](結(jié)構(gòu)類似swf文件)進(jìn)行解析。
(2)影片執(zhí)行模塊:能夠按照一定的時(shí)間順序執(zhí)行影片。
(3) ActionScript解析引擎:能夠響應(yīng)用戶的交互行為并更好地控制Flv文檔的行為[4~5]。
考慮到使用機(jī)頂盒播放flv視頻時(shí)操作交互類flv文檔時(shí)的非便利性,故此我們當(dāng)前實(shí)現(xiàn)版本中主要解決了播放時(shí)必須的問(wèn)題,主要功能接口描述如下。
FLVDEC_create(Engine_Handle handle, string name);用于創(chuàng)建FLV解碼器實(shí)例。
FLVDEC_control(FLVDEC_Handle, FLVDEC_Cmd id, FLVDEC_DynamicParams* params, FLVDEC_Status* status); 用于在FLV解碼器實(shí)例中實(shí)現(xiàn)FLV播放控制。
FLVDEC_process(FLVDEC_Handle handle, XDM_BufDesc* inBufs, XDM_BufDesc* outBufs, FLVDEC_InArgs* inArgs, FLVDEC_OutArgs* outArgs); 在FLV解碼器實(shí)例中實(shí)現(xiàn)FLV播放。
FLVDEC_delete(FLVDEC_Handle handle); 用于刪除FLV解碼器實(shí)例。
用戶界面庫(kù)
用戶界面庫(kù)基于DirectFB。DirectFB是專門為滿足嵌入式設(shè)備要求而開(kāi)發(fā)的小巧、強(qiáng)大、靈活和易于使用的圖形系統(tǒng),并且試圖成為一個(gè)建構(gòu)于 Linux Framebuffer Device 之上的新圖形標(biāo)準(zhǔn)。它在 FrameBuffer 的基礎(chǔ)上提供了圖形加速、輸入設(shè)備處理提取、透明窗口和多重顯示層的功能,能夠?qū)η度胧较到y(tǒng) GUI 有較好的支持。與那些通用的嵌入式 GUI 系統(tǒng)相比,它具有非常簡(jiǎn)潔、高效的體系結(jié)構(gòu)和硬件圖形加速功能。
評(píng)論