이 질문을 업데이트하겠습니다
ffmpeg-버전
ffmpeg -version
ffmpeg version 4.3.1-4ubuntu1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 10 (Ubuntu 10.2.0-9ubuntu2)
이 명령을 실행하여 ffmpeg를 사용하여 YouTube로 스트리밍합니다.
ffmpeg -y -threads 12 \
-loop 1 -framerate 30 -re \
-i ./1280x720.jpg \
-i ./audio.mp3 \
-video_size 1280x720 \
-vcodec libx264 -pix_fmt yuv420p \
-b:v 4500k -maxrate 5500k -bufsize 22000k \
-preset ultrafast -crf 23 -tune stillimage \
-b:a 128k -ar 44100 -ac 2 -acodec aac \
-filter_complex "dynaudnorm=f=150:g=15" \
-r 30 -g 60 \
-f flv rtmp://a.rtmp.youtube.com/live2/xxxx 2>&1 | tee _LOG
스트림은 45-53 분 동안 훌륭하고 ffmpeg에서 다음과 같은 오류가 발생합니다.
[flv @ 0x56077027cd80] Delay between the first packet and last packet in the muxing queue is 10034000 > 10000000: forcing output
그런 다음 유튜브는 데이터가 수신되지 않고 스트림이 끝날 것이라고 말하기 시작합니다.
다음은 전체 로그입니다. http://0x0.st/-zUH.txt
MP3 재생 시간은 00:49:57.42
스트림이 끝난 후 엉망이됩니다. 오디오를 루핑하고 입력의 실시간 읽기를 위해 -stream_loop -1
추가하십시오 -re
.
ffmpeg -y \
-loop 1 -framerate 30 -re -i ./1280x720.jpg \
-re -stream_loop -1 -i ./audio.mp3 \
-c:v libx264 -pix_fmt yuv420p \
-b:v 4500k -maxrate 5500k -bufsize 22000k \
-preset ultrafast -tune stillimage \
-b:a 128k -ar 44100 -ac 2 -c:a aac \
-filter_complex "dynaudnorm=f=150:g=15" \
-g 60 -f flv rtmp://a.rtmp.youtube.com/live2/xxxx
또는 오디오가 끝날 때 스트림을 종료 -re -stream_loop -1
하려면 출력 옵션을 제거 하고 추가하십시오 -shortest
.
관련없는 변경 :
-threads
. 하자 ffmpeg
자동으로 선택합니다.-video_size 1280x720
특정 demuxer에 대한 입력 옵션이며 명령에서 아무 작업도 수행하지 않습니다. 제거되었습니다. 입력 한 내용은 이미 1280x720입니다. 그렇지 않으면 특정 크기에 맞게 ffmpeg로 동영상 크기 조정을 참조하세요 .-b:v
및 -crf
상호 배타적입니다. 귀하의 경우 -b:v
는 무시되고 있습니다. 스트리밍의 경우 -b:v
. 제거되었습니다 -crf
.-framerate 30
했으므로 -r 30
필요하지 않습니다. 제거되었습니다.-preset
여전히 충분히 빠르게 인코딩 되는 가장 느린 것을 사용하는 것이 좋습니다.이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다