Flash в браузерах не воспроизводит звук с использованием сетевого звука Pulse


18

Я использую PulseAudio для отправки звука по локальной сети на аудиосервер.

При воспроизведении любых флэш-носителей в Firefox или Chrome звук развевается ( пример ), как если бы громкость увеличивалась и уменьшалась каждую секунду.

Я обнаружил, что могу остановить трепетание звука, если я буду выполнять следующие шаги:

  • Запустите 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от клиента .


Какой тип сетевого соединения между источником / приемником?
Иш

@izx: я не знаю, что вы подразумеваете под "источником / стоком". Если это еще один способ сказать «сервер / клиент», то это подключение к локальной сети Ethernet. Если это что-то еще, вам придется объяснить, что вы имеете в виду.
Вопрос

Дэйв, ты можешь присоединиться к чату? Я думаю, что у меня, вероятно, есть решение, но нужно поговорить ...
Иш

Если нет, я просто имел в виду проводной или беспроводной и некоторые детали, например , проводной = 100 Mbps маршрутизатор, и т.д. , или беспроводной = 802.11G, N и т.д.
иш

@izx: О, я вижу. Это проводная локальная сеть с роутером между ними. Я считаю, что это 100 Мбит / с. Я думаю, что клиент способен на 1 Гбит / с, но сетевая карта сервера по-прежнему составляет 100 Гбит / с. Если это важно и есть команда, которую я могу запустить, чтобы получить точную скорость, пожалуйста, дайте мне знать.
Вопрос

Ответы:


10

Предисловие

Мне удалось воспроизвести проблему Дейва в экспериментах, и они заставили меня поверить, что Flash каким-то образом отправляет звук в PulseAudio таким образом, что он создает большой сетевой трафик (думайте о крошечных пакетах, а не о пропускной способности); это подавляет сетевой «туннель», созданный PulseAudio, т.е.

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

Я мог бы решить эту проблему, поместив и клиента, и сервер в их собственную виртуальную сеть, обеспечивая им бесконечно быструю связь (10 Гбит / с) между ними; очевидно, это не работает для реальных сетей :)

Итак, немного погуглив, и этот пост, и этот, дали мне идею отбросить туннель (посредник, как метко выразился Дейв) и заставить клиента общаться напрямую с сервером, т.е.

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

И это сработало для меня; Флэш видео / звук воспроизводятся без нареканий.

Давай попробуем!

Это предполагает, что ваш клиент-сервер находится в локальной сети (маршрутизатор и т. Д.)

  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 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, верно? Попробуйте Firefox в любом случае , даже если female.wavне получилось ...
иш

Argh, я забыл один шаг - пожалуйста , добавьте эту строку в конец /etc/pulse/system.pa на клиенте : load-module module-native-protocol-tcp auth-anonymous=1; сохранить, убить pulseaudio и попробуйте сейчас.
Иш

Да, клиент - настройки paprefs на сервере уже должны быть включены. Вы можете также добавить его на сервер, не повредит ...
Иш

@DaveMG: Извините, я предполагал, что вы пока не прокомментировали эти две строки на клиенте. Извините, был занят в течение последнего дня или около того и не включен. Я вернусь около 11:30 утра JST, и мы можем возобновить. Между тем, вы можете найти эти два видео с настройками туннеля по умолчанию, которые я сделал интересными: заикание , работа
иш

Просто чтобы вы знали, я отредактировал ответ, и я объединяю комментарии, так что это будет немного более понятным для любого, кто мог бы прочитать этот ответ (именно поэтому мои комментарии удалены). Мне просто было интересно, должна ли 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 установить adobe-flashplugin

это исправило мои проблемы: в основном он удаляет все, что связано с Gnash, и устанавливает Flash.


скажи мне, если это работает
Zeitue

Спасибо за предложения. Однако, согласно моему обновленному вопросу, смена плагина Flash не помогает решить проблему.
Вопрос

2

Я думаю, что ваша проблема может быть связана с Flash Player.

Существует Flash-Aid плагина FireFox, который устанавливает версию appx flash в соответствии с вашей средой.


Спасибо за чаевые. Скачал, установил, попробовал несколько разных вариантов Flash. К сожалению, проблема пульсации звука сохраняется.
Вопрос

2

Мне удалось решить проблему инверсии цвета видео, сняв (отключив) флажок « Включить аппаратное ускорение», когда вы щелкнули правой кнопкой мыши на флэш-плеере и нажали « Настройки» («Обновить», чтобы увидеть его эффект).

У меня те же проблемы с заиканием звука, что и у вас. Сначала он работает, потом через некоторое время начинается заикание. Надеюсь, кто-то может это исправить - хотя мне любопытно, как можно обойти импульсный аудиосервер, чтобы получить звук (я просто использую ноутбук без сетевых аудио-потребностей) ,

