專利名稱:一種基于dm6446的嵌入式p2p流媒體直播系統(tǒng)及其工作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)多媒體技術(shù)領(lǐng)域,特別是一種基于DM6446的嵌入式P2P流媒體直播系統(tǒng)實(shí)現(xiàn)方法。
背景技術(shù):
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,流媒體已成為音頻、視頻等多媒體文件流行的分發(fā) 方式。流媒體與常規(guī)多媒體的不同主要在于,流媒體可以邊下載邊播放。流媒體直播系統(tǒng) 可以廣泛地應(yīng)用于視頻會(huì)議、遠(yuǎn)程培訓(xùn)、廣播電視等領(lǐng)域。但是對(duì)于這些擁有大規(guī)模潛在用 戶的領(lǐng)域,傳統(tǒng)C/S(客戶端/服務(wù)器)架構(gòu)的流媒體直播系統(tǒng)對(duì)服務(wù)器性能和網(wǎng)絡(luò)帶寬要 求很高,因而服務(wù)器的處理性能和網(wǎng)絡(luò)帶寬會(huì)成為整個(gè)系統(tǒng)擴(kuò)展的瓶頸?;赑2P(peer to peer)技術(shù)的流媒體直播系統(tǒng)應(yīng)運(yùn)而生。P2P流媒體直播系統(tǒng)具有非中心化、可擴(kuò)展性、健 壯性等特點(diǎn),可以將服務(wù)器的壓力(視頻流化處理、網(wǎng)絡(luò)分發(fā)傳輸?shù)?向客戶端轉(zhuǎn)移,可以 充分利用客戶端的網(wǎng)絡(luò)資源和存儲(chǔ)資源。但是,目前流媒體直播系統(tǒng)的客戶端主要由PC (通用計(jì)算機(jī))來(lái)承擔(dān),而嵌入式多 媒體終端(如機(jī)頂盒、PDA、手機(jī)等)日益受到用戶的青睞?;谇度胧狡脚_(tái)的P2P流媒體 直播系統(tǒng)已經(jīng)成為一種發(fā)展趨勢(shì)。將在現(xiàn)有PC上運(yùn)行的P2P軟件直接移植到嵌入式平臺(tái), 存在與嵌入式平臺(tái)兼容性差、可移植性低、開(kāi)發(fā)周期長(zhǎng)、成本高等缺點(diǎn)。
發(fā)明內(nèi)容
本發(fā)明的目的是為克服現(xiàn)有技術(shù)的缺陷,提供一種基于TI的達(dá)芬奇平臺(tái)DM6446 的P2P流媒體直播系統(tǒng)實(shí)現(xiàn)方法,具有模塊化設(shè)計(jì)、可移植性高、開(kāi)發(fā)周期短等優(yōu)點(diǎn)。為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案一種基于DM6446的P2P流媒體直播系統(tǒng),它由若干個(gè)通過(guò)網(wǎng)絡(luò)連接在一起的達(dá)芬 奇數(shù)字平臺(tái)組成,各達(dá)芬奇數(shù)字平臺(tái)采用ARM+DSP雙核架構(gòu),ARM模塊作為通用處理器運(yùn)行 主程序,DSP模塊作為協(xié)處理器負(fù)責(zé)音頻和視頻的解碼;其中,ARM模塊包含P2P引擎模塊、 播放器模塊、UI模塊和控制模塊,P2P引擎模塊與以太網(wǎng)連接,負(fù)責(zé)從網(wǎng)絡(luò)中獲取需要的音 視頻數(shù)據(jù),播放器模塊負(fù)責(zé)播放從P2P引擎模塊獲取的數(shù)據(jù),UI模塊負(fù)責(zé)為用戶提供良好 的界面,控制模塊與UI模塊、播放器模塊和P2P模塊連接,配合UI模塊負(fù)責(zé)控制各個(gè)模塊 的運(yùn)行狀態(tài)并響應(yīng)用戶的遙控器按鍵操作;播放器模塊分別與顯示器和音頻設(shè)備連接;UI 模塊與顯示器連接。所述P2P引擎模塊根據(jù)用戶的需求,連接系統(tǒng)中的Tracker,獲取相應(yīng)節(jié)目的較 好的節(jié)點(diǎn)列表,然后連接已知節(jié)點(diǎn),如連接的節(jié)點(diǎn)數(shù)目不夠,啟動(dòng)節(jié)點(diǎn)尋找算法尋找新的節(jié) 點(diǎn);與已連接的節(jié)點(diǎn)交互數(shù)據(jù);周期性的向Tracker和已連接的節(jié)點(diǎn)報(bào)告自己的狀態(tài);周期 性的檢測(cè)已連接節(jié)點(diǎn)的狀態(tài)并給其打分,斷開(kāi)分?jǐn)?shù)最低的節(jié)點(diǎn),并與新的鄰居節(jié)點(diǎn)建立連接。
所述播放器模塊從P2P引擎模塊獲取音視頻數(shù)據(jù),將獲得的音視頻混合數(shù)據(jù)解復(fù) 用成音頻數(shù)據(jù)和視頻數(shù)據(jù),將已分離的音視頻數(shù)據(jù)分別送到DSP端讓其解碼,實(shí)現(xiàn)音視頻 的播放。所述UI模塊為基于Qt4的UI模塊,它顯示從控制模塊獲取的節(jié)目列表,并周期更 新,或者用戶主動(dòng)更新;根據(jù)節(jié)目類別分類顯示,并更改節(jié)目的分類依據(jù);顯示節(jié)目的受歡 迎程度,并排序顯示;顯示節(jié)目的網(wǎng)絡(luò)狀態(tài),并排序顯示。
所述控制模塊控制P2P引擎模塊、播放器模塊和UI模塊的狀態(tài),處理各個(gè)模塊的 請(qǐng)求,實(shí)現(xiàn)模塊間的相互通信,響應(yīng)用戶的遙控器請(qǐng)求,執(zhí)行相應(yīng)的命令,更新相應(yīng)的UI模 塊界面。一種基于DM6446的P2P流媒體直播系統(tǒng)的工作方法,它的步驟為1)控制模塊首先啟動(dòng),初始化各個(gè)模塊需要的環(huán)境;2)然后啟動(dòng)P2P模塊,P2P模塊連接Tracker服務(wù)器,獲取最新的節(jié)目列表;3)控制模塊將獲取的節(jié)目列表作為參數(shù)啟動(dòng)UI模塊,UI模塊在顯示器上繪制用 戶界面,同時(shí)控制模塊安裝遙控器的各個(gè)按鍵的處理函數(shù);此時(shí),系統(tǒng)接受用戶的按鍵交 互;4)用戶按鍵時(shí),控制模塊處理按鍵請(qǐng)求,并產(chǎn)生相應(yīng)的信號(hào)發(fā)送給UI模塊,UI模 塊根據(jù)信號(hào)更新,當(dāng)用戶選擇想觀看的節(jié)目,按鍵后,控制模塊處理按鍵請(qǐng)求,發(fā)送信號(hào)給 UI模塊,UI模塊將想觀看的節(jié)目參數(shù)傳給控制模塊,控制模塊再將節(jié)目參數(shù)傳給P2P模塊, 同時(shí)啟動(dòng)播放器模塊;5)播放器模塊通過(guò)socket線程通信的方式獲取P2P模塊的音視頻數(shù)據(jù),處理后通 知控制模塊,控制模塊通知UI模塊顯示媒體的播放;6)當(dāng)用戶切換頻道時(shí),控制模塊將新的節(jié)目參數(shù)傳遞給P2P模塊,P2P模塊主動(dòng)斷 開(kāi)與現(xiàn)有節(jié)點(diǎn)的連接,清空節(jié)點(diǎn)列表,告訴Tracker自己已經(jīng)切換頻道,同時(shí)向Tracker請(qǐng) 求新的節(jié)目的節(jié)點(diǎn)列表,然后返回步驟3)。所述步驟3)中,UI模塊啟動(dòng)后,周期性的更新節(jié)目列表,更新節(jié)目列表的請(qǐng)求通 過(guò)控制模塊轉(zhuǎn)發(fā)給P2P模塊,P2P模塊將更新后的節(jié)目列表通過(guò)控制模塊再轉(zhuǎn)發(fā)給UI模塊, UI模塊根據(jù)需要自己更新UI界面。所述步驟2)中,P2P模塊向Tracker請(qǐng)求相應(yīng)節(jié)目的節(jié)點(diǎn)列表,Tracker應(yīng)答并傳 送給P2P模塊節(jié)點(diǎn)列表。P2P模塊測(cè)試已知節(jié)點(diǎn)的的RTT,連接RTT相應(yīng)較小的4個(gè)節(jié)點(diǎn)。 之后,P2P模塊與已連接的節(jié)點(diǎn)交互數(shù)據(jù),同時(shí)周期性的執(zhí)行以下動(dòng)作告訴Tracker自己 的狀態(tài);告訴已連接節(jié)點(diǎn)自己的狀態(tài);評(píng)測(cè)已連接的節(jié)點(diǎn),斷開(kāi)評(píng)價(jià)最低的一個(gè)節(jié)點(diǎn)并重 新選擇節(jié)點(diǎn)連接;與已連接的用戶交互更新節(jié)點(diǎn)鏈表。所述步驟5)中,播放器模塊獲取的音視頻是混合的TS格式,播放器模塊首先解復(fù) 用音視頻,然后通過(guò)調(diào)用DMAI的接口,分別將編碼的音頻數(shù)據(jù)MP3和視頻數(shù)據(jù)H. 264傳送 給DSP端的解碼器,通過(guò)調(diào)用DMAI庫(kù)接口,控制/dev/dsp播放解碼后的音頻數(shù)據(jù),控制/ dev/fb/Ι播放解碼后的視頻數(shù)據(jù)。本發(fā)明引入跨平臺(tái)的圖像庫(kù)Qt4,用以開(kāi)發(fā)良好的UI界面;引入TI的 DMAI (DavinciMultimedia Application Interface)庫(kù),用于提供音視頻的解碼接口和硬 件設(shè)備接口 ;引入Gstreamer多媒體框架,用于播放器的實(shí)現(xiàn)。
本發(fā)明設(shè)計(jì)了一種基于DM6446的P2P流媒體直播系統(tǒng)實(shí)現(xiàn)方案。系統(tǒng)基于TI公 司的達(dá)芬奇數(shù)字平臺(tái)TMS320DM6446開(kāi)發(fā),達(dá)芬奇平臺(tái)采用ARM+DSP雙核架構(gòu),ARM端作為通 用處理器運(yùn)行主要的程序,DSP作為協(xié)處理器負(fù)責(zé)音頻和視頻的解碼。本系統(tǒng)包含P2P引 擎模塊、播放器模塊、用戶界面(UI)模塊和控制模塊。P2P引擎模塊負(fù)責(zé)從網(wǎng)絡(luò)中獲取需要 的音視頻數(shù)據(jù),播放器模塊負(fù)責(zé)播放從P2P引擎模塊獲取的數(shù)據(jù),UI模塊負(fù)責(zé)為用戶提供 良好的界面,控制模塊配合UI模塊負(fù)責(zé)控制各個(gè)模塊的運(yùn)行狀態(tài)并響應(yīng)用戶的按鍵操作。P2P引擎模塊負(fù)責(zé)從P2P網(wǎng)絡(luò)中獲取需要的音頻和視頻數(shù)據(jù),主要部分包含(1)根據(jù)用戶的需求,連接系統(tǒng)中的Tracker,并按照以下策略來(lái)獲取相應(yīng)節(jié)目的 較好的節(jié)點(diǎn)列表較大比例(80%)的較近的IP地址(從高位到低位匹配較多),較近的IP 地址節(jié)點(diǎn)之間擁有較好的帶寬和RTT(Round-trip Time)值的幾率較高;較小比例(20%) 的隨機(jī)的IP地址,這些地址用以保證節(jié)點(diǎn)的多態(tài)性(2)檢測(cè)節(jié)點(diǎn)狀態(tài)并連接已知節(jié)點(diǎn),如連接的節(jié)點(diǎn)數(shù)目不夠,啟動(dòng)節(jié)點(diǎn)尋找算法尋 找新的節(jié)點(diǎn)a從已連接的節(jié)點(diǎn)請(qǐng)求節(jié)點(diǎn)列表b如步驟a獲取的節(jié)點(diǎn)仍不夠,等待一段時(shí)間,請(qǐng)求Trackerc若步驟b仍不夠,等待一段時(shí)間,轉(zhuǎn)到步驟a(3)與已連接的節(jié)點(diǎn)交互數(shù)據(jù)(4)周期性的向Tracker和已連接的節(jié)點(diǎn)報(bào)告自己的狀態(tài)(5)周期性的檢測(cè)已連接節(jié)點(diǎn)的狀態(tài)并給其打分(計(jì)算節(jié)點(diǎn)間的RTT,RTT的值較 小的為較好的節(jié)點(diǎn),可以獲得較高的分?jǐn)?shù)),斷開(kāi)分?jǐn)?shù)最低的一個(gè)節(jié)點(diǎn),并重新連接一個(gè)節(jié)點(diǎn)。播放器模塊基于開(kāi)源的Gstreamer多媒體框架,Gstreamer是一個(gè)跨平臺(tái)的基于 管道的多媒體框架,采用Gstreamer使本系統(tǒng)具有更好的可移植性。播放器模塊完成的主 要功能包括(1)采用線程通信的網(wǎng)絡(luò)通信(socket通信)的方式,從P2P引擎模塊獲取視音頻 數(shù)據(jù)(2)將獲得的音視頻混合數(shù)據(jù)(TS封裝)解復(fù)用成音頻數(shù)據(jù)(MP3編碼)和視頻數(shù) 據(jù)(H. 264編碼)(3)調(diào)用DMAI接口,將已分離的音視頻分別送到DSP端,控制DSP端的解碼器,解碼音視頻數(shù)據(jù),其中,視頻被解碼成YUV數(shù)據(jù)。(4)通過(guò)DMAI庫(kù)提供的接口,控制硬件處理已經(jīng)解碼的音頻數(shù)據(jù)和視頻數(shù)據(jù),實(shí)現(xiàn)音視頻的播放用戶界面(UI)模塊,包含(1)基于Qt設(shè)計(jì)UI模塊(2)顯示從控制模塊獲取的節(jié)目列表,并周期更新,或者用戶主動(dòng)更新· UI請(qǐng)求控制模塊 控制模塊將請(qǐng)求傳遞至P2P模塊· P2P模塊將節(jié)目列表傳遞給控制模塊眷控制模塊將節(jié)目列表傳遞給UI模塊
(3)根據(jù)節(jié)目類別分類顯示,可更改節(jié)目的分類依據(jù)。(4)顯示節(jié)目的受歡迎程度,并可排序顯示(5)顯示節(jié)目的網(wǎng)絡(luò)狀態(tài),并可排序顯示控制模塊負(fù)責(zé)整個(gè)程序的運(yùn)行狀態(tài),完成的主要功能有(1)控制P2P引擎模塊、播放器模塊和用戶界面(UI)模塊運(yùn)行狀態(tài)(2)控制整個(gè)程序的流程(3)處理各個(gè)模塊的請(qǐng)求,實(shí)現(xiàn)模塊間的相互通信(4)相應(yīng)用戶的遙控器請(qǐng)求,執(zhí)行相應(yīng)的命令,將產(chǎn)生的信號(hào)發(fā)送給UI模塊,更新相應(yīng)的UI界面本發(fā)明的有益效果是本發(fā)明基于達(dá)芬奇DM6446平臺(tái)上設(shè)計(jì)一種嵌入式P2P流媒 體直播系統(tǒng)的實(shí)現(xiàn)方法,可充分利用閑置的用戶資源,有效地降低服務(wù)器壓力,提高可容納 用戶的數(shù)量。本方法采用模塊化設(shè)計(jì),模塊之間分工明確,耦合性低,從而具有較好的可維 護(hù)性和可擴(kuò)展性,可以有效地縮短開(kāi)發(fā)周期,降低開(kāi)發(fā)成本。本方法雖然基于DM6446平臺(tái) 設(shè)計(jì),但可提供良好的可移植性,根據(jù)各平臺(tái)的不同修改相關(guān)模塊(如若解碼器不同,可只 修改播放器模塊)即可方便地移植到其他平臺(tái)。
圖1基于DM6446的P2P流媒體直播系統(tǒng)終端的功能框圖;圖2系統(tǒng)運(yùn)行流程框圖;圖3P2P流媒體網(wǎng)絡(luò)拓?fù)鋱D;圖4播放節(jié)目時(shí)主要模塊時(shí)序圖。
具體實(shí)施例方式下面結(jié)合附圖與實(shí)施例對(duì)本發(fā)明做進(jìn)一步說(shuō)明。本發(fā)明設(shè)計(jì)的系統(tǒng)如圖3所示,它由若干個(gè)通過(guò)網(wǎng)絡(luò)連接在一起的達(dá)芬奇數(shù)字平 臺(tái)組成,各達(dá)芬奇數(shù)字平臺(tái)采用ARM+DSP雙核架構(gòu),如圖1所示,ARM模塊1作為通用處理 器運(yùn)行主程序,DSP模塊2作為協(xié)處理器負(fù)責(zé)音頻和視頻的解碼;其中,ARM模塊1包含P2P 引擎模塊8、播放器模塊6、UI模塊5和控制模塊7,P2P引擎模塊8負(fù)責(zé)從網(wǎng)絡(luò)中獲取需要 的音視頻數(shù)據(jù),播放器模塊6負(fù)責(zé)播放從P2P引擎模塊8獲取的數(shù)據(jù),UI模塊5負(fù)責(zé)為用戶 提供良好的界面,控制模塊7與UI模塊5、播放器模塊6和P2P模塊8連接,配合UI模塊5 負(fù)責(zé)控制各個(gè)模塊的運(yùn)行狀態(tài)并響應(yīng)用戶的遙控器按鍵操作;播放器模塊6分別與顯示器 3和音頻設(shè)備4連接;UI模塊5與顯示器3連接。P2P引擎模塊8根據(jù)用戶的需求,連接系統(tǒng)中的Tracker,獲取相應(yīng)節(jié)目的較好的 節(jié)點(diǎn)列表,然后連接已知節(jié)點(diǎn),如連接的節(jié)點(diǎn)數(shù)目不夠,啟動(dòng)節(jié)點(diǎn)尋找算法尋找新的節(jié)點(diǎn); 與已連接的節(jié)點(diǎn)交互數(shù)據(jù);周期性的向Tracker和已連接的節(jié)點(diǎn)報(bào)告自己的狀態(tài);周期性 的檢測(cè)已連接節(jié)點(diǎn)的狀態(tài)并給其打分,斷開(kāi)分?jǐn)?shù)最低的節(jié)點(diǎn),并與新的鄰居節(jié)點(diǎn)建立連接。播放器模塊6從P2P引擎模塊8獲取音視頻數(shù)據(jù),將獲得的音視頻混合數(shù)據(jù)解復(fù) 用成音頻數(shù)據(jù)和視頻數(shù)據(jù),將已分離的音視頻數(shù)據(jù)分別送到DSP模塊2讓其解碼,實(shí)現(xiàn)音視頻的播放。UI模塊5為基于Qt4的UI模塊,它顯示從控制模塊7獲取的節(jié)目列表,并周期更 新,或者用戶主動(dòng)更新;根據(jù)節(jié)目類別分類顯示,并更改節(jié)目的分類依據(jù);顯示節(jié)目的受歡 迎程度,并排序顯示;顯示節(jié)目的網(wǎng)絡(luò)狀態(tài),并排序顯示。控制模塊7控制P2P引擎模塊8、播放器模塊6和UI模塊5的狀態(tài),處理各個(gè)模塊 的請(qǐng)求,實(shí)現(xiàn)模塊間的相互通信,響應(yīng)用戶的遙控器請(qǐng)求,執(zhí)行相應(yīng)的命令,更新相應(yīng)的UI 模塊界面。下面介紹本系統(tǒng)運(yùn)行的流程,如圖2所示??刂颇K7首先啟動(dòng),初始化各個(gè)模塊需要的環(huán)境。然后啟動(dòng)P2P引擎模塊8 (整 個(gè)P2P網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖4所示),P2P引擎模塊8連接Tracker服務(wù)器,獲取最新的節(jié) 目列表??刂颇K7將獲取的節(jié)目列表作為參數(shù)啟動(dòng)UI模塊5,UI模塊5在顯示器3上繪 制用戶界面,同時(shí)控制模塊7安裝遙控器的各個(gè)按鍵的處理函數(shù)。這時(shí),系統(tǒng)可以接受用戶 的按鍵交互。用戶按鍵時(shí),控制模塊7處理按鍵請(qǐng)求,并產(chǎn)生相應(yīng)的信號(hào)發(fā)送給UI模塊5,UI模 塊5根據(jù)信號(hào)更新,當(dāng)用戶選擇想觀看的節(jié)目,按鍵后,流程如圖4所示,控制模塊5處理按 鍵請(qǐng)求,發(fā)送信號(hào)給UI模塊5,UI模塊5將想觀看的節(jié)目參數(shù)傳給控制模塊7,控制模塊7 再將節(jié)目參數(shù)傳給P2P引擎模塊8,同時(shí)啟動(dòng)播放器模塊6。P2P引擎模塊8向Tracker請(qǐng)求相應(yīng)節(jié)目的節(jié)點(diǎn)列表,Tracker應(yīng)答并傳送給P2P 引擎模塊8節(jié)點(diǎn)列表。P2P引擎模塊8測(cè)試已知節(jié)點(diǎn)的的RTT,連接RTT相應(yīng)較小的4個(gè) 節(jié)點(diǎn)。之后,P2P引擎模塊8與已連接的節(jié)點(diǎn)交互數(shù)據(jù),同時(shí)周期性的執(zhí)行以下動(dòng)作告訴 Tracker自己的狀態(tài);告訴已連接節(jié)點(diǎn)自己的狀態(tài);評(píng)測(cè)已連接的節(jié)點(diǎn),斷開(kāi)評(píng)價(jià)最低的一 個(gè)節(jié)點(diǎn)并重新選擇節(jié)點(diǎn)連接;與已連接的用戶交互更新節(jié)點(diǎn)鏈表。播放器模塊6通過(guò)socket線程通信的方式獲取P2P引擎模塊的音視頻數(shù)據(jù),這時(shí) 音視頻是混合的(TS格式),播放器模塊6首先解復(fù)用音視頻,然后通過(guò)調(diào)用DMAI接口 9, 分別將編碼的音頻數(shù)據(jù)(MP3)和視頻數(shù)據(jù)(H. 264)傳送給DSP解碼器10,通過(guò)調(diào)用DMAI庫(kù) 接口,控制/dev/dsp播放解碼后的音頻數(shù)據(jù),控制/dev/fb/Ι播放解碼后的視頻數(shù)據(jù)。當(dāng) 播放器模塊6可以播放時(shí),通知控制模塊7,控制模塊7通知UI模塊5顯示媒體的播放。UI模塊5啟動(dòng)后,周期性的更新節(jié)目列表。更新節(jié)目列表的請(qǐng)求通過(guò)控制模塊7 轉(zhuǎn)發(fā)給P2P引擎模塊8,P2P引擎模塊8將更新后的節(jié)目列表通過(guò)控制模塊7再轉(zhuǎn)發(fā)給UI 模塊5,UI模塊5根據(jù)需要自己更新UI界面。當(dāng)用戶切換頻道時(shí),控制模塊7將新的節(jié)目 參數(shù)傳遞給P2P引擎模塊8,P2P引擎模塊8主動(dòng)斷開(kāi)與現(xiàn)有節(jié)點(diǎn)的連接,清空節(jié)點(diǎn)列表,告 訴Tracker自己已經(jīng)切換頻道,同時(shí)向Tracker請(qǐng)求新的節(jié)目的節(jié)點(diǎn)列表,此后的步驟與上 述節(jié)目播放相同。
權(quán)利要求
一種基于DM6446的P2P流媒體直播系統(tǒng),其特征是,它由若干個(gè)通過(guò)網(wǎng)絡(luò)連接在一起的達(dá)芬奇數(shù)字平臺(tái)組成,各達(dá)芬奇數(shù)字平臺(tái)采用ARM+DSP雙核架構(gòu),ARM模塊作為通用處理器運(yùn)行主程序,DSP模塊作為協(xié)處理器負(fù)責(zé)音頻和視頻的解碼;其中,ARM模塊包含P2P引擎模塊、播放器模塊、UI模塊和控制模塊,P2P引擎模塊與以太網(wǎng)連接,負(fù)責(zé)從網(wǎng)絡(luò)中獲取需要的音視頻數(shù)據(jù),播放器模塊負(fù)責(zé)播放從P2P引擎模塊獲取的數(shù)據(jù),UI模塊負(fù)責(zé)為用戶提供良好的界面,控制模塊與UI模塊、播放器模塊和P2P模塊連接,配合UI模塊負(fù)責(zé)控制各個(gè)模塊的運(yùn)行狀態(tài)并響應(yīng)用戶的遙控器按鍵操作;播放器模塊分別與顯示器和音頻設(shè)備連接;UI模塊與顯示器連接。
2.如權(quán)利要求1所述的基于DM6446的P2P流媒體直播系統(tǒng),其特征是,所述P2P引擎 模塊根據(jù)用戶的需求,連接系統(tǒng)中的Tracker,獲取相應(yīng)節(jié)目的較好的節(jié)點(diǎn)列表,然后連接 已知節(jié)點(diǎn),如連接的節(jié)點(diǎn)數(shù)目不夠,啟動(dòng)節(jié)點(diǎn)尋找算法尋找新的節(jié)點(diǎn);與已連接的節(jié)點(diǎn)交互 數(shù)據(jù);周期性的向Tracker和已連接的節(jié)點(diǎn)報(bào)告自己的狀態(tài);周期性的檢測(cè)已連接節(jié)點(diǎn)的 狀態(tài)并給其打分,斷開(kāi)分?jǐn)?shù)最低的節(jié)點(diǎn),并與新的鄰居節(jié)點(diǎn)建立連接。
3.如權(quán)利要求1所述的基于DM6446的P2P流媒體直播系統(tǒng),其特征是,所述播放器模 塊從P2P引擎模塊獲取音視頻數(shù)據(jù),將獲得的音視頻混合數(shù)據(jù)解復(fù)用成音頻數(shù)據(jù)和視頻數(shù) 據(jù),將已分離的音視頻數(shù)據(jù)分別送到DSP端讓其解碼,實(shí)現(xiàn)音視頻的播放。
4.如權(quán)利要求1所述的基于DM6446的P2P流媒體直播系統(tǒng),其特征是,所述UI模塊為 基于Qt4的UI模塊,它顯示從控制模塊獲取的節(jié)目列表,并周期更新,或者用戶主動(dòng)更新 根據(jù)節(jié)目類別分類顯示,并更改節(jié)目的分類依據(jù);顯示節(jié)目的受歡迎程度,并排序顯示;顯 示節(jié)目的網(wǎng)絡(luò)狀態(tài),并排序顯示。
5.如權(quán)利要求1所述的基于DM6446的P2P流媒體直播系統(tǒng),其特征是,所述控制模塊 控制P2P引擎模塊、播放器模塊和UI模塊的狀態(tài),處理各個(gè)模塊的請(qǐng)求,實(shí)現(xiàn)模塊間的相互 通信,響應(yīng)用戶的遙控器請(qǐng)求,執(zhí)行相應(yīng)的命令,更新相應(yīng)的UI模塊界面。
6.一種權(quán)利要求1所述的基于DM6446的P2P流媒體直播系統(tǒng)的工作方法,其特征是, 它的步驟為1)控制模塊首先啟動(dòng),初始化各個(gè)模塊需要的環(huán)境;2)然后啟動(dòng)P2P模塊,P2P模塊連接Tracker服務(wù)器,獲取最新的節(jié)目列表;3)控制模塊將獲取的節(jié)目列表作為參數(shù)啟動(dòng)UI模塊,UI模塊在顯示器上繪制用戶界 面,同時(shí)控制模塊安裝遙控器的各個(gè)按鍵的處理函數(shù);此時(shí),系統(tǒng)接受用戶的按鍵交互;4)用戶按鍵時(shí),控制模塊處理按鍵請(qǐng)求,并產(chǎn)生相應(yīng)的信號(hào)發(fā)送給UI模塊,UI模塊根 據(jù)信號(hào)更新,當(dāng)用戶選擇想觀看的節(jié)目,按鍵后,控制模塊處理按鍵請(qǐng)求,發(fā)送信號(hào)給UI模 塊,UI模塊將想觀看的節(jié)目參數(shù)傳給控制模塊,控制模塊再將節(jié)目參數(shù)傳給P2P模塊,同時(shí) 啟動(dòng)播放器模塊;5)播放器模塊通過(guò)socket線程通信的方式獲取P2P模塊的音視頻數(shù)據(jù),處理后通知控 制模塊,控制模塊通知UI模塊顯示媒體的播放;6)當(dāng)用戶切換頻道時(shí),控制模塊將新的節(jié)目參數(shù)傳遞給P2P模塊,P2P模塊主動(dòng)斷開(kāi)與 現(xiàn)有節(jié)點(diǎn)的連接,清空節(jié)點(diǎn)列表,告訴Tracker自己已經(jīng)切換頻道,同時(shí)向Tracker請(qǐng)求新 的節(jié)目的節(jié)點(diǎn)列表,然后返回步驟3)。
7.如權(quán)利要求6所述的基于DM6446的P2P流媒體直播系統(tǒng)的工作方法,其特征是,所述步驟3)中,UI模塊啟動(dòng)后,周期性的更新節(jié)目列表,更新節(jié)目列表的請(qǐng)求通過(guò)控制模塊 轉(zhuǎn)發(fā)給P2P模塊,P2P模塊將更新后的節(jié)目列表通過(guò)控制模塊再轉(zhuǎn)發(fā)給UI模塊,UI模塊根 據(jù)需要自己更新UI界面。
8.如權(quán)利要求6所述的基于DM6446的P2P流媒體直播系統(tǒng)的工作方法,其特征是,所 述步驟2)中,P2P模塊向Tracker請(qǐng)求相應(yīng)節(jié)目的節(jié)點(diǎn)列表,Tracker應(yīng)答并傳送給P2P模 塊節(jié)點(diǎn)列表。P2P模塊測(cè)試已知節(jié)點(diǎn)的的RTT,連接RTT相應(yīng)較小的4個(gè)節(jié)點(diǎn)。之后,P2P模 塊與已連接的節(jié)點(diǎn)交互數(shù)據(jù),同時(shí)周期性的執(zhí)行以下動(dòng)作告訴Tracker自己的狀態(tài);告訴 已連接節(jié)點(diǎn)自己的狀態(tài);評(píng)測(cè)已連接的節(jié)點(diǎn),斷開(kāi)評(píng)價(jià)最低的一個(gè)節(jié)點(diǎn)并重新選擇節(jié)點(diǎn)連 接;與已連接的用戶交互更新節(jié)點(diǎn)鏈表。
9.如權(quán)利要求6所述的基于DM6446的P2P流媒體直播系統(tǒng)的工作方法,其特征是,所 述步驟5)中,播放器模塊獲取的音視頻是混合的TS格式,播放器模塊首先解復(fù)用音視頻, 然后通過(guò)調(diào)用DMAI的接口,分別將編碼的音頻數(shù)據(jù)MP3和視頻數(shù)據(jù)H. 264傳送給DSP端的 解碼器,通過(guò)調(diào)用DMAI庫(kù)接口,控制/dev/dsp播放解碼后的音頻數(shù)據(jù),控制/dev/fb/1播 放解碼后的視頻數(shù)據(jù)。
全文摘要
本發(fā)明涉及一種基于DM6446的嵌入式P2P流媒體直播系統(tǒng)實(shí)現(xiàn)方法,具有設(shè)計(jì)合理、性價(jià)比高、播放效果良好等優(yōu)點(diǎn),它由若干個(gè)通過(guò)網(wǎng)絡(luò)連接在一起的達(dá)芬奇數(shù)字平臺(tái)組成,各達(dá)芬奇數(shù)字平臺(tái)采用ARM+DSP雙核架構(gòu),ARM模塊為通用處理器運(yùn)行主程序,DSP模塊為協(xié)處理器負(fù)責(zé)音頻和視頻的解碼;其中,ARM模塊包含P2P引擎模塊、播放器模塊、UI模塊和控制模塊,P2P引擎模塊與以太網(wǎng)連接,從網(wǎng)絡(luò)中獲取需要的音視頻數(shù)據(jù),播放器模塊負(fù)責(zé)播放從P2P引擎模塊獲取的數(shù)據(jù),UI模塊負(fù)責(zé)為用戶提供良好的界面,控制模塊與UI模塊、播放器模塊和P2P模塊連接,配合UI模塊負(fù)責(zé)控制各個(gè)模塊的運(yùn)行狀態(tài)并響應(yīng)用戶的遙控器按鍵操作;播放器模塊分別與顯示器和音頻設(shè)備連接;UI模塊與顯示器連接。
文檔編號(hào)H04L29/06GK101827116SQ20101001130
公開(kāi)日2010年9月8日 申請(qǐng)日期2010年1月4日 優(yōu)先權(quán)日2010年1月4日
發(fā)明者任振峰, 劉琚, 王延偉, 秦豐林, 許宏吉, 陳長(zhǎng)兵 申請(qǐng)人:山東大學(xué)