浏览器中的Flash无法使用Pulse网络音频准确播放声音

我使用PulseAudio通过LAN将声音发送到音频服务器。

在Firefox或Chrome中播放任何Flash媒体时,声音会颤动( 例如 ),就好像音量每秒都在上升和下降一样。

我发现如果我遵循以下步骤,我可以停止声音飘飘:

  • 启动Flashvideo,例如YouTube上的video

  • 服务器上运行pulseaudio --kill

  • 等待大约7秒钟

在此之后,PulseAudio服务器自动重新生成,并且Flashvideo中的声音很好。

问题是我每次启动Flashvideo都必须这样做。 这显然是不可取的。

当我通过这些步骤时,如何使声音发挥作用,以便我不必这样做?

我怀疑有人会想出一个即时而简单的修复方法(虽然那会很好),所以赏金可以发给任何提供至少一种解决问题方法的人。


细节

这是我的声音设备输出设置。 据我所知,所有四个设备都指向完全相同的物理设备。

声音设置

尝试播放Flashvideo时拍摄的PulseAudio日志输出 。

我试图从Flash获取日志记录详细信息,但尽管安装并启用Flash进行调试, 但它根本没有生成任何输出 。

这个问题没有任何其他软件,所以我有理由相信它与Flash与我的声音设置的交互方式有关。

以下是一些可能有用的错误输出:

 $ cat /var/log/syslog | grep pulseaudio Jul 30 01:40:08 mythbuntu pulseaudio[17388]: [pulseaudio] module.c: Failed to open module "module-esound-protocol-tcp": file not found Jul 30 01:40:08 mythbuntu pulseaudio[17388]: [pulseaudio] module-gconf.c: pa_module_load() failed Jul 30 01:40:08 mythbuntu pulseaudio[17388]: [pulseaudio] module.c: module-combine is deprecated: Please use module-combine-sink instead of module-combine! Jul 30 01:40:08 mythbuntu pulseaudio[17388]: [pulseaudio] module-combine.c: We will now load module-combine-sink. Please make sure to remove module-combine from your configuration. Jul 30 01:55:07 mythbuntu pulseaudio[17406]: [pulseaudio] module.c: Failed to open module "module-esound-protocol-tcp": file not found Jul 30 01:55:07 mythbuntu pulseaudio[17406]: [pulseaudio] module-gconf.c: pa_module_load() failed Jul 30 01:55:07 mythbuntu pulseaudio[17406]: [pulseaudio] module.c: module-combine is deprecated: Please use module-combine-sink instead of module-combine! Jul 30 01:55:07 mythbuntu pulseaudio[17406]: [pulseaudio] module-combine.c: We will now load module-combine-sink. Please make sure to remove module-combine from your configuration. Jul 30 02:04:43 mythbuntu pulseaudio[17433]: [pulseaudio] module.c: Failed to open module "module-esound-protocol-tcp": file not found Jul 30 02:04:43 mythbuntu pulseaudio[17433]: [pulseaudio] module-gconf.c: pa_module_load() failed Jul 30 02:04:43 mythbuntu pulseaudio[17433]: [pulseaudio] module.c: module-combine is deprecated: Please use module-combine-sink instead of module-combine! Jul 30 02:04:43 mythbuntu pulseaudio[17433]: [pulseaudio] module-combine.c: We will now load module-combine-sink. Please make sure to remove module-combine from your configuration. 

以下是来自服务器(带扬声器的计算机)的 pactl list的输出。

以下是来自客户端的 pactl list的输出。

前言

我能够在实验中复制Dave的问题,并且他们让我相信Flash以某种方式将声音发送到PulseAudio,从而产生大量的网络流量(想想大量的小数据包,而不是带宽); 这压倒了Pu​​lseAudio创建的网络“隧道”,即你拥有

 Youtube => [PA-client => network => PA-server] => speakers 

我可以通过将客户端和服务器放在他们自己的虚拟网络上来解决这个问题,从而在它们之间实现无限快速的连接(10 Gbits / sec); 显然,这对现实世界的网络不起作用:)

所以,有点谷歌搜索和这篇文章 , 这个给了我放弃隧道的想法(中间人,正如戴夫恰当地说的那样),并让客户端直接与服务器对话,即

 Youtube => network => PA-server => speakers 

这对我有用; Flashvideo/声音播放完美无瑕。

我们来试试吧!

假设您的客户端 – 服务器位于本地网络(路由器等)

  1. 初步:在客户端计算机上,如果您有现有设置,请打开paprefs并取消选中所有内容 ; 然后杀死PulseAudio肯定。

  2. 在服务器计算机(即带扬声器的计算机)上,启动PA首选项( paprefs )并按如下方式进行设置:

    在此处输入图像描述在此处输入图像描述在此处输入图像描述在此处输入图像描述

    • 然后关闭它,并在终端中杀死PulseAudio,如图所示,等待,并检查它是否正在侦听端口4713:

    在此处输入图像描述

    • 如果您没有看到它, paprefs再次打开paprefs并检查网络访问和网络服务器选项卡中的其余框(它们不会受到伤害)

    • 确保你知道服务器的IP地址 – 使用ifconfig等。我们将在我们的示例中使用192.168.0.4

  3. 在客户端计算机上,打开终端,首先测试我们的直接连接,使用语音样本WAV(用您的服务器IP替换192.168 …)

     wget http://www.signalogic.com/melp/EngSamples/Orig/female.wav
     paplay --server = 192.168.0.4:4713 female.wav
    
    • 使用Ctrl-C中止如果它工作,它会变得无聊;)

