0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用插即用UPnP擴(kuò)展實(shí)現(xiàn)播放器的設(shè)計(jì)

電子設(shè)計(jì) ? 來(lái)源:郭婷 ? 作者:電子設(shè)計(jì) ? 2019-01-14 08:32 ? 次閱讀

1 引言

通用型即插即用UPnP(Universal Plug and Play)是PnP(Device Plug and Play)的擴(kuò)展,它可發(fā)現(xiàn)和控制各種網(wǎng)絡(luò)設(shè)備,如網(wǎng)絡(luò)打印機(jī)、Internet網(wǎng)關(guān)等,并能提供相應(yīng)服務(wù)。但UPnP不是即插即用的簡(jiǎn)單擴(kuò)展,它支持“0配置”和無(wú)線網(wǎng)絡(luò),可自動(dòng)發(fā)現(xiàn)其他供應(yīng)商提供的設(shè)備。在UPnP協(xié)議下,一個(gè)設(shè)備可動(dòng)態(tài)的加入網(wǎng)絡(luò),獲得IP地址,廣播其功能,并了解其他設(shè)備的功能。很多種類的設(shè)備都可以使用UPnP協(xié)議,包括智能設(shè)備,無(wú)線設(shè)備。

UPnP使用標(biāo)準(zhǔn)的TCP/IP和Internet協(xié)議,能夠很好的在現(xiàn)存網(wǎng)絡(luò)中使用,使用這些標(biāo)準(zhǔn)協(xié)議使UPnP可從已有的各種經(jīng)驗(yàn)和知識(shí)中獲利,打破各種信息孤島,越過(guò)各種物理層,可以是有線的,也可以是無(wú)線的,具有設(shè)備間的相互協(xié)作基本特點(diǎn)。

目前,DLNA(現(xiàn)代數(shù)字家庭)是一個(gè)非?;钴S的領(lǐng)域,UPnP是其中的主流協(xié)議之一。DLNA/UPnP的遠(yuǎn)景是構(gòu)建一個(gè)有線與無(wú)線的互操作網(wǎng)絡(luò),由個(gè)人電腦、家用電器和移動(dòng)設(shè)備組成,在家庭內(nèi)部實(shí)現(xiàn)設(shè)備互聯(lián)和網(wǎng)絡(luò)控制,從而實(shí)現(xiàn)影音娛樂(lè)、內(nèi)容共享。

UPnP組成包括設(shè)備節(jié)點(diǎn),服務(wù)節(jié)點(diǎn)和控制節(jié)點(diǎn)。在UPnP網(wǎng)絡(luò)中,最小的可控制單位是服務(wù),采用一系列的狀態(tài)變量描述服務(wù)的“行為”和“狀態(tài)”。UPnP使用各種現(xiàn)存的標(biāo)準(zhǔn)協(xié)議口,包括TCP/IP、HTTP,HTTPU、SSDP、GENA。使用標(biāo)準(zhǔn)化的協(xié)議保證了各種設(shè)備間的互操作性??傊?,UPnP建立在各種協(xié)議之上,而不是API上,這使其能應(yīng)用在各種不同的平臺(tái)上。同時(shí),建立在各種現(xiàn)存的標(biāo)準(zhǔn)之上,具備很強(qiáng)的靈活性,可很好的適應(yīng)現(xiàn)在和將來(lái)各種網(wǎng)絡(luò)設(shè)備的需求。

2 UPnP媒體播放器設(shè)計(jì)的基本思想

2.1 功能描述

