1. 程式人生 > >FFmpeg 提取圖片、剪下視訊、編碼視訊、連線視訊相關記錄

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:水印的位置,距離螢幕左側的距離*距離螢幕上側的距離;