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