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


18

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

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

我发现可以按照以下步骤停止声音的颤动:

  • 开始播放Flash视频,例如YouTube上的视频

  • pulseaudio --kill服务器上运行

  • 等待约7秒

此后,PulseAudio服务器会自动重生,并且Flash视频中的声音很好。

问题是每次开始播放Flash视频都必须这样做。这显然是不可取的。

经过这些步骤后,如何使声音正常工作,而不必这样做呢?

我怀疑有人会提出立即和简单的解决方案(尽管那会很好),所以赏金可能会落到至少提供解决问题方法的人身上。


细节

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

声音设定

PulseAudio日志输出,尝试播放Flash视频时获取。

我试图从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客户端


源/接收器之间是哪种网络连接?
ish 2012年

@izx:我不知道您所说的“源/接收器”是什么意思。如果这是说“服务器/客户端”的另一种方式,那就是以太网LAN连接。如果还有其他问题,您将必须解释您的意思。
提问者

戴夫,你可以加入聊天室吗?我想我可能有解决办法,但需要谈谈...
ish

如果没有,我只是意味着有线或无线和一些细节,比如有线= 100Mbps的路由器等或无线= 802.11G,N等
ISH

@izx:哦,我明白了。这是一个有线局域网,它们之间有一个路由器。我相信是100MBps。我认为客户端可以支持1GBps,但服务器LAN卡仍为100GBps。如果那很重要,并且有一条命令可以让我获得准确的速度,请告诉我。
提问者

Answers:


10

前言

我能够在实验中复制Dave的问题,他们使我相信Flash会以某种方式将声音发送到PulseAudio,从而产生大量的网络流量(想想很多小的数据包,而不是带宽)。这淹没了PulseAudio创建的网络“隧道”,即您已经

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

我可以通过将客户端和服务器都置于自己的虚拟网络中来解决此问题,从而为它们之间提供无限快速的连接(10 Gbits / sec)。显然,这不适用于现实网络:)

所以,有点谷歌搜索和这篇文章这一个给我滴隧道(中间人,戴夫恰如其分地把它),并直接将其客户与服务器,即理念

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

那对我有用;Flash视频/声音完美播放。

试试吧!

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

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

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

    在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

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

    在此处输入图片说明

    • 如果看不到,请paprefs再次打开并选中“网络访问”和“网络服务器”选项卡中的其余复选框(它们不会造成伤害)

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

  3. 在客户端计算机上,打开一个终端,并首先通过语音样本WAV测试我们的直接连接(将192.168 ...替换为您的服务器IP!)

    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 &
  • 192...适合您服务器的IP 替换!

  • 在该Firefox实例中,打开Youtube(或任何Flash视频站点),然后尝试播放视频---手指交叉,它应该不会停顿/暂停!

使它粘

如果要使此修补程序适用于所有程序,而不必放在PULSE_SERVER=192.168.0.4:4713每个命令的前面,请/etc/environment客户端PULSE_SERVER=192.168.0.4:4713上进行编辑,然后在文件末尾添加新行。同时在末尾添加换行符。

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

重新启动,并享受平滑的音频体验。;)


有没有防火墙?然后您将192.168.0.4放在各处,对吗?即使female.wav不起作用,也请尝试使用Firefox ...
ish

哎呀,我忘了一步-请加入这一行的末尾/etc/pulse/system.pa 在客户端上load-module module-native-protocol-tcp auth-anonymous=1; 保存,杀死Pulseaudio,然后立即尝试。
ish 2012年

是的,客户端-服务器上的paprefs设置应该已经启用了该功能。您也可以将其添加到服务器,也不会造成伤害...
ish 2012年

@DaveMG:抱歉,我认为您现在暂时不会在客户端上评论这两行。很抱歉,在最后一天左右忙碌,没有继续。我将在JST上午11:30回来,我们可以继续。同时,您可能会发现我感兴趣的默认隧道配置的以下两个视频:口吃工作
ish 2012年

