




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、應(yīng)用于嵌入式終端的MP3流效勞器的設(shè)計(jì)*論文導(dǎo)讀:一種基于局域網(wǎng)傳輸并結(jié)合了嵌入式技術(shù)的智能播送系統(tǒng)得于實(shí)現(xiàn)。使用的是互聯(lián)網(wǎng)上成熟的TCP/IP傳輸協(xié)議。并同時(shí)向流效勞器申請新的數(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è)計(jì)難題,傳統(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)在漢語中譯為活動(dòng)圖像專家組,特指活動(dòng)影音壓縮標(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è)計(jì)目的是讀出MP3文件里的數(shù)據(jù)幀(frame)內(nèi)容,并將其以流的形式傳輸?shù)礁鱾€(gè)節(jié)點(diǎn)終端。MP3文件結(jié)構(gòu)大體分為三局部:TAG_V2(ID3V2),F(xiàn)rame,TAG_V1(ID3V1)。所以下面對M
4、P3文件的三個(gè)局部進(jìn)行簡單分析。2.1、ID3v1ID3V1存放在MP3文件的末尾的128個(gè)順序存放字節(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個(gè)版本,但流行的播放軟件一般只支持第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)行了解。每個(gè)ID3V2.3的標(biāo)簽都由一個(gè)標(biāo)簽頭和假設(shè)干個(gè)標(biāo)簽幀或一個(gè)擴(kuò)展標(biāo)簽頭組成。關(guān)于曲目的信息如標(biāo)題、作者等都存放在不同的標(biāo)簽幀中,擴(kuò)展標(biāo)
6、簽頭和標(biāo)簽幀并不是必要的,但每個(gè)標(biāo)簽至少要有一個(gè)標(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)簽大小由四個(gè)字節(jié)組成,但每個(gè)字節(jié)只使用了低7位,最高位恒為0,格式如下:0 xxxxxxx 0 xxxxxxx 0 xxxxxxx 0 xxxxxxx計(jì)算標(biāo)簽大小時(shí)將最高位0去掉,得
7、到一個(gè)28位的二進(jìn)制數(shù),就是標(biāo)簽大小。計(jì)算標(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ù)由文件大小和幀長決定,每個(gè)幀的長度可能不固定,也可能固定,由位率
8、bit rate決定。每個(gè)幀分為幀頭和數(shù)據(jù)實(shí)體兩局部,幀頭記錄了MP3的位率,采樣率,版本等信息,長度是4BYTE32bit,幀頭后面可能有兩個(gè)字節(jié)的CRC校驗(yàn),這兩個(gè)字節(jié)的是否存在決定于幀頭信息的第16bit,為0那么幀頭后面無校驗(yàn),為1那么有校驗(yàn),校驗(yàn)值長度為2個(gè)字節(jié),緊跟在幀頭后面。免費(fèi)論文參考網(wǎng)。幀頭后緊接著幀的實(shí)體數(shù)據(jù),具體長度由幀頭計(jì)算得出。值得注意的是,無論幀長是多少,每幀的播放時(shí)間都是26ms。MP3標(biāo)準(zhǔn)規(guī)定,不變位率的MP3文件稱作CBR,而變化位率的MP3文件稱作VBR,每個(gè)幀的長度都可能是變化的。CBR的位率和幀的大小是固定的,只要知道文件總長度,和幀長即可由播放每幀需2
9、6ms計(jì)算得出該MP3播放的總時(shí)間。VBR是XING公司推出的算法,所以在MP3的幀里會(huì)有XING;這個(gè)關(guān)鍵字,它存放在MP3文件中的第一個(gè)有效幀里,它標(biāo)識了這個(gè)MP3文件是VBR的。同時(shí),在第一個(gè)幀里存放了MP3文件的總幀數(shù),乘上每幀需26ms即可計(jì)算出播放的總時(shí)間。3、MP3流效勞器設(shè)計(jì)3.1、功能介紹流效勞器的主要功能是管理歌曲庫,為各嵌入式節(jié)點(diǎn)提供播送和點(diǎn)播的MP3流,并對其進(jìn)行控制管理。通過計(jì)算機(jī)技術(shù)和嵌入式技術(shù)的結(jié)合,實(shí)現(xiàn)高質(zhì)量的音頻效果,同時(shí)實(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),這是整個(gè)MP3流效勞器技術(shù)的關(guān)鍵和重點(diǎn),流效勞器窗體界面的設(shè)計(jì)屬于比擬簡單的程序設(shè)計(jì),此處就不做詳細(xì)的表達(dá)。下面,我們將分點(diǎn)表達(dá)各主要功能模塊的設(shè)計(jì)過程。通過上面的分析知道,MP3文件結(jié)構(gòu)大體分為ID3V2,F(xiàn)rame,ID3V1三局部,要準(zhǔn)確得讀取MP3文件的數(shù)據(jù)幀F(xiàn)rame就必須計(jì)算出文件首部的ID3V2占用的字節(jié)數(shù),ID3V2的下一個(gè)字節(jié)就是第一個(gè)幀的首字節(jié)。免費(fèi)論文參考網(wǎng)。計(jì)算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í)時(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í)播放,每段流數(shù)據(jù)播放完成時(shí)由解碼芯片產(chǎn)生一個(gè)中斷信號給MCU,再由MCU連接流效勞器提出流數(shù)據(jù)申請。在兩次流數(shù)據(jù)的傳輸就出現(xiàn)了時(shí)間間隔,這個(gè)時(shí)間關(guān)系到流效勞器何時(shí)更新播放緩沖區(qū)里的流數(shù)據(jù),關(guān)系到嵌入式終端播放MP3的連貫性。免費(fèi)論文參考網(wǎng)。分析MP3文件格式知道,流的傳輸間隔由前次傳輸?shù)牧鲾?shù)據(jù)的播放時(shí)間決定。為了時(shí)間的準(zhǔn)確,設(shè)置每次傳輸?shù)牧鲾?shù)據(jù)的大小均為數(shù)據(jù)幀F(xiàn)rame的整數(shù)倍n,故時(shí)間間隔計(jì)算公式如下:t play = n * 26ms/frame (單位:毫秒)由于該時(shí)間間隔一般為幾十個(gè)毫秒,故效勞器端計(jì)時(shí)程序必須
15、滿足高精度的要求,誤差在一個(gè)毫秒之內(nèi)。取系統(tǒng)級時(shí)間精度的計(jì)時(shí)函數(shù)如下:varc1: int64;t1, t2: int64;r1: double;beginQueryPerformanceFrequency(c1);/ 獲得系統(tǒng)的高性能頻率計(jì)數(shù)器一毫秒內(nèi)的震動(dòng)次數(shù)QueryPerformanceCounter(t1); / WINDOWS API 獲取開始計(jì)數(shù)值執(zhí)行要計(jì)時(shí)的代碼QueryPerformanceCounter(t2); / 獲取結(jié)束計(jì)數(shù)值r1 := (t2- t1) / c1 * 1000; / 取得計(jì)時(shí)時(shí)間,單位毫秒(ms)Result :=r1;end;在實(shí)際情況中,可能由于網(wǎng)絡(luò)線路的堵塞或遠(yuǎn)距離多層交換機(jī)的傳遞造成網(wǎng)絡(luò)延時(shí)加大,出現(xiàn)數(shù)毫秒甚至數(shù)十毫秒的延時(shí)時(shí)間,這個(gè)時(shí)間是疊加在流的傳輸間隔內(nèi)的,這就造成了播放時(shí)間銜接的不準(zhǔn)確。經(jīng)過分析研究和實(shí)驗(yàn)測試,我們采用二級數(shù)據(jù)緩沖區(qū)的方法減少了網(wǎng)絡(luò)延時(shí)造成的傳輸間隔誤差的可能性。二級數(shù)據(jù)緩沖區(qū)建立在嵌入式終端的內(nèi)存,示意圖如圖2所示: 在MP3解碼完成發(fā)出數(shù)據(jù)請求信號時(shí),終端CPU將播放緩沖區(qū)的數(shù)據(jù)傳給MP3解碼器,同時(shí)將二級緩沖區(qū)內(nèi)的數(shù)據(jù)存入播放器緩沖區(qū),并同時(shí)向流效勞器申請新的數(shù)據(jù)流。這樣處理的結(jié)果將會(huì)多出一次傳送流數(shù)據(jù)的時(shí)間作為緩沖時(shí)間,可以大大的減少網(wǎng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 普及知識的體育經(jīng)紀(jì)人試題及答案
- 模具設(shè)計(jì)計(jì)算方法試題及答案
- 深入了解體育經(jīng)紀(jì)人考試的核心理念 試題及答案
- 智慧汽車產(chǎn)業(yè)園建設(shè)項(xiàng)目可行性研究報(bào)告
- 生活污水處理廠及配套管網(wǎng)新建項(xiàng)目可行性研究報(bào)告(模板)
- 高標(biāo)準(zhǔn)農(nóng)業(yè)設(shè)施建設(shè)項(xiàng)目可行性研究報(bào)告(模板)
- 深度理解農(nóng)業(yè)植保員考試評估標(biāo)準(zhǔn)試題及答案
- 農(nóng)作物種子繁育員技能與理論結(jié)合試題及答案
- 辦公區(qū)內(nèi)裝與改造工程可行性研究報(bào)告
- 國際視野下的體育經(jīng)紀(jì)人試題及答案
- 飛機(jī)管路基礎(chǔ)知識課件講解
- JTS-T-272-1-2014沿海港口建設(shè)工程投資估算指標(biāo)
- 中醫(yī)醫(yī)療技術(shù)手冊2013普及版
- 藥物合成反應(yīng)-9合成設(shè)計(jì)原理
- 2023年第40屆全國中學(xué)生物理競賽初賽試題及詳細(xì)解答
- 乳腺腺病超聲診斷
- 北師大版數(shù)學(xué)五年級(下冊)長方體(二) 練習(xí)四
- 電子商務(wù)的區(qū)塊鏈與加密貨幣
- DB35T 2082-2022 人民防空疏散基地建設(shè)基本要求
- 2023年中國少女發(fā)育內(nèi)衣行業(yè)發(fā)展白皮書
- 再生鋁商業(yè)計(jì)劃書
評論
0/150
提交評論