PCM檔案播放器
阿新 • • 發佈:2019-01-02
基於webrtc的音訊模組寫的一個測試demo,然後再把測試demo修改下拿來當做工具使用。在平時開發中總是需要播放各種各樣的pcm檔案,然後每次都需要修改demo來測試,各種麻煩,於是這個小工具就產生了。
1. 基於OpenSLES實現的
2. 支援單雙通道,預設單通道
3. 支援取樣率為8k、16k、32k、44k和48k,預設16k
4. 支援迴圈播放和單曲播放
通過讀取ELF檔案看出確實使用OpenSLES
0x00000001(NEEDED)Shared library:[libdl.so]
0x00000001(NEEDED)Shared library:[liblog.so]
0x00000001(NEEDED)Shared library:[libOpenSLES.so]
0x00000001(NEEDED)Shared library:[libm.so]
0x00000001(NEEDED)Shared library:[libc.so]
後續會新增上時間控制,感覺這個是有必要的。因為我裡面使用了環形快取區,所以會根據取樣率和通道的不同有相應的誤差,會有40ms ~ 480ms的音訊碼流存放在緩衝區而沒有放出來。
使用方式:
usage:./audio_pcm_player [-h][-l][-s sample_rate][-c channels][-b bit_width] pcmFile
-h this help message
-s sample rate (16000)
-c channels (1)
-b bit width (16)
-l looped play (false)
例子:
播放通道為2,取樣率為48k的pcm檔案
$ ./audio_pcm_player -c 2-s 4800048000_16_2.pcm
<filename is:48000_16_2.pcm
sampleRate is:48000
channels is:2
bitwidth is:16
looper play : false
播放通道為1,取樣率為32k的pcm檔案$ ./audio_pcm_player -s 3200032000_16_1.pcm
filename is:32000_16_1.pcm
sampleRate is:32000
channels is:1
bitwidth is:16
looper play : false
迴圈播放通道為2,取樣率為16k的pcm檔案
$ ./audio_pcm_player -c 2-l 16000_16_2.pcm
filename is:16000_16_2.pcm
sampleRate is:16000
channels is:2
bitwidth is:16
looper play : true