现在,关闭所有正在运行的浏览器实例,然后启动它(假设Firefox使用以下语法):

 PULSE_SERVER=192.168.0.4:4713 firefox & 
  • 用您服务器的相应IP替换192...

  • 在那个Firefox实例中,打开Youtube(或任何Flashvideo网站),然后尝试播放video—手指交叉,它应该没有卡顿/暂停!

让它坚持下去

如果要将此修复程序应用于所有程序而不PULSE_SERVER=192.168.0.4:4713放在每个命令前面,请在客户端上编辑/etc/environment并在新行上添加PULSE_SERVER=192.168.0.4:4713在文件的末尾。 还要在末尾添加换行符。

这将使客户端上的所有声音转到Pulseaudio服务器,因此在对/etc/environment文件进行编辑之前,请确保这是您想要的。

重启,享受sm audio耳的音频体验。 ;)

如果问题是Gnash,这里是如何解决它:

关闭所有浏览器并运行以下命令:

 sudo apt-get purge gnash mozilla-plugin-gnash adobe-flashplugin 

然后这个sudo apt-get install adobe-flashplugin

这解决了我的问题:基本上它删除了与Gnash相关的所有内容并安装了Flash。

我认为您的问题可能与Flash播放器有关。

有一个FireFox插件Flash-Aid可根据您的环境安装appx flash版本。

通过取消选中(禁用) 启用硬件加速复选框,右键单击Flash播放器并单击设置 (刷新以查看其效果),我能够解决video颜色反转问题。

我和你一样有音频卡顿问题。 它最初工作,然后一段时间后口吃开始。希望有人可以解决这个问题 – 虽然我很好奇如何绕过脉冲音频服务器获得声音(我只是使用没有网络音频需求的笔记本电脑) 。

(我在Firefox Kubuntu 12.04 amd64上有Flash 11.2 r202)

你有安装MIXX dj Player吗? 它有时会与声音服务器混淆。 至少如果您安装它将它将默认声音主题“ubuntu”更改为freedesktop。

您可以尝试从Ubuntu软件中心安装“PulseAudio Preferences”。
有一些与网络相关的配置选项。

我有同样的问题,还没有找到解决问题的完美方案。 我注意到一些可能对你有帮助的事情:

1)它适用于我的flash,但有时也使用html5版本的youtube。 这也会发生在你身上吗? ( http://www.youtube.com/html5/你可以在这里启用youtube的html5版本)。 这表明问题不是闪存所独有的(但也许某种程度上是浏览器?)

2)通过将输出设备设置为本地设备然后再返回远程服务器,使用pavucontrol,我可以像你一样正常工作,而无需前往服务器。 这解决了音频和随机暂停以及video跳过的卡顿问题。 这个唉只会在下一个video开始之前有效。

3)我很确定在谷歌上搜索这个问题时,我碰到了一些人说这个问题与客户端的时钟计数器有关,服务器没有正确连接,这是通过重启服务器或重新连接服务器来重置的。客户(即第2点)。 我会试着为你解决这个问题。

我找不到承诺的讨论,但我确实找到了基于计时器的调度的一些背景信息:http: //0pointer.de/blog/projects/pulse-glitch-free.html

我很高兴终于找到了这个页面。

我有这个问题,因为很多版本的Ubuntu(当padevchooser被放弃时它开始变得讨厌)现在和Arch一起。 在启动浏览器之前设置和导出环境变量PULSE_SERVER的解决方案对我来说总是有用。 没有必要在服务器上更改任何内容。

但有一件事我不明白:当我从桌面环境中的终端启动浏览器(Chromium)时,声音会起作用。 当我从启动器 (Xfce,Gnome,…)启动浏览器时 ,它应该是正常的,上面描述的问题就在那里。 我认为这与X11环境变量有关,但这超出了我的技能。

对我来说,我现在通过编辑我的chromium.desktop文件并在那里添加Pulse-Server解决了这个问题:

Exec=sh -c "PULSE_SERVER=mice.local chromium %U"

你需要在firefox上安装这些插件才能完美运行任何媒体。 检查你有哪一个,哪一个没有。

配置文件应该是这样的:

我找到了使用模块隧道接收器来解决口吃问题的解决方案。

您所要做的就是下载Flash Player版本10.3(也有硬件加速支持,Adobe在版本11中删除了它)。

这是x86_64二进制文件

要安装它, libflashplayer.so库解压缩到~/.mozilla/plugins目录,或使用update-alternatives更改当前链接。

请注意,10.3版本存在许多安全漏洞,因此您使用它需要您自担风险。