(У меня Flash 11.2 r202 на Firefox Kubuntu 12.04 amd64)


Спасибо за предложение. Я попытался включить и отключить аппаратное ускорение, но оно, похоже, ничего не меняет для меня. Кроме того, я не знаю, что вы имеете в виду под «обходить импульсный звук».
Вопросник

2

У вас установлен MIXX DJ Player? Это иногда портит звуковой сервер. По крайней мере, если вы установите его, он изменит звуковую тему по умолчанию "ubuntu" на freedesktop.

Вы можете попробовать установить «Настройки PulseAudio» в программном центре Ubuntu.
Есть несколько параметров конфигурации, связанных с сетью.


1

У меня та же проблема, и я еще не нашел идеального решения проблемы. Я заметил некоторые вещи, которые могут вам помочь:

1) Это происходит у меня с flash, но иногда и с html5-версией youtube. Это также случается с вами? ( http://www.youtube.com/html5/ вы можете включить html5-версию youtube здесь). Это говорит о том, что проблема не только во флэш-памяти (но может быть, как-то в браузерах?)

2) Я могу заставить звук работать должным образом, как вы, не заходя на сервер, используя pavucontrol, установив устройство вывода на локальное устройство, а затем обратно на удаленный сервер. Это решает заикание аудио и случайные паузы и пропуски видео. Это увы работает только до следующего видео.

3) Я почти уверен, что при поиске этой проблемы я наткнулся на некоторых людей, которые говорили, что проблема была связана с тем, что счетчики времени клиента и сервера не были подключены должным образом, и именно это сбрасывается при перезапуске сервера или при повторном подключении к серверу. клиент (т.е. пункт 2). Я постараюсь выкопать это для вас.

Я не смог найти обещанное обсуждение, но я нашел некоторую справочную информацию о расписании на основе таймера: http://0pointer.de/blog/projects/pulse-glitch-free.html


+1 за сообщение, что я не одинок во вселенной! Что касается пункта 1, я попытался использовать html5-версию YouTube, пытаясь решить эту проблему, но видео воспроизводилось неправильно и совершенно по-другому, поэтому я чувствовал, что это не совсем точно (возможно, это другая проблема). Для пункта 2 это интересно, и я посмотрю, будет ли это работать и для меня. Это похоже на другое решение той же проблемы. И пункт 3 является наиболее обнадеживающей информацией, поскольку она может привести к фактическому объяснению причины. Спасибо за ответ!
Вопрос

Нет проблем. Я искал информацию, на которую ссылался, но не смог найти ее снова.
ХансХархофф

1
Я разместил отчет об ошибке на панели запуска здесь: bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1030559 Давайте посмотрим, дает ли это нам некоторые подсказки.
HansHarhoff

Ницца. Я разместил комментарий об ошибке, так что, надеюсь, я буду получать уведомления о любых обновлениях. Я не опубликовал свой собственный отчет об ошибках, потому что я никогда не мог понять, как использовать Apport таким образом, чтобы иметь возможность создавать отчет об ошибках, когда не было конкретного сбоя программного обеспечения.
Вопрос

1

Я очень рад, что наконец нашел эту страницу.

У меня была эта проблема со многих версий Ubuntu (она начала становиться неприятной, когда padevchooser был заброшен), а теперь и с Arch. Решение установить и экспортировать переменную среды PULSE_SERVER перед запуском браузера всегда работало для меня хорошо. Не нужно ничего менять на сервере.

Но есть одна вещь, которую я не понимаю: когда я запускаю свой браузер (Chromium) из терминала в среде рабочего стола, звук работает. Когда я запускаю браузер из панели запуска (Xfce, Gnome, ...), как обычно, проблемы, описанные выше, есть. Я думаю, что это как-то связано с переменными среды X11, но это не в моих силах.

Теперь я решил проблему, отредактировав свой chromium.desktopфайл и добавив туда Pulse-сервер:

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


1

Вы должны иметь эти плагины на Firefox для безупречного запуска любых носителей. Проверьте, какой у вас есть, а какой нет.

Профиль должен быть таким:


0

Я нашел решение, чтобы исправить заикание при использовании module-tunnel-sink.

Все, что вам нужно сделать, это загрузить Flash Player версии 10.3 (с поддержкой аппаратного ускорения, Adobe удалила его в версии 11).

Вот бинарный файл x86_64

Для его установки распакуйте libflashplayer.soбиблиотеку в~/.mozilla/plugins каталог или измените текущую ссылку, используя update-alternatives.

Помните, что в версии 10.3 есть много уязвимостей, поэтому вы используете ее на свой страх и риск.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.