libav - UDP를 통한 오디오 스트리밍으로 인해 오버리드 또는 언더런이 발생함

libav - UDP를 통한 오디오 스트리밍으로 인해 오버리드 또는 언더런이 발생함

하나의 라즈베리 파이에서 다른 여러 라즈베리 파이로 작은 오디오 파일을 스트리밍하고 있습니다. 무선 연결이 좋고, 처리량이 좋고, 핑/대기 시간이 좋습니다.

수신기는 다음과 같습니다.

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를 사용하고 있다는 사실 때문이라고 생각합니다.

관련 정보