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

595
user3091850

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

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

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 

Результат на ресивере - это звук skppy с большим количеством этого:

[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 непрерывно правильно буферизовать ввод, чтобы не происходило переполнение и перечитывание / пропуски?

0
Кажется, мне повезло больше, добавив? Buffer_size = 400000 в командную строку avplay. user3091850 7 лет назад 0

1 ответ на вопрос

0
user3091850

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

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

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

Похожие вопросы