
在我的應用程式中,使用者可以尋找特定位置(media.currentPosition),然後按下儲存按鈕,圖像將被匯出,這是我用來實現此目的的 ffmpeg 命令:
"-i",Video.mp4,"-filter_complex","[1:v][0:v]scale2ref=iw:ih[ovr][base];[ovr]colorchannelmixer=aa=0.7[ovrl];[base][ovrl]overlay[v]","-map","[v]","-ss",GetPositionInVideo,"-vframes","1","-q:v","2", "-preset", "ultrafast",directoryToStore+"/"+"Image.jpg"};
它是一個 Android 應用程序,所以它是在字串數組中的。該命令完美運行,但需要很長時間才能完成。
在我的日誌中,它會反覆顯示:
[Progress]: frame= 0 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed= 0x
直到到達該幀,然後顯示:
[Progress]: frame= 1 fps=0.0 q=2.0 Lsize=N/A time=00:00:00.04 bitrate=N/A speed=0.00151x
然後它立即完成。
所以我認為正在發生的事情是,ffmpeg 處理每個幀,直到達到所需的幀,然後對其進行處理。
我的問題:
有沒有辦法提高將單幀從影片匯出到影像的速度/處理時間? - 也許可以跳過不需要的幀並直接轉到用戶想要導出的幀?
答案1
"-ss",GetPositionInVideo,
直接轉到之前"-i",Video.mp4
進行快速查找。