2、實(shí)驗(yàn)原理
音頻編解碼的主要對(duì)象是音樂(lè)和語(yǔ)音,音頻的編解碼格式可分為無(wú)壓縮的格式、無(wú)損壓縮格式、有損音樂(lè)壓縮格式、有損語(yǔ)音壓縮格式和合成算法。本實(shí)驗(yàn)中使用的MP3格式屬于有損音樂(lè)壓縮格式。音頻編解碼的目的是減少傳輸?shù)?a target="_blank">信息量和減少儲(chǔ)存的信息。
MP3是一種音頻壓縮技術(shù),能夠在音質(zhì)丟失很小的情況下把文件壓縮到更小的程度,而且還非常好的保持了原來(lái)的音質(zhì)。描述信源的數(shù)據(jù)是信息和數(shù)據(jù)冗余之和,將音頻作為一個(gè)信源,音頻編碼的實(shí)質(zhì)是減少音頻中的冗余。通常情況下,我們采用的是脈沖代碼調(diào)制編碼。PCM通過(guò)抽樣、量化、編碼三個(gè)步驟將連續(xù)變化的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。
MP3編碼一般會(huì)使用libmp3lame庫(kù),這是一個(gè)開源的MP3編碼庫(kù)。使用lame庫(kù)只需要包含lame.h頭文件即可。通過(guò)lame庫(kù)實(shí)現(xiàn)MP3編碼的流程是初始化編碼參數(shù)、設(shè)置編碼參數(shù)、初始化編碼器、編碼PCM數(shù)據(jù)、結(jié)束編碼,最后銷毀編碼器。
我們來(lái)詳細(xì)了解下lame庫(kù)提供的各種參數(shù)設(shè)置的接口。首先看下初始化編碼參數(shù)的接口lame_init,這個(gè)接口可以用來(lái)設(shè)置參數(shù)。
然后看下編碼參數(shù)設(shè)置的相關(guān)接口。
第一個(gè)是設(shè)置設(shè)置被輸入編碼器的原始數(shù)據(jù)的采樣率
第二個(gè)是設(shè)置最終MP3編碼輸出的聲音的采樣率,如果不設(shè)置則和輸入采樣率一樣
第三個(gè)是設(shè)置被輸入編碼器的原始數(shù)據(jù)的聲道數(shù)
第四個(gè)是設(shè)置最終MP3編碼輸出的聲道模式,如果不設(shè)置則和輸入聲道數(shù)一樣。
第五個(gè)是設(shè)置比特率控制模式,默認(rèn)是CBR,但是通常我們都會(huì)設(shè)置VBR
第六個(gè)是設(shè)置CBR的比特率,只有在CBR模式下才生效
第七個(gè)是設(shè)置VBR的比特率,只有在VBR模式下才生效
接著看一下初始化編碼器的接口,根據(jù)設(shè)置好的參數(shù)建立編碼器
然后調(diào)用接口將PCM數(shù)據(jù)送入編碼器,獲取編碼出的MP3數(shù)據(jù)。本實(shí)驗(yàn)中的雙聲道數(shù)據(jù)是交錯(cuò)在一起輸入的,所以使用lame_encode_buffer_interleaved接口。
編碼結(jié)束前需要刷新編碼器緩沖,獲取殘留在編碼器緩沖里的數(shù)據(jù)。
最后,編碼結(jié)束后要銷毀編碼器釋放資源。
本實(shí)驗(yàn)中的MP3音頻編碼是基于SYSBIOS系統(tǒng)下完成的。SYS/BIOS 是一個(gè)可擴(kuò)展的實(shí)時(shí)的操作系統(tǒng),具有非常快速的響應(yīng)時(shí)間,可以最大限度地減少對(duì)內(nèi)存和CPU的要求,并且能夠?qū)崿F(xiàn)系統(tǒng)的模塊化并可裁剪。
靜態(tài)創(chuàng)建任務(wù)的方法是通過(guò)在cfg Script腳本語(yǔ)言中添加相應(yīng)的配置語(yǔ)句實(shí)現(xiàn)的,通過(guò)調(diào)用 Task_create()創(chuàng)建任務(wù)。
var Task = xdc.useModule('ti.sysbios.knl.Task');
var task0Params = new Task.Params();
task0Params.instance.name = "task0";
Program.global.task0= Task.create("&taskMain", task0Params);
3、操作現(xiàn)象
硬件接口
本實(shí)驗(yàn)使用的硬件接口為SD卡座,所需硬件為實(shí)驗(yàn)板、仿真器、電源、SD卡和讀卡器。
硬件連接
將工程目錄下的song.pcm文件拷貝到SD卡后,把SD卡插入卡槽內(nèi)。
連接仿真器和電腦的USB接口。
將撥碼開關(guān)撥到DEBUG模式01111,連接實(shí)驗(yàn)箱電源,撥動(dòng)電源開關(guān)上電
實(shí)驗(yàn)現(xiàn)象
導(dǎo)入工程,選擇Demo文件夾下的對(duì)應(yīng)工程
編譯工程,生成可執(zhí)行文件
將CCS連接開發(fā)板并加載程序
點(diǎn)擊運(yùn)行程序
運(yùn)行程序后,Console 窗口會(huì)持續(xù)打印信息,本次實(shí)驗(yàn)每次處理9045字節(jié)的數(shù)據(jù)。
大概等待1分鐘,編碼完成。
實(shí)驗(yàn)箱斷電后,取下 SD 卡
通過(guò)讀卡器將SD卡插入電腦可查看 SD 卡目錄下的內(nèi)容,程序把 SD卡目錄下的 song.pcm 文件編碼并生成 song.mp3 文件。
打開并播放 MP3 文件,
-
PCM
+關(guān)注
關(guān)注
1文章
196瀏覽量
53376 -
緩沖器
+關(guān)注
關(guān)注
6文章
1930瀏覽量
45643 -
仿真器
+關(guān)注
關(guān)注
14文章
1019瀏覽量
83934 -
調(diào)制器
+關(guān)注
關(guān)注
3文章
842瀏覽量
45325 -
音頻編解碼
+關(guān)注
關(guān)注
0文章
19瀏覽量
3035
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論