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

莫回?zé)o
TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超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部分。
添加回答
舉報(bào)
0/150
提交
取消