當串流傳輸到 YouTube 時,FFMpeg 在直播串流和文字影片之間切換

當串流傳輸到 YouTube 時,FFMpeg 在直播串流和文字影片之間切換

我運行 Youtube 直播已經有一段時間了,我正在開發一個解決方案,以便我可以透過瀏覽器遠端運行該串流。我的計劃是讓一個 ASP.net core Web api 專案運行一個後台服務,當我向它發送串流資訊時,它會啟動 FFMpeg 來串流傳輸 USB 網路攝影機。我還需要能夠按下按鈕來「靜音」串流,以便它顯示帶有一些文字覆蓋的空白影片(即「技術困難」)。

到目前為止,我的解決方案是使用兩個 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>

相關內容