IOS lame庫 pcm轉mp3 分析(方案一)

來源:互聯網
上載者:User

標籤:img   round   channel   檔案頭   base   格式   fse   關閉   write   

方案一:使用 AVAudioRecorder 錄製pcm資料格式檔案,然後啟動子線程迴圈遍曆檔案,讀取pcm資料轉碼mp3並寫入mp3檔案(目前網上資料大多是這樣)

1.lame初始化 & 開啟pcm、mp3檔案 擷取檔案指標

單通道無需設定lame_set_model,因為api已經說明  default: lame picks based on compression ration and input channels(根據brate和channels預設設定)

擴充能力:寫入檔案頭資訊 例如 id3tag_set_artist ===》作者, 頭資訊設定必須在 lame_init_param()之前

擴充能力:寫入封面圖(image)id3tag_set_albumart 

開啟檔案擷取檔案指標(指向位元組位置)

 

2.遍曆pcm檔案,擷取位元組資料,轉碼,寫入mp3檔案

const int PCM_SIZE = 8192; // 相當於8192箱啤酒,一箱16瓶(啤酒=位元組,8192個16位元組的資料長度)

short int pcm_buffer[PCM_SIZE * self.realChannels]; // 填充 多少個pcm格式資料元素的數組

do{}while() 迴圈讀取pcm檔案,判斷位元組數是否大於設定的標準

 

 

 

 

跳過開頭 fseek(pcm, 4 * 1024, SEEK_CUR);  過濾噪音

 

條件成熟,開始讀取pcm檔案資料並存入pcm_buffer中(檔案指標會位移到讀取位元組的末尾位置)

 

 

將pcm_buffer中的資料轉碼成mp3格式資料並放入mp3_buffer中, 區分單&雙通道

 

 

需要注意write 有可能異常,正如api中所說

 

把mp3_buffer中的資料寫入mp3檔案中

 

 

while條件不符合的時候,跳出,仍要考慮不夠標準的剩餘的位元組資料,也要轉碼並寫入mp3檔案

 

最後關閉檔案 

 

 

IOS lame庫 pcm轉mp3 分析(方案一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.