大家知道,我编辑了答案,然后合并了注释,以便对可能阅读此答案的任何人都更加清楚(这就是删除我的注释的原因)。我只是想知道答案load-module module-native-protocol-tcp auth-anonymous=1;/etc/pulse/system.pa是否应包含该行,或者该行是否可以被丢弃?
提问者

3

如果问题是Gnash,请按以下步骤解决:

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

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

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

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


告诉我它是否有效
zeitue 2012年

感谢您的建议。但是,按照我更新的问题,更改Flash插件似乎对解决问题没有帮助。
提问者

2

我认为您的问题可能与Flash Player有关。

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


谢谢你的提示。下载,安装并尝试了Flash的一些不同变体。不幸的是,声音脉冲问题仍然存在。
提问者

2

通过右键单击Flash Player并单击“设置” (刷新以查看其效果),取消选中(禁用)“ 启用硬件加速”复选框,可以解决视频颜色反转问题。

我遇到了与您同样的音频卡顿问题。它最初可以正常工作,然后在一段时间后开始出现卡顿现象。希望有人可以解决此问题-尽管我很好奇如何绕过脉冲音频服务器获取声音(我只是在使用没有网络音频需求的笔记本电脑) 。

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


谢谢你的建议。我尝试启用和禁用硬件加速,但是它似乎并没有改变我的任何东西。另外,我不知道您所说的“绕过脉冲音频”是什么意思。
提问者

2

您是否安装了MIXX dj Player?有时会与声音服务器混淆。如果您安装了Atleast,它将把您的默认声音主题“ ubuntu”更改为freedesktop。

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


1

我有同样的问题,但尚未找到完美的解决方案。我注意到一些可以帮助您的事情:

1)这对我来说是用Flash发生的,但有时也发生在html5版本的youtube上。你也会这样吗?(http://www.youtube.com/html5/,您可以在此处启用html5版本的youtube)。这表明该问题不是Flash独有的(但也许某种程度上是浏览器?)

2)通过将输出设备设置为本地设备,然后再返回到远程服务器,可以使用pavucontrol使声音像您一样正常工作,而无需转到服务器。这解决了音频的卡顿和视频的随机停顿和跳跃。遗憾的是,直到下一个视频开始播放为止。

3)我敢肯定,在搜寻此问题时,我遇到了一些人,说该问题与客户端的时钟计数器和服务器未正确链接有关,这是通过重新启动服务器或与服务器重新连接来重置的客户(即第2点)。我会尽力为您找出答案。

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


+1让我知道我并不孤单!对于第1点,我确实尝试使用html5版本的YouTube尝试解决此问题,但是视频无法正常播放,并且以完全不同的方式播放,因此我觉得这没有定论(也许是另一个问题)。对于第二点,这很有趣,我将看看它是否也适用于我。对于相同的问题,这似乎是不同的解决方法。第3点是最令人鼓舞的信息,因为它有可能开始引导对原因的实际解释。感谢您的回应!
提问者

没问题。我在寻找我所指的信息,但无法再次找到它。
HansHarhoff 2012年

1
我在此处向启动板发布了一个错误报告:bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1030559 让我们看看这是否为我们提供了一些指导。
汉斯·哈霍夫(HansHarhoff)2012年

真好 我已对该错误发表了评论,因此希望我能收到任何更新的通知。我之所以没有发布自己的错误报告,是因为我永远无法弄清楚如何使用Apport来在没有特定软件崩溃时能够发出错误报告。
提问者

1

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

自从许多版本的Ubuntu(放弃padevchooser时它开始变得讨厌),现在使用Arch以来,我就遇到了这个问题。在启动浏览器之前设置和导出环境变量PULSE_SERVER的解决方案一直对我有用。无需更改服务器上的任何内容。

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

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

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


1

您需要在firefox上安装这些插件才能完美地运行任何媒体。检查您拥有和没有。

配置文件应为:


0

我找到了一种解决方法,可以在使用模块隧道接收器时解决口吃问题。

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

这是x86_64二进制文件

要安装它,请将libflashplayer.so库提取到~/.mozilla/plugins目录或使用更改当前链接update-alternatives

请注意,10.3版本具有许多安全漏洞,因此使用该风险自担。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.