Я установил 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? Просто идея, как продолжить отладку также будет оценена.