![應(yīng)用于嵌入式終端的MP3流服務(wù)器的設(shè)計-_第1頁](http://file4.renrendoc.com/view/fce4a1e205cc6ce80f0ee16a2c339def/fce4a1e205cc6ce80f0ee16a2c339def1.gif)
![應(yīng)用于嵌入式終端的MP3流服務(wù)器的設(shè)計-_第2頁](http://file4.renrendoc.com/view/fce4a1e205cc6ce80f0ee16a2c339def/fce4a1e205cc6ce80f0ee16a2c339def2.gif)
![應(yīng)用于嵌入式終端的MP3流服務(wù)器的設(shè)計-_第3頁](http://file4.renrendoc.com/view/fce4a1e205cc6ce80f0ee16a2c339def/fce4a1e205cc6ce80f0ee16a2c339def3.gif)
![應(yīng)用于嵌入式終端的MP3流服務(wù)器的設(shè)計-_第4頁](http://file4.renrendoc.com/view/fce4a1e205cc6ce80f0ee16a2c339def/fce4a1e205cc6ce80f0ee16a2c339def4.gif)
![應(yīng)用于嵌入式終端的MP3流服務(wù)器的設(shè)計-_第5頁](http://file4.renrendoc.com/view/fce4a1e205cc6ce80f0ee16a2c339def/fce4a1e205cc6ce80f0ee16a2c339def5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、應(yīng)用于嵌入式終端的MP3流效勞器的設(shè)計*論文導(dǎo)讀:一種基于局域網(wǎng)傳輸并結(jié)合了嵌入式技術(shù)的智能播送系統(tǒng)得于實(shí)現(xiàn)。使用的是互聯(lián)網(wǎng)上成熟的TCP/IP傳輸協(xié)議。并同時向流效勞器申請新的數(shù)據(jù)流。關(guān)鍵詞:嵌入式,MP3文件格式,數(shù)據(jù)流,傳輸協(xié)議1、引言隨著國家信息教育化的不斷深入,多媒體教學(xué)在廣闊中小學(xué)的不斷普及,利用播送系統(tǒng)進(jìn)行語音語言教學(xué)的需求在不斷的增加,特別是音樂鈴聲的普及,英語聽力考試的實(shí)施等,對學(xué)校播送系統(tǒng)的功能、容量、音質(zhì)、智能化水平都提出了更高的要求。如何才能滿足學(xué)校對現(xiàn)代化校園播送的要求,一直是相關(guān)技術(shù)人員的設(shè)計難題,傳統(tǒng)的播送由于傳輸質(zhì)量和智能化等模擬技術(shù)局限性的限制,已經(jīng)難于符合學(xué)
2、校的數(shù)字化教學(xué)要求。隨著學(xué)校校園網(wǎng)建設(shè)的普及,一種基于局域網(wǎng)傳輸并結(jié)合了嵌入式技術(shù)的智能播送系統(tǒng)得于實(shí)現(xiàn)。該種智能播送系統(tǒng)主要由MP3流效勞器和嵌入式終端組成,使用的是互聯(lián)網(wǎng)上成熟的TCP/IP傳輸協(xié)議,具有穩(wěn)定、高音頻質(zhì)量和高智能化等優(yōu)點(diǎn),由于該系統(tǒng)相關(guān)技術(shù)具有一定的技術(shù)難度和較高的商業(yè)性,成為當(dāng)前播送產(chǎn)品方向各廠商爭相研究開發(fā)的課題或產(chǎn)品。本文將介紹智能播送系統(tǒng)里主要技術(shù)如何用Delphi開發(fā)應(yīng)用于嵌入式終端的MP3流效勞器,通過分析MP3格式和TCP/IP傳輸協(xié)議,給出流效勞器實(shí)現(xiàn)方案。2、MP3文件格式分析MP3文件是由幀(frame)構(gòu)成的,幀是MP3文件最小的組成單位。MP3的全稱
3、應(yīng)為MPEG1Layer-3音頻文件,MPEG(Moving Picture Experts Group)在漢語中譯為活動圖像專家組,特指活動影音壓縮標(biāo)準(zhǔn),MPEG音頻文件是MPEG1標(biāo)準(zhǔn)中的聲音局部,也叫MPEG音頻層,它根據(jù)壓縮質(zhì)量和編碼復(fù)雜程度劃分為三層,即Layer-1、Layer2、Layer3,且分別對應(yīng)MP1、MP2、MP3這三種聲音文件,并根據(jù)不同的用途,使用不同層次的編碼。我們的設(shè)計目的是讀出MP3文件里的數(shù)據(jù)幀(frame)內(nèi)容,并將其以流的形式傳輸?shù)礁鱾€節(jié)點(diǎn)終端。MP3文件結(jié)構(gòu)大體分為三局部:TAG_V2(ID3V2),F(xiàn)rame,TAG_V1(ID3V1)。所以下面對M
4、P3文件的三個局部進(jìn)行簡單分析。2.1、ID3v1ID3V1存放在MP3文件的末尾的128個順序存放字節(jié),主要包含了作者,作曲,專輯等信息,數(shù)據(jù)結(jié)構(gòu)定義如下: Real structureof ID3v1 tag typeTagRecord= recordHeader:array of Char; / ID3v1頭,必須為TAG;Title:array of Char;Artist:array of Char;Album:array of Char;Year:array of Char;Comment:array of Char;Genre:Byte;end;2.2、ID3V2ID3V2到現(xiàn)在
5、一共有4個版本,但流行的播放軟件一般只支持第3版,既ID3v2.3。ID3V2包含了作者,作曲,專輯等信息,長度不固定,擴(kuò)展了ID3V1的信息量。由于ID3V1已經(jīng)記錄在MP3文件的末尾,ID3V2就只能記錄在MP3文件的首部了。因此,ID3V2結(jié)構(gòu)比ID3V1的結(jié)構(gòu)要復(fù)雜得多,但比前者全面且可以伸縮和擴(kuò)展。要準(zhǔn)確地讀出MP3文件的音頻實(shí)體數(shù)據(jù),就必須要準(zhǔn)確的知道位于MP3文件首部的ID3V2的長度。由于ID3V2長度不固定,所以必須對ID3V2的結(jié)構(gòu)進(jìn)行了解。每個ID3V2.3的標(biāo)簽都由一個標(biāo)簽頭和假設(shè)干個標(biāo)簽幀或一個擴(kuò)展標(biāo)簽頭組成。關(guān)于曲目的信息如標(biāo)題、作者等都存放在不同的標(biāo)簽幀中,擴(kuò)展標(biāo)
6、簽頭和標(biāo)簽幀并不是必要的,但每個標(biāo)簽至少要有一個標(biāo)簽幀。標(biāo)簽頭和標(biāo)簽幀一起順序存放在MP3文件的首部,ID3V2.3標(biāo)簽頭數(shù)據(jù)結(jié)構(gòu)定義為: Real structureof ID3v2 header typeTagInfo = recordID:array of Char; / 必須為ID3;Version:Byte;Revision:Byte;Flags:Byte;Size:array of Byte;end;標(biāo)簽大小由四個字節(jié)組成,但每個字節(jié)只使用了低7位,最高位恒為0,格式如下:0 xxxxxxx 0 xxxxxxx 0 xxxxxxx 0 xxxxxxx計算標(biāo)簽大小時將最高位0去掉,得
7、到一個28位的二進(jìn)制數(shù),就是標(biāo)簽大小。計算標(biāo)簽大小的函數(shù)為:functionGetTagSize(const Tag: TagInfo): Integer;begin Gettotal tag size Result :=Tag.Size【1】 * $200000 +Tag.Size【2】 * $4000 +Tag.Size【3】 * $80 +Tag.Size【4】 + 10;if Result Tag.FileSize then Result := 0;end;2.3、幀F(xiàn)RAMEMP3文件的音頻數(shù)據(jù)由一系列的幀組成,幀的總數(shù)由文件大小和幀長決定,每個幀的長度可能不固定,也可能固定,由位率
8、bit rate決定。每個幀分為幀頭和數(shù)據(jù)實(shí)體兩局部,幀頭記錄了MP3的位率,采樣率,版本等信息,長度是4BYTE32bit,幀頭后面可能有兩個字節(jié)的CRC校驗(yàn),這兩個字節(jié)的是否存在決定于幀頭信息的第16bit,為0那么幀頭后面無校驗(yàn),為1那么有校驗(yàn),校驗(yàn)值長度為2個字節(jié),緊跟在幀頭后面。免費(fèi)論文參考網(wǎng)。幀頭后緊接著幀的實(shí)體數(shù)據(jù),具體長度由幀頭計算得出。值得注意的是,無論幀長是多少,每幀的播放時間都是26ms。MP3標(biāo)準(zhǔn)規(guī)定,不變位率的MP3文件稱作CBR,而變化位率的MP3文件稱作VBR,每個幀的長度都可能是變化的。CBR的位率和幀的大小是固定的,只要知道文件總長度,和幀長即可由播放每幀需2
9、6ms計算得出該MP3播放的總時間。VBR是XING公司推出的算法,所以在MP3的幀里會有XING;這個關(guān)鍵字,它存放在MP3文件中的第一個有效幀里,它標(biāo)識了這個MP3文件是VBR的。同時,在第一個幀里存放了MP3文件的總幀數(shù),乘上每幀需26ms即可計算出播放的總時間。3、MP3流效勞器設(shè)計3.1、功能介紹流效勞器的主要功能是管理歌曲庫,為各嵌入式節(jié)點(diǎn)提供播送和點(diǎn)播的MP3流,并對其進(jìn)行控制管理。通過計算機(jī)技術(shù)和嵌入式技術(shù)的結(jié)合,實(shí)現(xiàn)高質(zhì)量的音頻效果,同時實(shí)現(xiàn)了上位機(jī)對接收節(jié)點(diǎn)的分區(qū)域、分組或任意節(jié)點(diǎn)控制。3.2、系統(tǒng)組成框圖流效勞器所在系統(tǒng)組成框圖如圖1所示:3.3、功能實(shí)現(xiàn)本文主要介紹用D
10、elphi編程對MP3流的讀取和利用TCP/IP協(xié)議與嵌入式節(jié)點(diǎn)進(jìn)行流傳輸?shù)暮笈_技術(shù)的實(shí)現(xiàn),這是整個MP3流效勞器技術(shù)的關(guān)鍵和重點(diǎn),流效勞器窗體界面的設(shè)計屬于比擬簡單的程序設(shè)計,此處就不做詳細(xì)的表達(dá)。下面,我們將分點(diǎn)表達(dá)各主要功能模塊的設(shè)計過程。通過上面的分析知道,MP3文件結(jié)構(gòu)大體分為ID3V2,F(xiàn)rame,ID3V1三局部,要準(zhǔn)確得讀取MP3文件的數(shù)據(jù)幀F(xiàn)rame就必須計算出文件首部的ID3V2占用的字節(jié)數(shù),ID3V2的下一個字節(jié)就是第一個幀的首字節(jié)。免費(fèi)論文參考網(wǎng)。計算ID3V2大小的函數(shù)GetTagSize前面章節(jié)已經(jīng)介紹,在讀取MP3文件前必須在內(nèi)存里開辟出數(shù)據(jù)緩沖區(qū)以保存讀取的流文
11、件。具體實(shí)現(xiàn)函數(shù)如下:VarMp3Stream: TMemoryStream; /聲明流緩沖區(qū)Num: integer;Mp3Stream := TMemoryStream.Create; / 建立流Function ReadFrameStream(constFileName: string; StreamSize: integer): Boolean;varSourceFile: file;beginResult :=True;tryAssignFile(SourceFile, FileName);FileMode := 0;Reset(SourceFile, 1); /文件指針復(fù)位Seek
12、(SourceFile, GetTagSize(tag) + Num + 1); / 文件指針定位Mp3Stream.Read(SourceFile, StreamSize); / 流讀取exceptResult := False;end;end;流媒體協(xié)議已經(jīng)有多種成熟方案,如實(shí)時流協(xié)議RTSP等,但使用范圍都是限制在PC-PC傳輸?shù)?,無法實(shí)現(xiàn)對嵌入式終端的控制,因而必須自定義一種上位機(jī)與嵌入式終端通訊的協(xié)議。經(jīng)過實(shí)驗(yàn),現(xiàn)采用的自定義數(shù)據(jù)包協(xié)議如下:Send + AA + BB +CC + MM / 發(fā)送包Receive + AA +BB + MM / 接收包其中:AA 命令字節(jié)BB 包的總
13、字節(jié)數(shù)CC 序號MM 主體數(shù)據(jù)為了提高數(shù)據(jù)包傳輸?shù)目煽啃?,我們選用實(shí)現(xiàn)高可靠性的包交換傳輸協(xié)議TCP協(xié)議來進(jìn)行數(shù)據(jù)傳輸。數(shù)據(jù)流傳送的主要實(shí)驗(yàn)過程如下:procedure TFormMain.IdTCPServer1Execute(AContext:TIdContext);varTemp,HeadStr : string;ClientIP:string;ClientPort: integer;Num:integer;beginifPos(Temp, ACK) = 1 then/ 判斷命令字else ifPos(Temp, SONG) = 1 thenbegin其他功能語句體end;end;嵌入式
14、終端播放MP3流采用的是硬件解碼方式,其工作機(jī)制是對接收到的MP3流進(jìn)行即時播放,每段流數(shù)據(jù)播放完成時由解碼芯片產(chǎn)生一個中斷信號給MCU,再由MCU連接流效勞器提出流數(shù)據(jù)申請。在兩次流數(shù)據(jù)的傳輸就出現(xiàn)了時間間隔,這個時間關(guān)系到流效勞器何時更新播放緩沖區(qū)里的流數(shù)據(jù),關(guān)系到嵌入式終端播放MP3的連貫性。免費(fèi)論文參考網(wǎng)。分析MP3文件格式知道,流的傳輸間隔由前次傳輸?shù)牧鲾?shù)據(jù)的播放時間決定。為了時間的準(zhǔn)確,設(shè)置每次傳輸?shù)牧鲾?shù)據(jù)的大小均為數(shù)據(jù)幀F(xiàn)rame的整數(shù)倍n,故時間間隔計算公式如下:t play = n * 26ms/frame (單位:毫秒)由于該時間間隔一般為幾十個毫秒,故效勞器端計時程序必須
15、滿足高精度的要求,誤差在一個毫秒之內(nèi)。取系統(tǒng)級時間精度的計時函數(shù)如下:varc1: int64;t1, t2: int64;r1: double;beginQueryPerformanceFrequency(c1);/ 獲得系統(tǒng)的高性能頻率計數(shù)器一毫秒內(nèi)的震動次數(shù)QueryPerformanceCounter(t1); / WINDOWS API 獲取開始計數(shù)值執(zhí)行要計時的代碼QueryPerformanceCounter(t2); / 獲取結(jié)束計數(shù)值r1 := (t2- t1) / c1 * 1000; / 取得計時時間,單位毫秒(ms)Result :=r1;end;在實(shí)際情況中,可能由于網(wǎng)絡(luò)線路的堵塞或遠(yuǎn)距離多層交換機(jī)的傳遞造成網(wǎng)絡(luò)延時加大,出現(xiàn)數(shù)毫秒甚至數(shù)十毫秒的延時時間,這個時間是疊加在流的傳輸間隔內(nèi)的,這就造成了播放時間銜接的不準(zhǔn)確。經(jīng)過分析研究和實(shí)驗(yàn)測試,我們采用二級數(shù)據(jù)緩沖區(qū)的方法減少了網(wǎng)絡(luò)延時造成的傳輸間隔誤差的可能性。二級數(shù)據(jù)緩沖區(qū)建立在嵌入式終端的內(nèi)存,示意圖如圖2所示: 在MP3解碼完成發(fā)出數(shù)據(jù)請求信號時,終端CPU將播放緩沖區(qū)的數(shù)據(jù)傳給MP3解碼器,同時將二級緩沖區(qū)內(nèi)的數(shù)據(jù)存入播放器緩沖區(qū),并同時向流效勞器申請新的數(shù)據(jù)流。這樣處理的結(jié)果將會多出一次傳送流數(shù)據(jù)的時間作為緩沖時間,可以大大的減少網(wǎng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工工程安全會議(3篇)
- 蘇科版七年級數(shù)學(xué)上冊《2.4.3絕對值與相反數(shù)》聽評課記錄
- 湘教版七年級數(shù)學(xué)下冊第4章4.1相交直線所成的角(第2課時)聽評課記錄
- 湘教版數(shù)學(xué)九年級下冊聽評課記錄:1.3 不共線三點(diǎn)確定二次函數(shù)的表達(dá)式
- 小學(xué)一二年級聽評課記錄
- 蘇教版六年級上冊數(shù)學(xué)第6單元《6-12納稅、利息、折扣問題練習(xí)課》聽評課記錄
- 粵人版地理八年級上冊《第二節(jié) 土地資源》第一課時聽課評課記錄
- 浙教版數(shù)學(xué)七年級上冊《6.8 余角和補(bǔ)角》聽評課記錄1
- 現(xiàn)代電子游戲中的視覺優(yōu)化技術(shù)
- 環(huán)保趨勢下銀行的綠色業(yè)務(wù)創(chuàng)新
- 2023年MRI技術(shù)操作規(guī)范
- 辦公用品、易耗品供貨服務(wù)方案
- 病史采集評分標(biāo)準(zhǔn)-純圖版
- 自行聯(lián)系單位實(shí)習(xí)申請表
- 醫(yī)療廢物集中處置技術(shù)規(guī)范
- 沖動式與反動式汽輪機(jī)的優(yōu)劣比較
- 國有企業(yè)內(nèi)部審計工作制度(3篇)
- 媒介社會學(xué)備課
- 2023年檢驗(yàn)檢測機(jī)構(gòu)質(zhì)量手冊(依據(jù)2023年版評審準(zhǔn)則編制)
- 興??h索拉溝銅多金屬礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 三相分離器原理及操作
評論
0/150
提交評論