基于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 48000 48000_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 32000 32000_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