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

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

我使用 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以下是来自的输出客户端

答案1

前言

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

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

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

因此,通过谷歌搜索这个帖子这个让我想到放弃隧道(Dave 恰当地说是中间人),让客户端直接与服务器对话,即

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

这对我来说是有效的;Flash 视频/声音播放完美。

我们来尝试一下吧!

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

  1. 准备工作:在客户端计算机上,如果您有现有设置,请打开paprefs并取消选中一切;然后终止 PulseAudio 以确保无误。

  2. 在服务器计算机(即带有扬声器的计算机)上,启动 PA Preferences ( paprefs) 并进行如下设置:

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

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

    在此处输入图片描述

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

    • 确保您知道服务器的 IP 地址 - 使用等。我们将在示例中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 女.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

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

答案2

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

有一个 FireFox 插件闪光援助根据您的环境安装 appx flash 版本。

答案3

如果问题出在 Gnash,可以按照以下方法修复:

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

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

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

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

答案4

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

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

相关内容