다음 명령을 사용하여 Raspberry Pi 4에서 비디오/오디오를 스트리밍하기 위해 ffmpeg를 사용하고 있습니다.
ffmpeg -re -f v4l2 -input_format h264 -thread_queue_size 512 -i ${video_device} -re -f alsa -thread_queue_size 512 -itsoffset 0 -i "default:CARD=C920" -acodec aac -vf drawtext="fontsize=48: box=1: [email protected]: boxborderw=2: fontcolor=white: x=(w-text_w)/1.1: y=((h-text_h)/1.4)+((h-text_h)/4): text='%{localtime\:%H\\\\\:%M\\\\\:%S}'" -vcodec libx264 -b:v 256k -r 10 -tune zerolatency -strict -2 -f mpegts -flush_packets 1 udp://192.168.116.13:5000?pkt_size=512
이 코드를 수동으로 실행하면 제대로 작동합니다(1-2초 지연으로 스트리밍이 잘됨).
부팅시 자동으로 시작되도록 준비했습니다.초기화 파일스크립트 및 사용업데이트-rc.d. 지금까지는 문제가 없습니다. 수동 시작 스크립트를 사용하는 경우
sudo service myscript start
나는 똑같이 좋은 성과를 얻었다. 하지만 부팅 시 시작하면 스트리밍 성능이 좋지 않습니다(사운드가 10 정도 지연되고 때로는 사운드가 끊어지고 때로는 비디오가 일시 중지됩니다...).
난 달린다
ps aux
수동 시작과 자동 시작으로 구분됩니다. 흥미롭게도 부팅 시 시작하면 수동으로 시작할 때(189%)보다 CPU 사용량이 훨씬 낮습니다(87.3%). 이는 수동 시작에서 더 많은 스레드를 사용하므로 성능이 향상될 수 있음을 의미할 수 있습니다.
시작 시 스트리밍을 시작하면 스트리밍 성능이 악화되는 이유에 대한 아이디어가 있습니까? 이 문제를 해결하는 방법은 무엇입니까?
업데이트(@JonasBerlin의 의견 이후):
두 경우 모두(수동 시작 및 부팅 시 시작) 사용자로 명령을 실행합니다.PI.
ls -l /proc/<pid>/fd
다음과 같은 출력을 제공합니다.
수동 시작(좋은 스트리밍 성능, 높은 CPU 사용량)
lr-x------ 1 pi pi 64 Feb 7 15:30 0 -> /dev/null
lrwx------ 1 pi pi 64 Feb 7 15:30 1 -> 'socket:[18561]'
lrwx------ 1 pi pi 64 Feb 7 15:30 2 -> 'socket:[18561]'
lrwx------ 1 pi pi 64 Feb 7 15:30 3 -> /dev/video0
lr-x------ 1 pi pi 64 Feb 7 15:30 4 -> /dev/snd/timer
lrwx------ 1 pi pi 64 Feb 7 15:30 5 -> /dev/snd/pcmC1D0c
lrwx------ 1 pi pi 64 Feb 7 15:30 6 -> 'socket:[17677]'
시작 시 시작(낮은 스트리밍 성능, 낮은 CPU 사용량)
lr-x------ 1 pi pi 64 Feb 7 15:29 0 -> /dev/null
lrwx------ 1 pi pi 64 Feb 7 15:29 1 -> 'socket:[16471]'
lrwx------ 1 pi pi 64 Feb 7 15:29 2 -> 'socket:[16471]'
lrwx------ 1 pi pi 64 Feb 7 15:29 3 -> /dev/video0
lr-x------ 1 pi pi 64 Feb 7 15:29 4 -> /dev/snd/timer
lrwx------ 1 pi pi 64 Feb 7 15:29 5 -> /dev/snd/pcmC1D0c
lrwx------ 1 pi pi 64 Feb 7 15:29 6 -> 'socket:[17332]'