糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > ALSA 中 hw 和 plughw 的区别

ALSA 中 hw 和 plughw 的区别

时间:2018-09-15 17:07:18

相关推荐

ALSA 中 hw 和 plughw 的区别

通过 aplay 指定格式来播放 单声道WAV文件的结果比较:

aplay -Dhw:0,0 -c 2 -r 48000 -f S16_LE /data/48k_mono.wav

Playing WAVE '/usr/share/sounds/alsa/48k_mono.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Monoaplay: set_params:1305: Channels count non available

aplay -Dplughw:0,0 -c 2 -r 48000 -f S16_LE /data/48k_mono.wav可以正常播放.

其中的区别就是 hw 和 plughw , 参考 Difference between “hwplug” and “hw” 得出结论

hw: accesses the hardware device directly. // 直接访问硬件

plughw: inserts sample rate and format conversion plugins, if needed. //经过采样率和格式转换插件

可以通过mediainfo查看文件信息, 发现为1通道格式,而Codec driver 是需要播放的2 channel的,所以需要plug转换为2 channel才可以播放.

特意找了一个2 channel / 48kHz , 验证了猜想结果. 不加plug可以正常播放

➜ alsa mediainfo Front_Left.wavGeneralComplete name : 48k_mono.wavFormat: WaveFile size : 139 KiBDuration : 1 s 480 msOverall bit rate mode: ConstantOverall bit rate: 768 kb/sAudioFormat: PCMFormat settings: Little / SignedCodec ID : 1Duration : 1 s 480 msBit rate mode : ConstantBit rate : 768 kb/sChannel(s) : 1 channelSampling rate : 48.0 kHzBit depth : 16 bitsStream size: 139 KiB (100%)

上面例子是播放指定格式的wav音频文件,其实对于指定采集播放设备也是一样理解的:

使用plughw接口,程序员不必过多关心硬件,而且如果设置的配置参数和实际硬件支持的参数不一致,ALSA 会自动转换数据。

如果使用hw接口,我们就必须检测硬件是否支持设置的参数了。

hwplughw后面的两个数字分别表示card号和device号。

[1] /yiluohuanghun/868048

[2] /article/438059

如果觉得《ALSA 中 hw 和 plughw 的区别》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。