UPnP網(wǎng)絡(luò)媒體播放器可以提供從網(wǎng)絡(luò)中獲取的各種娛樂(lè)信息,它允許控制節(jié)點(diǎn)對(duì)其進(jìn)行控制。此外,根據(jù)所支持協(xié)議的不同,播放器也可以提供對(duì)數(shù)據(jù)流進(jìn)行控制的功能。一個(gè)標(biāo)準(zhǔn)的UPnP網(wǎng)絡(luò)媒體播放器包含播放控制服務(wù)、連接管理服務(wù)和媒體傳輸服務(wù)。任何媒體播放器都至少提供兩種服務(wù):播放控制服務(wù)和連接管理服務(wù),媒體傳輸服務(wù)是可選的,它取決于設(shè)備所支持的傳輸協(xié)議。這里設(shè)計(jì)使用的協(xié)議是HTTP GET,能提供媒體傳輸服務(wù),因而可以在數(shù)據(jù)傳輸過(guò)程中控制數(shù)據(jù)流。

2.2 過(guò)程描述

媒體播放器可由控制節(jié)點(diǎn)在局域網(wǎng)內(nèi)對(duì)媒體服務(wù)器所提供的媒體進(jìn)行播放控制。媒體服務(wù)器、播放器、控制節(jié)點(diǎn)3者的互動(dòng)過(guò)程如下:控制節(jié)點(diǎn)使用SSDP協(xié)議在局域網(wǎng)內(nèi)發(fā)現(xiàn)一個(gè)或多個(gè)媒體服務(wù)器和媒體播放器,首先定位媒體服務(wù)器上的資源,并需明確在服務(wù)器和播放器之間傳輸數(shù)據(jù)所需的協(xié)議和它們都支持的數(shù)據(jù)格式。這些傳輸參數(shù)都被確定后,控制節(jié)點(diǎn)就可以對(duì)傳輸?shù)膬?nèi)容進(jìn)行控制,如播放、暫停、停止等。真正的數(shù)據(jù)傳輸是在服務(wù)器和媒體播放器之間直接進(jìn)行的,并且獨(dú)立于控制節(jié)點(diǎn),因此不包含在UPnP內(nèi)。即內(nèi)容的傳輸是使用UPnP以外的協(xié)議。之后,控制節(jié)點(diǎn)使用媒體服務(wù)器所提供的內(nèi)容目錄服務(wù)來(lái)獲取該服務(wù)器所支持的協(xié)議和數(shù)據(jù)類型,使用媒體播放器的連接管理服務(wù)來(lái)獲取相應(yīng)的信息,比較后選定雙方都支持的傳輸協(xié)議和數(shù)據(jù)類型。在本設(shè)計(jì)中,使用的傳輸協(xié)議是HTTP GET,所支持的數(shù)據(jù)格式為MP3。最后,控制節(jié)點(diǎn)使用媒體播放器提供的媒體傳輸服務(wù)來(lái)控制數(shù)據(jù)流。

3 UPnP媒體播放器的實(shí)現(xiàn)方法

設(shè)計(jì)使用Intel公司的開(kāi)源UPnP開(kāi)發(fā)工具Device-Builder,在Microsoft.NET Framwork下開(kāi)發(fā)。DeviceBuilder生成的UPnP協(xié)議棧由MiniServer模塊、HTTP模塊、線程庫(kù)模塊、XML解析模塊及協(xié)議棧編程接口等模塊組成,負(fù)責(zé)提供基本的UPnP功能,具體實(shí)現(xiàn)流程如下。

3.1 生成UPnP框架

使用DeviceBuilder生成相應(yīng)平臺(tái)上的代碼,由于是在Microsoft.NET Framwork下開(kāi)發(fā),所以選擇的Target Platform應(yīng)為:Windows 98,NT,XP。具體功能有:尋址、發(fā)現(xiàn)、描述、控制、發(fā)布事件。各功能組合在一起,為媒體播放器提供UPnP能力,但I(xiàn)ntel開(kāi)發(fā)包生成的僅是一個(gè)框架,還要為其添加解碼、控制功能及對(duì)播放列表的識(shí)別等。

3.2 添加媒體解碼庫(kù)

下載一個(gè)開(kāi)源的播放器,將其改造成媒體解碼庫(kù)。即將播放器的功能抽象成函數(shù)以供外界調(diào)用,主要函數(shù)如下:

