2017-02-07 58 views
0

我在Linux環境中運行ffmpeg,在該環境中,我合併了來自Icecast流和靜態圖像的音頻流,以便能夠將它流式傳輸到Youtube。ffmpeg在流無聲時關閉

有時,Icecast流會非常沉默,有時會持續幾分鐘。由於內容的性質,這是打算髮生的。但是,當流得到太沉默時,ffmpeg就會關閉而不會通知。

我這是怎麼開始的ffmpeg:

ffmpeg -loop 1 -r 30 -s 1280x720 -i /var/www/html/files/youtube/image.png -i http://my-stream-to-icecast:8000/my-mount -c:v libx264 -preset fast -tune stillimage -crf 18 -c:a copy -shortest -pix_fmt yuv420p -f flv rtmp://a.rtmp.youtube.com/live2/my-youtube-key 

如何解決這個任何想法?和/或如何優化以上?

非常感謝!

回答

1

對不起,請忽略此答案。如果該流將被髮送回Icecast服務器而不是Youtube,它將適用。

這很可能是由於Icecast的源超時。如果您使用高效編解碼器,那麼沉默編碼爲「無」,並且icecast服務器將不會獲取任何數據並斷開源連接。

您可以通過查看的Icecast證實這一點是error.log

根據您使用您可以配置最小比特率(編解碼器,然後插入虛擬數據),或者你需要注入的編解碼器低音量進入音頻端。一個或兩個最低有效位就足夠了,而且人不能察覺,但會使編碼器保持忙碌狀態並使比特率上升。

+0

ffmpeg只是流式複製音頻,所以沒有音頻編碼器被調用。我們不知道是否有任何攝製冰點是在OP的控制之下。 – Mulvya

+0

其實完全無視我的答案。由於目標不是Icecast,而是YouTube。一定錯過了。 – TBR

0

你可以嘗試與虛擬物流混合它:

ffmpeg -loop 1 -framerate 30 -i /var/www/html/files/youtube/image.png 
-reconnect_streamed 1 -reconnect_delay_max 120 -i http://my-stream-to-icecast:8000/my-mount 
-f lavfi -i anullsrc 
-filter_complex "[1]aresample=async=1[i];[i][2]amix=2:shortest,volume=2[a]" 
-map 0:v -map "[a]" 
-c:v libx264 -s hd720 -preset fast -tune stillimage -crf 18 -pix_fmt yuv420p 
-c:a aac -shortest 
-f flv rtmp://a.rtmp.youtube.com/live2/my-youtube-key 

我也不怎麼會AMIX如果飼料的Icecast死亡處理。你必須檢查。

+0

謝謝。我嘗試過,但只能得到這個: 無法識別的選項'reconnect_streamed'。 錯誤分裂參數列表:選項未找到 我正在使用v。2.6.9。任何想法? –

+0

您需要3.0或更高版本。 – Mulvya

+0

解決了上述問題,謝謝。但我仍然沒有運氣解決這個問題: [http @ 0x96e9320]流過早結束爲0,應該是18446744073709551615 http:// my-stream-to-icecast:8000/my-mount:輸入/輸出錯誤 還有什麼想法? –