Я установил raspbian на свой Pi и настроил приемник PulseAudio с целью потоковой передачи всего звука с моего рабочего стола на Pi, приводя в действие динамики.
Я последовал этому хорошему описанию: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=11124
Сначала это оказалось работать без проблем. Тем не менее, звук, посылаемый с рабочего стола, постоянно заикается на Pi, как если бы был постоянный переполнение буфера с отсутствием нескольких промежуточных сэмплов.
Я провел весь день, пытаясь найти причину, но безрезультатно. Базовая настройка:
- проводная локальная сеть
- последние raspbian pi (26 сентября 2013) с последними обновлениями прошивки
- PulseAudio 2.0 с обеих сторон (рабочий стол Ubuntu)
- Воспроизведение через mplayer, totem, ffplay
- передача по сети через модуль-native-protocol-tcp
Вот что я попробовал:
- Воспроизведение аудио прямо на Пи работает отлично.
- Потоковая передача на другие (настольные) компьютеры работает нормально.
- Отправка аудио по прямому соединению (с указанием $ PULSE_SERVER) работает довольно хорошо с очень небольшим заиканием, но все еще склонна к проблеме 2 (см. Ниже)
- Отправка аудио через десктоп туннелирование PulseAudio обеспечивает постоянное заикание
- Увеличение приоритетов / планирование в реальном времени ... не помогло
- Фиксирование частоты дискретизации до 48 кГц ... не помогло
- Установка алгоритма передискретизации на "тривиальный" ... не помогло
- Настройка default-фрагментов / фрагмента-размера ... не помогла
Я не могу найти никаких признаков проблемы в журналах PulseAudio (показанных с момента, когда я начал воспроизведение):
D: [alsa-sink] protocol-native.c: Requesting rewind due to end of underrun. D: [alsa-sink] sink-input.c: Requesting rewind due to uncorking D: [pulseaudio] sink.c: Suspend cause of sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo is 0x0000, resuming I: [alsa-sink] alsa-sink.c: Trying resume... I: [alsa-sink] alsa-util.c: cannot disable ALSA period wakeups D: [alsa-sink] alsa-util.c: Maximum hw buffer size is 341 ms D: [alsa-sink] alsa-util.c: Set buffer size first (to 16384 samples), period size second (to 16384 samples). I: [alsa-sink] alsa-util.c: ALSA period wakeups were not disabled D: [alsa-sink] alsa-sink.c: Latency set to 25.00ms D: [alsa-sink] alsa-sink.c: hwbuf_unused=60736 D: [alsa-sink] alsa-sink.c: setting avail_min=15665 I: [alsa-sink] alsa-sink.c: Time scheduling watermark is 15.00ms I: [alsa-sink] alsa-sink.c: Resumed successfully... I: [alsa-sink] alsa-sink.c: Starting playback. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo becomes busy. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] ratelimit.c: 115 events suppressed D: [alsa-sink] alsa-sink.c: Wakeup from ALSA! ... no more output, but stuttering continues ...
Проблема 2: как уже было сказано выше, я могу получить вполне нормальный звук с прямым подключением. Однако после нескольких пропусков в потоке (используя mplayer) сервер PulseAudio зависает и вообще не воспроизводит звук. Иногда его можно восстановить, перезапустив mplayer. Иногда он так сильно зависает, что PulseAudio нужно перезапустить. Иногда даже зависает, когда меняю только уровень громкости.
Согласно документам PulseAudio, преимущество прямого соединения по туннельному соединению заключается в улучшении управления буферизацией, что, по-видимому, указывает на то, почему я получаю хороший звук при прямом соединении: http://www.freedesktop.org/wiki/Software / PulseAudio / Документация / Пользователь / Сеть /
У меня сейчас нет идей. Что может вызвать заикание и проблему 2? Просто идея, как продолжить отладку также будет оценена.
источник
Ответы:
tsched_buffer_size
иtsched_buffer_watermark
были настройки, которые заставили это работать для меня.Я запускаю свой PulseAudio как системный экземпляр, поэтому конфигурация находится в
/etc/pulse/system.pa
. Если вы используете вместо этого экземпляр сеанса, то конфигурация будет в/etc/pulse/default.pa
.Это по умолчанию:
Я заменил это следующим: (то есть закомментировал)
Затем я добавил следующую строку:
См. Http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#index6h3.
источник
Суть в том, что вы должны использовать
module-tunnel-sink-new
, но вы также должны сделать несколько других изменений, чтобы получить беспрепятственный сетевой звук на Raspberry Pi 1.Позвольте нам использовать термин отправитель для обозначения компьютера, который отправляет поток на ваш Raspberry Pi.
default-fragments
иdefault-fragment-size-msec
вdaemon.conf
at sender эти значения:module-tunnel-sink-new
эту команду, отправив команду sender (если имя хоста вашего raspberry pi - RP1, и у вас есть mDNS, работающий в вашей локальной сети. В противном случае просто используйте IP-адрес вашего raspberry pi).С этими настройками я получаю звук без заикания от raspberrypi 1 по беспроводной сети, работающей на скорости 54 Мбит / с (в моей настройке отправитель использует ethernet, а RP1 использует wlan). На самом деле, это работает, даже когда отправитель и raspberrypi используют wlan, по крайней мере, если в беспроводной сети нет других устройств.
источник
tsched=0
, см. wiki.archlinux.org/index.php/PulseAudio/… )Вы проверили эту страницу:
http://manpages.ubuntu.com/manpages/lucid/man5/pulse-daemon.conf.5.html
УСТАНОВКИ ФРАГМЕНТА ПО УМОЛЧАНИЮ
источник
Чтобы избавиться от проблем с заиканием или тайм-аутом, попробуйте понизить FW:
источник
rpi-update
использование может сделать для вашей системы.rpi-update
может сделать для наших систем ...Я понял, что эта проблема может быть связана с версией ядра. После обновления с 3.6.11 до 3.12.0 я постоянно получал эти потери. Переход на 3.6.11 решил проблему для меня.
источник
Я читал эту страницу пару раз ... Я также был разочарован заиканием комбинации RaspberryPi-pulseaudio-network. Я искал немного больше и нашел страницу, где я нашел часть решения:
=> Отключить module-suspend-on-idle в файле default.pa (или system.pa).
Вот, заикание исчезло!
Теперь единственная проблема в том, что через некоторое время (от 10 до 20 секунд) воспроизведение зависает: - /
Какие-либо предложения?
источник