int decodestart(char*pBuffer):調(diào)用該函數(shù)開(kāi)始播放,相當(dāng)于原來(lái)播放器的play功能。pBuffer是一個(gè)公共緩沖區(qū),存放已下載的媒體數(shù)據(jù)。

extem void Read(int*position):負(fù)責(zé)向公共緩沖區(qū)中裝入已下載的媒體數(shù)據(jù),position指針則對(duì)應(yīng)于公共緩沖區(qū)中應(yīng)裝入的位置。由于一般下載的速度遠(yuǎn)大于解碼速度,所以應(yīng)注意裝入新數(shù)據(jù)時(shí)不要將尚未解碼的數(shù)據(jù)覆蓋掉。

extern void Decode(int*Dposition):當(dāng)外界調(diào)用該函數(shù)時(shí)開(kāi)始解碼,Dposition則指示對(duì)應(yīng)于公共緩沖區(qū)的解碼位置。

此外還有pause,resume,stop等函數(shù),均對(duì)應(yīng)于原播放器的相應(yīng)功能。將已實(shí)現(xiàn)的媒體解碼庫(kù)添加到生成的UPnP框架,再在UPnP框架中相應(yīng)的位置調(diào)用庫(kù)文件中的函數(shù)以實(shí)現(xiàn)解碼、播放控制。

3.3 播放控制功能實(shí)現(xiàn)

添加媒體解碼庫(kù)后。還需添加:數(shù)據(jù)流實(shí)時(shí)控制能力、根據(jù)播放器的狀態(tài)發(fā)布消息。詳細(xì)過(guò)程如下:

(1)設(shè)置傳輸?shù)刂?當(dāng)控制節(jié)點(diǎn)從媒體服務(wù)器選定一首歌時(shí),則觸發(fā)設(shè)置傳輸?shù)刂?由媒體傳輸服務(wù)提供)這一動(dòng)作。這時(shí),如果播放器正在播放,首先要停止播放器的解碼動(dòng)作,為新歌曲的播放做準(zhǔn)備。接下來(lái),在播放器獲得所選定歌曲的地址后(由控制節(jié)點(diǎn)提供),直接從媒體服務(wù)器中下載這首歌曲,在此項(xiàng)目中,播放器采用HTTP GET下載。下載前,還需對(duì)該URL進(jìn)行判斷,查看下載的是否為播放列表,如果是播放列表,就不能將其直接傳給播放器,而要繼續(xù)從播放列表提供的地址中得到第1首歌的URL,再?gòu)拿襟w服務(wù)器中下載。最后,調(diào)用函數(shù)SetLastChange發(fā)布自己的狀態(tài)信息。

(2)數(shù)據(jù)流實(shí)時(shí)控制在下載的大小達(dá)到一定長(zhǎng)度時(shí),觸發(fā)傳輸控制服務(wù)中Play這一動(dòng)作,這時(shí),主線程創(chuàng)建一個(gè)解碼線程,該線程調(diào)用媒體解碼庫(kù)中的decodestart(char*pBuffer)函數(shù),對(duì)存放在公用緩沖區(qū)中的數(shù)據(jù)進(jìn)行解碼并播放,進(jìn)行同步控制,以免當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞或系統(tǒng)內(nèi)存不足時(shí),緩沖區(qū)中的播放指針超過(guò)下載指針而導(dǎo)致意外。如果選定的是含有多首歌曲的播放列表,則過(guò)程類似,只不過(guò)在一首歌曲播放完時(shí)會(huì)自動(dòng)從媒體服務(wù)器端下載另一首歌曲,一邊下載,一邊播放。當(dāng)用戶點(diǎn)擊next,previous時(shí),首先檢查之前保存的URL是否為播放列表,若不是,則輸出錯(cuò)誤信息;若是,則停止播放器的解碼動(dòng)作,撤銷當(dāng)前解碼線程,為新歌的播放做準(zhǔn)備。由播放列表得到下一首歌的地址和端口號(hào),開(kāi)始下載數(shù)據(jù),并創(chuàng)建新的解碼線程,最后,發(fā)布狀態(tài)信息。

