|
常見的無(wú)損音樂有好幾種(不討論類似mp3(愛夢(mèng)屁三)之類的有損壓縮格式)
WAV(娃夫) 無(wú)損非壓縮 最早由microsoft(賣客燒福特)定義 常見的數(shù)字無(wú)損音樂都是以此為標(biāo)準(zhǔn) 壓縮和解壓
FLAC(佛勒啊測(cè)) 這個(gè)格式很常見 壓縮和解壓的速度都不錯(cuò) 免費(fèi) stm32下有牛人做出了解壓程序 我自己是用FLAC(佛勒啊次)的原生代碼改的 效果很好
APE(啊屁) 這個(gè)格式也很常見 不過現(xiàn)在大大落后了 STM32上處理這個(gè)垃圾貨色 基本呵呵
ALAC(啊拉客) 這個(gè)是Apple(矮破)家的垃圾貨色 破玩意兒 壓縮比 和速度都很次 Apple(矮破)家所有的東西一個(gè)鳥樣 辣雞 不討論
下面隆重推出兩款免費(fèi)的 開源的 無(wú)損格式
TTA True Audio(特特啊 楚奧丟)
https://sourceforge.net/projects/tta/files/tta/
這個(gè)格式的文件非常優(yōu)秀 壓縮只有一個(gè)級(jí)別 支持8字節(jié)密碼(兩個(gè)CRC16) 哈哈 也支持流壓縮 所以 假定你給你小女盆友錄一段的話 別人沒密碼是聽不到的 只有沙沙聲,而且密碼是初始化一次即可(即 不設(shè)密碼的話是8個(gè)0x00) 并不影響 壓縮和解壓的速度
WAVPACK(娃夫怕客)
(請(qǐng)手工把點(diǎn)替換成.)
www點(diǎn)wavpack點(diǎn)com/downloads.html
這個(gè)格式的文件及其優(yōu)秀 共四種壓縮級(jí)別 fast(罰死特) default(得佛爾特) high(嗨) very-high(歪芮嗨) 而且支持Hybrid(嗨補(bǔ)芮得) 無(wú)損/有損混血模式 不過這里只討論無(wú)損
做好解壓程序后 FLAC + WAVPACK + TTA True Audio
在用STM32F103+0 SRAM 72Mhz / STM32F407+1M SRAM 168Mhz / STM32F746+8M SRAM (受限于SRAM(四日啊摸) 的速度限制 200Mhz) 三款板子比較
最終結(jié)果如下:
STM32F103 超頻到80后 只可以正常播放 WAVPACK fast 44khz 16bits
TTA True Audio 和 FLAC 卡 沒法播放
STM32F407
WAVPACK fast 96khz 24bits
TTA True Audio 96khz 24bits
FLAC 96khz 24bits 0級(jí)
STM32F746
WAVPACK very-high 96khz 24bits
TTA True Audio 96khz 24bits
FLAC 96khz 24bits 8級(jí)
順便說一下 我用的是正版STM32F746迪斯科(坑爹版) 這個(gè)片子用的是WM8994 我找遍了薩拉熱窩也沒有找到192Khz (需要打開Ultrasonic 優(yōu)特拉鎖你客 模式) 的驅(qū)動(dòng)程序 所以雖然 相信 STM32F746 可以播放192khz 24bits的WAVPACK+TTA True Audio 但是沒法測(cè)試
-------------------------------------------------------------------------------
這三款格式的壓縮比差不多 僅就壓縮比作比較的話 TTA True Audio是最好的 大多數(shù)情況下文件比 WAVPACK very-high 和 FLAC 8級(jí)小
WAVPACK + fast 的文件常常比TTA True Audio大3%-8% 尤其是24bit的
解壓速度
WAVPACK > TTA True Audio > FLAC
注意 這里說的是在STM32解壓的情況 ,PC上三者都有SSE或者匯編的部分 一般一首5分鐘左右44khz 16bits的音樂 都只需要不到兩秒鐘 即壓縮完成 (FLAC是最慢的)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
做完解壓后 順便做了一個(gè)錄音程序直接存儲(chǔ)WAVPACK 不過這個(gè)東西很好玩 上述三款格式都提供了CRC FRAME(測(cè)啊測(cè) 夫軟木)校驗(yàn) wavpack 的crc因子從頭文件就開始了 在total_samples(頭陀桑撲了)未知的情況下 只能在頭文件給一個(gè)默認(rèn)值 然后最后修改這個(gè)值
所以后面所有的crc值全錯(cuò) 導(dǎo)致錄出來(lái)的只能在不校驗(yàn)crc的播放器上播放 好比VLC(微了測(cè))這種比較矯情的播放器軟件就放不了
音頻解壓移植到類似STM32資源比較吃力的機(jī)器上的一點(diǎn)心得:
1: 墻裂推薦一款編譯器 Tiny C Compiler (太膩 色 康拍了)
(請(qǐng)手工把點(diǎn)替換成.)
bellard點(diǎn)org/tcc/
這個(gè)世界上最小的C編譯器 基于ANSI C (昂西 色) 編譯速度太特么快了 對(duì)付上面幾種 基本上敲回車就搞定 一般來(lái)說 Tiny C Compiler能通過的編譯 可以直接用到STM32上
2:盡量去掉校驗(yàn) CRC MD5這些 解壓速度大大加快
3:STM32上面對(duì)解壓速度影響最大的是最后數(shù)據(jù)輸出
WAVPACK和 TTA True Audio都是最后 輸出 的格式直接可以存為 WAV , FLAC還要做一道手腳 因?yàn)镕LAC是分聲道輸出的 (這個(gè)也是為啥FLAC在STM32上最卡的原因)
所以在輸出的時(shí)候 最好不要像網(wǎng)上大多數(shù)例子一樣 對(duì)輸出的數(shù)據(jù)再加工一次
最終推薦順序 WAVPACK > FLAC > TTA True Audio
|
評(píng)分
-
查看全部評(píng)分
|