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