libav - Audio-Streaming über UDP führt zu Überlauf oder Unterlauf

libav - Audio-Streaming über UDP führt zu Überlauf oder Unterlauf

Ich streame kleine Audiodateien von einem Raspberry Pi zu mehreren anderen Raspberry Pis. Die drahtlose Verbindung ist gut, der Durchsatz ist gut, der Ping/die Latenz ist gut.

Die Empfänger sehen wie folgt aus:

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

Wenn ich den Audiostream (mit -re) wie folgt sende:

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

Das Ergebnis auf dem Receiver ist abgehackter Ton mit vielen dieser Geräusche:

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 

Wenn ich den Audiostream (ohne -re zu verwenden) wie folgt sende:

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

Das Ergebnis auf dem Receiver ist ein ruckelnder Ton mit vielen dieser Geräusche:

[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

Wenn ich die Probesize am Empfänger erhöhe, ist der erste Ton, den ich abspiele, gut und nachfolgende Töne sind schlecht, weil die Probesize nur anfangs gilt.

Die eigentliche Frage: Wie kann ich avplay dazu bringen, die Eingabe kontinuierlich richtig zu puffern, sodass es nicht zu Unterläufen und Überlesungen/Überspringungen kommt?

Antwort1

Ich verwende jetzt:

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

Dies scheint zu helfen und ich glaube, dass alle weiteren Aussetzer auf Funkstörungen und die Tatsache, dass ich UDP verwende, zurückzuführen sind.

verwandte Informationen