2017-10-21 150 views
1

我使用ffmpeg轉碼HDHomerun Prime的實時流。一切都很美好。但是,如果可能的話,我希望能夠改變HDHomerun上的頻道,而不必停止並重新啓動ffmpeg轉碼過程。Ffmpeg在轉換HDHomerun Prime轉換頻道時掛起

我啓動ffmpeg進程開始從HDHomerun讀取UDP源。它使用m3u8播放列表將流寫入一系列* .ts文件。

我使用hdhomerun_config改變裝置上的信道的第二個,FFMPEG立即報告以下和掛起:

[mpegts @ 0000018b4e05be60] New video stream 0:3 at pos:295211888 and DTS:40884.7s=108 drop=0 speed=1.02x [mpegts @ 0000018b4e05be60] New audio stream 0:5 at pos:295279568 and DTS:40884.4s frame= 4488 fps= 29 q=23.0 q=27.0 q=23.0 size=N/A time=00:02:28.94 bitrate=N/A dup=108 drop=0 speed=0.959x

我使用推出的ffmpeg的命令是:

ffmpeg.exe -t 03:00:00 -i "udp://192.168.1.150:5000?fifo_size=1000000&overrun_nonfatal=1" -vf yadif=0:-1:1 -y -threads 4 -c:v libx264 -s 1280x720 -r 30 -b:v 4500k -force_key_frames expr:gte(t,n_forced*2) -profile:v high -preset fast -x264opts level=41 -c:a libfdk_aac -b:a 96k -ac 2 -hls_time 10 -hls_list_size 6 -hls_wrap 6 -hls_base_url /stream/ -hls_flags temp_file -hls_playlist_type event "C:\temp\streams\4500-stream.m3u8"

是否有一個特定的命令,我可以通過允許ffmpeg從此「恢復」?或者,有沒有一種arg可以防止這種掛起?我正在使用Ubuntu的ffmpeg交叉編譯的最新版v3.4。從ffmpeg.org使用ffmpeg for Windows的穩定版本v3.4也出現了這個問題。

編輯:

一個新發現的問題,但仍然沒有解決: 如果我改變回原來的通道的通道,ffmpeg的是能夠繼續寫入流。

示例:我從頻道X開始.Ffmpeg正在記錄到文件中。我更改爲頻道Y.Ffmpeg輸出類似於上面發佈的消息並「掛起」的消息。我改回到X頻道,ffmpeg從它離開的地方回來,沒問題。

+0

您可能需要腳本獲取新的流。我懷疑FFmpeg是掛着的,它只是你最初從一個流開始,現在有一個新的不相關的流並排運行,沒有來自原始流的更多數據。 – Brad

+0

你的意思是啓動一個新的ffmpeg進程? – devo1929

回答

0

沒有回答您的問題,太新的評論,但我一直在努力,在https://github.com/bkirkman/hdhrtv

基本上是基於另一個軟件包,可同時做什麼這個實施正在做的是爲每個打開新的流渠道。我懷疑你需要做同樣的事情,這也解釋了爲什麼當你「返回」時,頻道會自行恢復。不幸的是,除非您製作播放列表並緩衝每個頻道,否則您可能無法獲得解決方案,因爲輸入流發生變化。

我很想看看並測試你是否願意分享你的代碼。