我想播放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_CARD
和ALSA_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而不是默认的。