Logitech c920에서 ffmpeg를 통해 YouTube로 비디오를 라이브 스트리밍하려고 합니다. Twitch에서 작동하는 설정이 있는데 YouTube에서 다음 메시지와 함께 스트림을 거부합니다.
4초 이하의 키프레임 빈도를 사용하세요. 현재 키프레임이 충분히 자주 전송되지 않아 버퍼링이 발생합니다. 현재 키프레임 빈도는 9.9초입니다.
내 명령은 다음과 같습니다
ffmpeg \
-ar 44100 \
-acodec pcm_s16le \
-f s16le \
-ac 2 -i /dev/null \
-f v4l2 \
-codec:v h264 \
-framerate 60 \
-video_size 1920x1080 \
-i /dev/video0 \
-c:v copy \
-c:a aac \
-f flv \
-strict -2 \
rtmp://a.rtmp.youtube.com/live2/$STREAM_KEY
ffmpeg는 로그에 다음 메시지를 제공합니다.
[video4linux2,v4l2 @ 0x2965ec0] The driver changed the time per frame from 1/60 to 1/30
카메라, v4l2 또는 ffmpeg가 적절한 속도로 키프레임을 제공하도록 강제하는 방법을 아는 사람이 있습니까?
감사해요.
답변1
다음 명령을 사용하여 YouTube Live에서 실행되도록 했습니다.
ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f v4l2 -input_format h264 -i /dev/video0 -codec:v copy -acodec aac -ab 128k -g 50 -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/REMOVED
다음을 수행하여 해상도를 설정할 수 있습니다.
v4l2-ctl --device=/dev/video0 --set-fmt-video=width=1280,height=720
ffmpeg 출력은 다음과 같습니다.
Stream #1:0: Video: h264 (Constrained Baseline), yuvj420p(pc), 320x240 [SAR 1:1 DAR 4:3], -5 kb/s, 30 fps, 30 tbr, 1000k tbn, 60 tbc
결국 YouTube는 키프레임 문제에 대해 불평했지만 1080p에서 괜찮은 스트리밍 품질을 유지했습니다.