YouTube로 스트리밍할 때 라이브 스트림과 텍스트 비디오 간 FFMpeg 전환

YouTube로 스트리밍할 때 라이브 스트림과 텍스트 비디오 간 FFMpeg 전환

한동안 유튜브 라이브 스트리밍을 운영해왔는데, 브라우저를 통해 원격으로 스트리밍을 실행할 수 있도록 솔루션을 개발 중입니다. 내 계획은 스트리밍 정보를 보낼 때 FFMpeg를 실행하여 USB 웹캠을 스트리밍하는 백그라운드 서비스를 실행하는 ASP.net 핵심 웹 API 프로젝트를 갖는 것입니다. 또한 버튼을 눌러 스트림을 "음소거"하여 일부 텍스트 오버레이(예: "기술적 어려움")와 함께 빈 비디오를 표시할 수 있어야 합니다.

지금까지 내 솔루션은 FFMpeg의 두 인스턴스를 사용하는 것입니다. 모드를 전환하면 한 프로세스를 종료하고 다른 프로세스를 시작합니다. 어느 정도 작동하게 되었지만 "음소거 모드"와 "스트리밍 모드" 사이를 앞뒤로 전환하면 YouTube가 스트림 변경에 질식하는 것 같습니다. 음소거 모드에서 다시 스트림 모드로 전환하면 YouTube에서 음소거 모드가 종료된 것을 인식하지 못하기 때문인 것 같습니다. 또한 음소거 모드는 내가 원하는 대로 텍스트를 표시하지만 이로 인해 Youtube 플레이어가 "라이브" 상태를 중단하게 되므로 일반 스트림을 다시 시작하려면 사용자가 최신 상태를 유지하기 위해 "라이브" 버튼을 클릭해야 합니다. .

두 모드에 대한 명령줄은 다음과 같습니다.

스트림 모드:

ffmpeg.exe -f dshow -i video="<webcam name>" -f dshow -i audio="<microphone name>" -vcodec libx264 -pix_fmt yuv420p -preset veryfast -r 30 -g 60 -b:v 3500k -f flv rtmp://a.rtmp.youtube.com/live2/<stream key>

음소거 모드(blank.mp4는 3초 길이의 빈 비디오입니다):

ffmpeg.exe -stream_loop -1 -i ./FFMpeg/blankvid.mp4 -vf "drawtext=fontfile=C\\:/Windows/Fonts/Arial.ttf:text='Technical Difficulties':fontcolor=white:fontsize=60:box=1:[email protected]:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2" -vcodec libx264 -pix_fmt yuv420p -preset veryfast -r 30 -g 60 -b:v 3500k -f flv -flvflags no_duration_filesize rtmp://a.rtmp.youtube.com/live2/<stream key>

마지막 참고 사항: 저는 Blankvid.mp4를 사용하는 대신 컬러 필터를 사용하여 검은색 비디오를 만드는 방법이 있을 수 있다는 것을 알고 있습니다. 이에 대한 매개변수를 얻는 방법도 알고 있다면 매우 도움이 될 것입니다.

답변1

그래서 더 많은 검색과 시행착오 끝에 이제 제대로 작동하는 것 같습니다. 모든 매개변수가 필요한지 확실하지 않지만 문제는 "음소거" 명령에 있었습니다. 빈 영상 대신 컬러 필터를 활용하는 방법도 알아냈습니다. 결국 다음으로 바꿨어요

ffmpeg -re -stream_loop -1 -f lavfi -i "color=black:s=1280x720" -f lavfi -i anullsrc -vcodec libx264 -pix_fmt yuv420p -preset veryfast -r 30 -g 60 -b:v 3500k -vf "drawtext=fontfile=C\\:/Windows/Fonts/Arial.ttf:text='Technical Difficulties':fontcolor=white:fontsize=60:x=(w-text_w)/2:y=(h-text_h)/2" -f flv rtmp://a.rtmp.youtube.com/live2/<stream key>

관련 정보