所有的實(shí)際操作,如play,stop,pause,…,均與UPnP無(wú)關(guān),它只實(shí)現(xiàn)消息傳遞??刂乒?jié)點(diǎn)負(fù)責(zé)接收命令傳遞給播放器,再由播放器中的媒體解碼庫(kù)完成解碼、播放、暫停、停止等功能。媒體服務(wù)器、控制節(jié)點(diǎn)、媒體播放器的互動(dòng)如圖1所示。

采用插即用UPnP擴(kuò)展實(shí)現(xiàn)播放器的設(shè)計(jì)

4 測(cè)試與分析

系統(tǒng)開(kāi)發(fā)完成后,在兩臺(tái)同處于一個(gè)局域網(wǎng)的臺(tái)式機(jī)上進(jìn)行測(cè)試,測(cè)試流程如下:首先在一臺(tái)機(jī)上啟動(dòng)Intel UP-nP工具集中的AVWizard程序,該程序其實(shí)就是媒體服務(wù)器和控制節(jié)點(diǎn)的合體,它既能提供媒體服務(wù)器的各種功能,也可提供控制點(diǎn)的功能。在另一臺(tái)機(jī)上啟動(dòng)媒體播放器,AVWizard首先掃描網(wǎng)絡(luò)中有無(wú)它所支持的設(shè)備,發(fā)現(xiàn)媒體播放器后,獲得該播放器的設(shè)備描述文檔,并顯示播放器的名稱。用AvWizard選定一首MP3,并將地址發(fā)送給指定的媒體播放器(UPnP MediaRender)。播放器開(kāi)始從媒體服務(wù)器指定的地址下載MP3,下載到一定長(zhǎng)度時(shí)開(kāi)始播放,詳細(xì)過(guò)程描述如下:

采用插即用UPnP擴(kuò)展實(shí)現(xiàn)播放器的設(shè)計(jì)

采用插即用UPnP擴(kuò)展實(shí)現(xiàn)播放器的設(shè)計(jì)

由圖2可知,當(dāng)AVWizard選定一首歌曲時(shí),播放器輸出為:“Invoke:UPnPAVTransport_SetAVTransportURI…”。觸發(fā)播放器中媒體傳輸服務(wù)中的設(shè)置傳輸?shù)刂愤@一動(dòng)作.告訴播放器所需下載的媒體所在的URL和端口號(hào),接著在AV Wizard中點(diǎn)擊play時(shí),可以看到圖3中播放器輸出為:“Invoke:UP-nPAVTransport_Play(0,1)”,觸發(fā)播放器媒體傳輸服務(wù)中的play動(dòng)作,開(kāi)始下載要播放的內(nèi)容,同時(shí),播放器開(kāi)始創(chuàng)建解碼線程,輸出:“Create thread success!!”,則表示解碼線程創(chuàng)建成功,在該解碼線程中調(diào)用媒體解碼庫(kù)中的函數(shù)。媒體解碼庫(kù)出:“…The main proccess start…player_init”,初始化媒體解碼庫(kù),解碼并開(kāi)始播放音樂(lè)。

5 結(jié)論

