libav - потоковое аудио через UDP приводит к переполнению или недогрузке

libav - потоковое аудио через UDP приводит к переполнению или недогрузке

Я транслирую небольшие аудиофайлы с одного raspberry-pi на несколько других raspberry-pi. Беспроводное соединение хорошее, пропускная способность хорошая, пинг/задержка хорошие.

Приемники выглядят так:

avplay -probesize 32 -f mp3 -vn -i udp://239.255.0.1:8001

Когда я отправляю аудиопоток (используя -re) следующим образом:

avconv -re -i 1.wav -f mp3 -b:a 128K -vn udp://239.255.0.1:81?localaddr=192.168.0.1

Результатом на ресивере является прерывистый звук со следующим содержанием:

ALSA lib pcm.c:7843:(snd_pcm_recover) underrun occurred0B f=0/0   
ALSA lib pcm.c:7843:(snd_pcm_recover) underrun occurred0B f=0/0   
ALSA lib pcm.c:7843:(snd_pcm_recover) underrun occurred0B f=0/0   
ALSA lib pcm.c:7843:(snd_pcm_recover) underrun occurred0B f=0/0   
ALSA lib pcm.c:7843:(snd_pcm_recover) underrun occurred0B f=0/0 

Когда я отправляю аудиопоток (без использования -re) следующим образом:

avconv -i 1.wav -f mp3 -b:a 128K -vn udp://239.255.0.1:81?localaddr=192.168.0.1

Результат на ресивере — прерывистый звук со множеством следующих помех:

[mp3 @ 0x72501740] overread, skip -10 enddists: -7 -7  0B f=0/0   
[mp3 @ 0x72501740] overread, skip -7 enddists: -5 -5
[mp3 @ 0x72501740] overread, skip -9 enddists: -6 -6   0B f=0/0   
[mp3 @ 0x72501740] overread, skip -5 enddists: -1 -1   0B f=0/0   
[mp3 @ 0x72501740] overread, skip -7 enddists: -2 -2

Если я увеличу размер зонда на приемнике, то первый воспроизводимый мной звук будет хорошим, а последующие звуки будут плохими, поскольку размер зонда применяется только изначально.

Фактический вопрос: как заставить avplay непрерывно буферизировать входные данные должным образом, чтобы не возникало недочитываний и перечитываний/пропусков?

решение1

Сейчас я использую:

avplay -probesize 32 -f mp3 -vn -i udp://239.255.0.1:8001?buffer_size=400000

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

Связанный контент