有沒有辦法讓 ffmpeg 將傳入的圖像轉換為 HLS,并在我想要的時候停止?我正在使用 ffmpeg 將圖像轉換為 m3u8/ts 以進行流式傳輸。攝像頭設備將 24/7 發送圖像,ffmpeg 將在用戶請求時轉換這些圖像,直到他們停止觀看。目前,我通過 Java 網絡從攝像頭設備獲取圖像,然后將這些圖像移動到 ffmpeg 輸入目錄并使用 C++ 進行轉換。這是一個完成這項工作的循環,因此每次移動圖像時都會執行新的 ffmpeg。問題是剩余的 ts 文件太多,并且它們占用了服務器上的大量空間。所以我嘗試使用delete_segments選項刪除那些,但由于每次執行ffmpeg,它無法刪除之前由ffmpeg生成的段。以下是我考慮的一些方法:使用其他功能刪除文件,無需使用 ffmpeg。也許將圖像直接傳輸到 ffmpeg 輸入,并以某種方式使 ffmpeg 繼續將這些圖像轉換為 ts。(而且我也想不出)或者也許改變整個結構。使用選項 1 會容易得多,但如果我可以使用 ffmpeg 自己的函數來做到這一點,那就太好了。
1 回答

莫回無
TA貢獻1865條經驗 獲得超7個贊
您可以使用輸入文件列表,它可以是特殊文件(例如 FIFO 管道)。
那么你的命令可能如下所示:
mkfifo mylist.pipe
ffmpeg -f concat -safe 0 -i mylist.pipe output.mkv
您可以將每個圖像添加到 mylist.pipe,如下所示:
echo "file '/path/to/image.png'"? >mylist.pipe
echo "file '/path/to/image2.png'" >mylist.pipe
如果路徑是相對的,則不需要該-safe 0部分。
添加回答
舉報
0/150
提交
取消