FFmpeg 提取圖片、剪下視訊、編碼視訊、連線視訊相關記錄
1、提取圖片
FFmpeg -ss start_time -t last_time -i video_path -f image2 -r fps -q:v 2 image_path
其中:start_time 表示起始時間,一般表現為 00:00:00,last_time 表示持續時間,格式同起始時間。-to 可以指定結束時間,單位以秒記。
-f iamge2 指定圖片編碼格式,-r 指定提取頻率,-q:v 指定圖片高質量,image_path 為圖片輸出路徑,提取多個圖片可用 path_%d 命名。
取樣頻率 r 建議按照視訊自身幀率來採。如視訊15幀,而以30的幀頻來採集影象,則兩幀一重複。同理設定成15以下,採集出的影象數肯定小於總幀數。
貌似 jpg 與 bmp 無明顯差異,體積大小不同。理論上 jpg 更耗時,有圧縮過程。預設情況下,jpg 壓縮率一般可達到 10.
4K 視訊影象尺寸 3840x2160,bmp可達到23-24M。
2、編碼視訊
FFmpeg -i image_path -vcodec code -acodec code -r fps video_path
該命令可以對規則命名的圖片群進行編碼,code 表示視訊及音訊編碼方式, fps 為幀頻
-r,此處 r 據說是硬砍,不懂專業術語。建議 framerate 替代。
不過貌似 ffmpeg 幀頻限制在了 25,低於25時預設25.
3、剪下視訊
FFmpeg -ss start_time -t last_time -i video_path -vcodec code -acodec code -r fps video_path
剪下視訊命令與圖片提取命令時間設定相似,編解碼引數設定與編碼視訊命令設定相似
4、連線視訊
windows系統與Linux系統操作略有差異,僅試了Windows系統。
copy /b path_in1+path_in2+...+path_inN path_all
FFmpeg -i path_all path_out
Linux系統下貌似用cat命令,未測試
cat path_in1+path_in2+...+path_inN path_all
其中各子檔案需要相同的格式,包括編碼格式、幀頻等。
如果檔案型別不同,可先FFmpeg處理一致。
5、新增水印
ffmpeg -i inputvideo -vf "movie=1.jpg,scale=150:300[watermask];
[in][watermask] overlay=100:100[out]" -y outputvideo
scale:水印大小,水印長度*水印的高度;
overlay:水印的位置,距離螢幕左側的距離*距離螢幕上側的距離;