ALSAaudio和YouTube

我想播放youtubevideo并以编程方式将firefox的audio输出到特定的声卡。

我想我会做一些像firefox | aplay -D hw:x,y. firefox | aplay -D hw:x,y. 产量:

播放原始数据“stdin”:无符号8位,速率8000 Hz,单声道aplay:set_params:1059:样本格式不可用可用格式: – S16_LE

尝试firefox | aplay -D hw:1,0 -f S16_LE -c 2 firefox | aplay -D hw:1,0 -f S16_LE -c 2

播放原始数据“标准input”:有符号16位小尾数,速率8000赫兹,立体声警告:速率不准确(请求= 8000Hz,得到= 44100Hz)请尝试插件插件

最后, firefox | aplay -D plughw:1,0 -f S16_LE -c 2 firefox | aplay -D plughw:1,0 -f S16_LE -c 2

播放原始数据“标准input”:有符号16位小尾数,速率8000赫兹,立体声

命令行提示它可以工作,但audio从hw:0,0(缺省值)中出来。

我需要制作自己的插件吗? 还是我需要强制阿尔萨取44100Hz?

此外,我拒绝使用脉冲,因为内存泄漏错误,经常崩溃。

我很确定闪光灯总是使用默认的声卡,所以你需要改变pcm.default 。 你可以通过编辑~/.asoundrc并添加如下内容来实现:

 pcm.!default { type hw card 0 device 2 } 

当然,这会影响到所有的应用程序,但我相信也可以设置ALSA_CONFIG_PATH (在环境中)指定一个不同的文件,所以你可以只为Firefox做。

ALSA常见问题解答表明有ALSA_PCM_CARDALSA_CARD环境变量,也可能工作。

这些变量实际上起作用,因为它们是/usr/share/alsa/alsa.conf默认配置的一部分:

  @args.CARD { type string default { @func getenv vars [ ALSA_PCM_CARD ALSA_CARD ] default { @func refer name defaults.pcm.card } } } 

所以,你应该能够做到这一点:

 ALSA_PCM_CARD=1 ALSA_PCM_DEVICE=3 firefox 

使用系统中适当的卡号和设备号码。 当然,你也可以将自己的环境变量(或其他条件检查)添加到你的ALSA配置中。

Flash使用自己的输出配置,独立于Firefox。 在运行浏览器之前定义FLASH_ALSA_DEVICE,告诉Flash使用的是ALSA PCM而不是默认的。