经过多次更新(包括升级到 flashplayer 11 和内核 3.8.2)后,flashplayer 和 Skype 的声音变得不稳定。
设置
在我的设置中,我将 .asoundrc 设置为使用pulseaudio(从某处复制,因为我不知道 .asoundrc 的语法)
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}
pcm.!default {
type pulse
}
ctl.!default {
type pulse
}
Pulseaudio 设置为使用插孔作为源和接收器。杰克使用火线调音台作为声卡。
如果重要的话,我有一个 nvidia 显卡 (GeForce 8800 GT),带有 nvidia (NVIDIA-Linux-x86-310.40) 的专有驱动程序。
症状
来自 vlc 或 celementine 的声音效果完美。我相信这些直接与pulseaudio对话。使用 mplayer 我可以在-ao
alsa
pulse
和之间进行选择jack
,并且一切正常。所以我没有理由相信链的尾部有任何问题,即脉冲->插孔->火线。
但 aplay 也可以正常工作,我相信它必须通过 alsa 层才能访问脉冲。
Skype,尤其是 Flashplayer 会产生断断续续的声音,就好像采样率不正确,系统必须每半秒左右来回跳跃一些样本。 Flash 不仅在 Firefox 中表现出这种行为,而且在 Chrome 中也表现出这种行为。
Skype 有时工作正常,即当我终止并重新启动它时,我可以让它工作。
到目前为止分析
我比较了从 aplay、firefox 或 skype 播放时的输出pactl list
,但看不到任何线索。我的采样率似乎是 44100,而 Skype 的采样率为 44800,因此 pactl 显示speex-float-3
正在发生重新采样。但我可以用 44100 和 48000 播放波形文件,所以我最初的预感是重采样导致了问题可能是不正确的。
我还比较了ldd
aplay 和 Skype 的输出,Skype 使用与 aplay 相同的共享库,当然还有更多。
我尝试使用 alsa jack 插件,这样 alsa 可以绕过脉冲直接与 jack 对话,但 Flash 播放会在几秒钟后停止产生声音。
播放flash时CPU占用率高
16494 23.6 478m 1 martin 1000 1 S 20 0 58 firefox
14797 4.7 95m 4097 root 0 1 S 20 0 11 xorg
15979 5.1 103m 15806 martin 1000 1 S 20 0 7 jackd
25561 8.5 172m 1 martin 1000 0 S 9 -11 5 pulseaudio
25534 4.1 82m 17830 martin 1000 0 S 20 0 2 skype
dmesg
偶尔表现出
pulseaudio[15996]: segfault at 0 ip b256416a sp bfe34d40 error 4 in module-jack-sink.so[b2562000+4000]
这当然“不好”,但在需要时,pulseaudio 可以重新启动
/var/log/messages 或 .xsession-error 中或 Firefox 或 chrome 的 stdout/stderr 上没有任何内容。
任何帮助将非常感激。我也很高兴能得到指点,下一步该去哪里看或者谷歌搜索什么。奇怪的是,似乎没有多少人有这个问题。