Я встановив 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
Це те, що я спробував:
- Відтворення аудіо безпосередньо на Pi працює бездоганно.
- Потокове передавання на інші (настільні) комп’ютери працює чудово.
- Надсилання аудіо з прямим з'єднанням (із зазначенням $ PULSE_SERVER) працює досить добре з дуже невеликим заїканням, але все ще схильний до проблеми-2 (див. Нижче)
- Відправлення аудіо через настільний PulseAudio тунелювання дає постійне заїкання
- Збільшення пріоритетів / планування в режимі реального часу ... не допомогло
- Виправлення частоти дискретизації до 48 кГц ... не допомогло
- Встановлення алгоритму перекомпонування на "тривіальне" ... не допомогло
- Налаштування фрагментів за замовчуванням / розміру фрагмента ... не допомогло
Я не можу знайти жодних ознак проблеми в журналах 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 зависає і взагалі не відтворює аудіо. Іноді це можна відродити, перезапустивши програвач. Іноді він висить так погано, що PulseAudio доведеться перезапустити. Іноді він навіть зависає, коли я змінюю лише рівень гучності.
Згідно з документами PulseAudio, перевага прямого з'єднання над тунельним з'єднанням полягає в кращому буферному керуванні, що, схоже, вказує на те, чому я отримую гарне аудіо при прямому з'єднанні: http://www.freedesktop.org/wiki/Software / PulseAudio / Документація / Користувач / Мережа /
Зараз я не в ідеях. Що може спричинити заїкання та проблему 2? Буде також вдячна ідея, як продовжувати налагодження.