由此可見(jiàn),該媒體播放器實(shí)現(xiàn)成功,但存在不足之處:由于直接在Intel公司開(kāi)源UPnP開(kāi)發(fā)工具DeviceBuilder生成的代碼上進(jìn)行開(kāi)發(fā),所以界面不夠友好。實(shí)現(xiàn)媒體播放器的創(chuàng)新點(diǎn)如下:(1)直接在Intel生成的UPnP框架上進(jìn)行開(kāi)發(fā),與現(xiàn)有的許多使用開(kāi)源UPnP SDK開(kāi)發(fā)相比,無(wú)需進(jìn)行設(shè)備初始化和注冊(cè)工作,亦無(wú)需對(duì)UPnP的工作過(guò)程進(jìn)行手動(dòng)操作,使開(kāi)發(fā)者的注意力可以完全集中在所需添加的服務(wù)上,無(wú)需關(guān)注繁瑣的協(xié)議通信細(xì)節(jié),簡(jiǎn)化UPnP應(yīng)用的設(shè)計(jì)開(kāi)發(fā);但缺點(diǎn)是由于目前業(yè)界有許多SDK開(kāi)發(fā)包具有類似的功能,直接使用生成的UPnP框架不利于按需更換協(xié)議庫(kù)。(2)可在不同的操作系統(tǒng)上生成相應(yīng)的協(xié)議框架,屏蔽開(kāi)發(fā)平臺(tái)的差異,方便開(kāi)發(fā)人員在合適的平臺(tái)上實(shí)現(xiàn)所需的服務(wù)。(3)服務(wù)本身也可以作為模塊添加到應(yīng)用程序中,如媒體解碼庫(kù)就是作為一個(gè)獨(dú)立的模塊添加,實(shí)現(xiàn)松散耦合的應(yīng)用程序和組件,可根據(jù)不斷變化的情況和需求來(lái)實(shí)現(xiàn)服務(wù),為媒體播放器的功能擴(kuò)展提供了很好的基礎(chǔ)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 播放器
    +關(guān)注

    關(guān)注

    5

    文章

    388

    瀏覽量

    37275
  • 協(xié)議
    +關(guān)注

    關(guān)注

    2

    文章

    590

    瀏覽量

    39062
  • 有線
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    16448
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    靈活電影播放器視頻/音頻播放軟件

    東京,2008年4月24日--瑞薩科技公司(Renesas Techno logy Corp.)今天宣布,推出為采用移動(dòng)電話SH-Mobile*1應(yīng)用處理的嵌入式系統(tǒng)開(kāi)發(fā)的靈活電影播放器
    發(fā)表于 03-06 19:52

    網(wǎng)絡(luò)播放器端口防護(hù)

    本帖最后由 科炬電子 于 2017-6-20 11:09 編輯 隨著網(wǎng)絡(luò)播放器走進(jìn)千家萬(wàn)戶,網(wǎng)絡(luò)播放器的工作環(huán)境和氣候條件要求也越來(lái)越高。不但要適應(yīng)在高溫或低溫的氣候正常工作,也要保證在復(fù)雜
    發(fā)表于 06-20 11:08

    請(qǐng)問(wèn)如何實(shí)現(xiàn)一個(gè)最便宜的WAVE播放器

    設(shè)計(jì)一個(gè)WAVE播放器,播放的WAV文件存在SD卡上:基本要求為:1。MCU通過(guò)SPI口讀取SD卡上的文件2。核心系統(tǒng)成本最優(yōu)化,只需要一片MCU,和SD卡座(LPF、功放,卡,電源、按鍵、LED指示等不計(jì)成本,這些DD任何播放器
    發(fā)表于 01-21 06:36

    UPnP協(xié)議介紹和Android代碼如何實(shí)現(xiàn)

    UPnP協(xié)議介紹一. UPnP簡(jiǎn)介英文名稱:Universal Plug and Play中文譯名:通用即插即用UPnP是由“通用即插即用
    發(fā)表于 07-02 06:23

    Linux下upnp安裝與使用

    1、upnp介紹:通用即插即用(英語(yǔ):Universal Plug and Play,簡(jiǎn)稱UPnP)是由“通用即插即用論壇”(UPnP? F
    發(fā)表于 07-02 08:27

    UPnP的工作過(guò)程

    UPnP簡(jiǎn)介  通用即插即用(英語(yǔ):Universal Plug and Play,簡(jiǎn)稱UPnP)是由“通用即插即用論壇”(UPnP? Fo
    發(fā)表于 07-02 08:08

    UPnP詳細(xì)介紹 相關(guān)資料推薦

    )和公司網(wǎng)絡(luò)中的各種設(shè)備能夠相互無(wú)縫連接,并簡(jiǎn)化相關(guān)網(wǎng)絡(luò)的實(shí)現(xiàn)。UPnP通過(guò)定義和發(fā)布基于開(kāi)放、因特網(wǎng)通訊網(wǎng)協(xié)議標(biāo)準(zhǔn)的UPnP設(shè)備控制協(xié)議來(lái)實(shí)現(xiàn)這一目標(biāo)。
    發(fā)表于 07-05 06:26

    CSF文件播放器

    CSF文件播放器 CSF文件播放器 CSF文件播放器下載介紹:  csf文件播放器目前很多
    發(fā)表于 06-10 09:50 ?468次下載

    UPnP媒體播放器的研究與實(shí)現(xiàn)

     隨著數(shù)字家庭的興起,數(shù)字媒體內(nèi)容的資源共享、設(shè)備之間的智能互聯(lián)及控制變得越來(lái)越重要。UPnP(通用型即插即用)是數(shù)字家庭網(wǎng)絡(luò)中的一個(gè)主流協(xié)議。介紹UPnP架構(gòu),描
    發(fā)表于 12-29 17:06 ?24次下載

    upnp_upnp是什么意思

    upnp_upnp是什么意思,UPnP是各種各樣的智能設(shè)備、無(wú)線設(shè)備和個(gè)人電腦等實(shí)現(xiàn)遍布全球的對(duì)等網(wǎng)絡(luò)連接(P2P)的結(jié)構(gòu)。
    發(fā)表于 05-30 18:02 ?2972次閱讀

    音樂(lè)播放器

    音樂(lè)播放器,比較簡(jiǎn)單。能實(shí)現(xiàn)基本的播放停止暫停等功能。喜歡研究可以改進(jìn)
    發(fā)表于 09-09 17:32 ?38次下載

    LXE播放器

    lxe視頻播放器軟件是免費(fèi)軟件,可以完全免費(fèi)使用、可以自由傳播,exe視頻播放器用于播放屏幕錄像專家錄制的LXE和EXE格式的錄像文件,安裝后將自動(dòng)關(guān)聯(lián)LXE格式文件,通過(guò)雙擊LXE文件就可以自動(dòng)調(diào)用此
    發(fā)表于 11-23 16:14 ?0次下載

    基于Android音樂(lè)播放器的研究

    狗為代表的音樂(lè)播放器有著廣泛的消費(fèi)群體,性能品質(zhì)較優(yōu)。同時(shí),也存在很多其它不知名的音樂(lè)播放器。其中,陳文提出了將音樂(lè)播放器和手機(jī)傳感相結(jié)合,實(shí)現(xiàn)
    發(fā)表于 12-11 11:44 ?7次下載
    基于Android音樂(lè)<b class='flag-5'>播放器</b>的研究

    關(guān)于VR電影視頻播放器 盤(pán)點(diǎn)12款VR播放器

    VR電影和視頻那個(gè)播放器好,哪些播放器更為實(shí)用,由于視頻資源格式多樣,在一個(gè)播放器播放不了的視頻,在另一個(gè)播放器上也許可以,袖扣VR網(wǎng)小編
    發(fā)表于 06-27 15:50 ?12.5w次閱讀

    HarmonyOS開(kāi)發(fā)案例:【視頻播放器

    使用ArkTS語(yǔ)言實(shí)現(xiàn)視頻播放器,主要包括主頁(yè)面和視頻播放頁(yè)面
    的頭像 發(fā)表于 04-24 14:52 ?658次閱讀
    HarmonyOS開(kāi)發(fā)案例:【視頻<b class='flag-5'>播放器</b>】