如何使用aplayer播放音频文件
来自百问网嵌入式Linux wiki
如何使用aplayer播放音频文件
aplay 与 arecord 基本相同,其只是播放而不是录制。 对于受支持的声音文件格式,可以从声音文件头中自动确定采样率,位深等。 如果未指定文件名,则使用标准输出或输入。 aplay 实用程序接受多个文件名。
使用前先查看 aplay 的帮助信息:
[root@imx6ull:~]# aplay -h
Usage: aplay [OPTION]... [FILE]...
-h, --help help
--version print current version
-l, --list-devices list all soundcards and digital audio devices
-L, --list-pcms list device names
-D, --device=NAME select PCM by name
-q, --quiet quiet mode
-t, --file-type TYPE file type (voc, wav, raw or au)
-c, --channels=# channels
-f, --format=FORMAT sample format (case insensitive)
-r, --rate=# sample rate
-d, --duration=# interrupt after # seconds
-s, --samples=# interrupt after # samples per channel
-M, --mmap mmap stream
-N, --nonblock nonblocking mode
-F, --period-time=# distance between interrupts is # microseconds
-B, --buffer-time=# buffer duration is # microseconds
--period-size=# distance between interrupts is # frames
--buffer-size=# buffer duration is # frames
-A, --avail-min=# min available space for wakeup is # microseconds
-R, --start-delay=# delay for automatic PCM start is # microseconds
(relative to buffer size if <= 0)
-T, --stop-delay=# delay for automatic PCM stop is # microseconds from xrun
-v, --verbose show PCM structure and setup (accumulative)
-V, --vumeter=TYPE enable VU meter (TYPE: mono or stereo)
-I, --separate-channels one file for each channel
-i, --interactive allow interactive operation from stdin
-m, --chmap=ch1,ch2,.. Give the channel map to override or follow
--disable-resample disable automatic rate resample
--disable-channels disable automatic channel conversions
--disable-format disable automatic format conversions
--disable-softvol disable software volume control (softvol)
--test-position test ring buffer position
--test-coef=# test coefficient for ring buffer position (default 8)
expression for validation is: coef * (buffer_size / 2)
--test-nowait do not wait for ring buffer - eats whole CPU
--max-file-time=# start another output file when the old file has recorded
for this many seconds
--process-id-file write the process ID here
--use-strftime apply the strftime facility to the output file name
--dump-hw-params dump hw_params of the device
--fatal-errors treat all errors as fatal
Recognized sample formats are: S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_BE IEC958_SUBFRAME_LE IEC958_SUBFRAME_BE MU_LAW A_LAW IMA_ADPCM MPEG GSM S20_LE S20_BE U20_LE U20_BE SPECIAL S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE U18_3BE G723_24 G723_24_1B G723_40 G723_40_1B DSD_U8 DSD_U16_LE DSD_U32_LE DSD_U16_BE DSD_U32_BE
Some of these may not be available on selected hardware
The available format shortcuts are:
-f cd (16 bit little endian, 44100, stereo)
-f cdr (16 bit big endian, 44100, stereo)
-f dat (16 bit little endian, 48000, stereo)
可见,aplayer 的帮助信息和 arecord 的是一样的,根据帮助信息我们可以操作声卡进行播放:
使用 arecord -l 命令列出声卡和数字音频设备:
[root@imx6ull:~]# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: wm8960audio [wm8960-audio], device 0: HiFi wm8960-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: wm8960audio [wm8960-audio], device 1: HiFi-ASRC-FE (*) []
Subdevices: 1/1
Subdevice #0: subdevice #0
得到声卡和数字音频设备列表后,可根据其信息进行以下操作: -d 指定录音时间(秒) -D 参数用于指定音频设备 PCM
以 hwx,x 开头(声卡号,设备号) 根据上面列出的设备,如果选择 HiFi wm8960-hifi-0 来录制声音的话那么 pcm 设备就为 hw0,0,如果是 HiFi wm8960-hifi-1 则 pcm 设备为 hw0,1,HiFi wm8960-hifi-2 则 pcm 设备为 hw0,2 ...以此类推。
-r 指定采样频率: 5512/8000/11025/16000/22050/32000/44100/48000/64000/88200/96000/176400/192000 -f 指定采样格式上面的帮助信息列出了: cd/cdr/dat/S16_LE/S32_LE/...
示例:
[root@imx6ull:~]# aplay -Dhw:0,0 -r8000 -f cd test.wmv # 使用设备 hw0,0 ,以 8000 的采样频率、cd 采样格式播放 test.wmv 文件
[root@imx6ull:~]# aplay -Dhw:0,1 -r48000 -f cd test.wmv # 使用设备 hw0,1 ,以 48000 的采样频率、cd 采样格式播放 test.wmv 文件
[root@imx6ull:~]# arecord -Dhw:0,2 -r48000 -f S32_LE -c 2 | aplay -Dhw:0,1 -r48000 # 一边采集一边播放