我正在通過UDP接收MPEG-TS流,並使用FFmpeg(使用編解碼器複製和映射所有流)將內容保存到文件。在數據流停止的情況下,我想重新啓動FFmpeg並恢復到已寫入的現有文件。如何讓ffmpeg附加到現有的輸出文件而不覆蓋它?
如何配置FFmpeg以附加到文件,並在重新啓動時不覆蓋它?
輸入和輸出容器都是MPEG-TS,流和編解碼器的數量是相同的。
我正在通過UDP接收MPEG-TS流,並使用FFmpeg(使用編解碼器複製和映射所有流)將內容保存到文件。在數據流停止的情況下,我想重新啓動FFmpeg並恢復到已寫入的現有文件。如何讓ffmpeg附加到現有的輸出文件而不覆蓋它?
如何配置FFmpeg以附加到文件,並在重新啓動時不覆蓋它?
輸入和輸出容器都是MPEG-TS,流和編解碼器的數量是相同的。
您可以輸出到stdout
並使用shell重定向輸出到文件。這只作品格式直接concatenable如mpegts
和將創建間斷:
ffmpeg -re -i udp://... -f mpegts - >> output.ts
如何防止不連續?我想附加幾個.ts塊同時播放視頻,但我可以看到每隔10秒鐘切塊。如果覆蓋文件(使用-i「concat:chunk1.ts | chunk2.ts」)而不是追加,我沒有這個問題。應該可以用.ts塊做,而不會覆蓋,因爲這樣HLS m3u8 livestream如何工作,您可以在文件仍在下載時播放。 – baptx
我不認爲它的實現,但你可以捕捉到不同的文件,後來將它們連接起來。你可以使用'-strftime 1'%Y-%m-%d_%H-%M-%S.ts'來爲你的文件名添加一個時間戳,如果需要的話。 – aergistal
不幸的是,這對於我來說不適合捕獲數據流只是我工作的解決方案的一部分,記錄的文件通過我製作的基於節點的網絡協議同時傳輸到其他計算機,它有點像半實時傳輸解決方案,我可以重寫代碼我的源節點允許編號的文件,但它會是一個麻煩。最簡單的解決方案是,如果FFmpeg可以繼續寫入已存在的文件,而不是覆蓋。 – TomRay74