Linux ALSA音频和YouTube

Linux ALSA音频和YouTube,linux,flash,audio,youtube,alsa,Linux,Flash,Audio,Youtube,Alsa,我想播放youtube视频,并通过编程将firefox的音频输出到特定的声卡 我想我会做一些类似firefox的事情| aplay-D hw:x,y. 收益率: 播放原始数据“标准数据”:无符号8位,速率8000 Hz,单声道 aplay:集合参数:1059:样本格式不可用 可用格式: -S16_LE 正在尝试firefox | aplay-dHW:1,0-fs16_LE-c2 播放原始数据“标准输入”:有符号16位小尾端,速率8000 Hz,立体声 警告:速率不准确(请求=8000Hz,got

我想播放youtube视频,并通过编程将firefox的音频输出到特定的声卡

我想我会做一些类似firefox的事情| aplay-D hw:x,y. 收益率:

播放原始数据“标准数据”:无符号8位,速率8000 Hz,单声道 aplay:集合参数:1059:样本格式不可用 可用格式: -S16_LE

正在尝试
firefox | aplay-dHW:1,0-fs16_LE-c2

播放原始数据“标准输入”:有符号16位小尾端,速率8000 Hz,立体声 警告:速率不准确(请求=8000Hz,got=44100Hz) 请试试这个插件

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

播放原始数据“标准输入”:有符号16位小尾端,速率8000 Hz,立体声

命令行显示它工作正常,但音频来自hw:0,0(默认值)

我需要自己制作插件吗? 或者我需要强制alsa采用44100Hz


另外,我拒绝使用pulse,因为内存泄漏错误使它经常崩溃。

我很确定flash总是使用默认的声卡,所以您需要更改
pcm.default
。您可以通过编辑
~/.asoundrc
并添加以下内容来完成此操作:

pcm.!default {
    type hw
    card 0
    device 2
}
当然,这会影响到所有的应用程序,但我相信也可以设置
ALSA\u CONFIG\u PATH
(在环境中)来指定不同的文件,这样你就可以只为Firefox这样做

指示有
ALSA_PCM_卡
ALSA_卡
环境变量也可以工作

这些变量实际上可以工作,因为它们是
/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\u ALSA\u设备,它会告诉FLASH要使用什么ALSA PCM而不是默认值。

这很好。我无法让environmental env正常工作,但这似乎相当于在打开firefox之前以编程方式更改.asoundrc文件。我还想更确定的是,firefox不能播放任何非“默认”的内容我发现很难相信我不能把这些信息传达给其他人device@cyrusv:声音数据不会传输到标准输出,因此您无法在任何地方对其进行管道传输。