今天繼續學習ffmpeg工具,上篇部落格主要講的是ffmpeg對音訊和影片的處理,今天這篇是對影像的處理,沒想到也能操作。它的命令和處理音影片的一樣,都是命令列。能夠處理影像的尺寸、裁剪、旋轉、模糊、去噪、加水印和生成縮圖等。
1、影像處理命令
1.1、調整影像大小
ffmpeg -i input.jpg -vf scale=640:360 output.jpg
上述命令將輸入影像 input.jpg 調整為解析度為 640x360 的輸出影像 output.jpg。
1.2、影像裁剪
ffmpeg -i input.jpg -vf crop=640:360:80:60 output.jpg
上述命令將輸入影像 input.jpg 裁剪為寬度 640,高度 360,x 軸偏移量為 80,y 軸偏移量為 60 的輸出影像 output.jpg。
1.3、影像旋轉
ffmpeg -i input.jpg -vf "transpose=1" output.jpg
上述命令將輸入影像 input.jpg 逆時針旋轉 90 度,輸出影像 output.jpg。
1.4、影像加水印
ffmpeg -i input.jpg -i watermark.png -filter_complex "overlay=10:10" output.jpg
上述命令將輸入影像 input.jpg 加上水印影像 watermark.png,水印位置為 (10,10),輸出影像 output.jpg。
1.5、影像模糊
ffmpeg -i input.jpg -filter_complex "boxblur=5:1" output.jpg
上述命令將輸入影像 input.jpg 進行模糊處理,模糊程度為 5,模糊型別為 boxblur,輸出影像 output.jpg。
1.6、影像去噪
ffmpeg -i input.jpg -filter_complex "removegrain=20" output.jpg
上述命令將輸入影像 input.jpg 進行去噪處理,去噪程度為 20,輸出影像 output.jpg。
1.7、影像縮圖
ffmpeg -i input.jpg -vf "thumbnail,scale=640:360" -frames:v 1 output.jpg
上述命令將輸入影像 input.jpg 轉換為解析度為 640x360 的縮圖,輸出影像 output.jpg。
2、影片截圖
影片截圖是將影片中的某一幀或多幀影像提取出來,生成圖片檔案的過程。在 FFmpeg 中,使用 -ss 引數指定擷取的時間點,使用 -vframes 引數指定擷取的幀數,使用 -r 引數指定幀率。下面是一些常見的影片截圖操作:
2.1、擷取影片的第一幀
ffmpeg -i input.mp4 -ss 00:00:00.000 -vframes 1 output.jpg
2.2、擷取影片中的其中一幀
ffmpeg -i input.mp4 -ss 00:00:10.000 -vframes 1 output.jpg
其中 -ss 引數指定擷取影片的時間點,-vframes 1 指定只擷取一幀影像,output.jpg 指定輸出檔名和格式。
2.3、擷取影片中的多幀
ffmpeg -i input.mp4 -ss 00:00:10.000 -t 5 -r 1 -f image2 output_%03d.jpg
其中 -ss 引數指定擷取影片的起始時間點,-t 引數指定擷取影片的時長,-r 1 指定每秒擷取一幀,-f image2 指定輸出為圖片格式,output_%03d.jpg 指定輸出檔名,%03d 表示輸出檔名中的數字以三位數顯示,逐個遞增。
2.4、擷取影片中的某個時間段內的多幀
ffmpeg -i input.mp4 -ss 00:00:10.000 -t 5 -r 1 -f image2 output_%03d.jpg
其中 -ss 引數指定擷取影片的起始時間點,-t 引數指定擷取影片的時長,-r 1 指定每秒擷取一幀,-f image2 指定輸出為圖片格式,output_%03d.jpg 指定輸出檔名,%03d 表示輸出檔名中的數字以三位數顯示,逐個遞增。
2.5、擷取影片中的關鍵幀
ffmpeg -i input.mp4 -vf select="eq(pict_type\,I)" -vframes 1 output.jpg
其中 -vf select="eq(pict_type\,I)" 引數指定選擇影片中的關鍵幀作為截圖,-vframes 1 指定只擷取一幀影像,output.jpg 指定輸出檔名和格式。
3、影片水印新增
在影片中新增水印可以保護版權,防止他人盜用或修改影片。FFmpeg提供了多種方式來新增水印,下面是一些常用的命令示例:
3.1、新增文字水印
ffmpeg -i input.mp4 -vf "drawtext=fontfile=Arial.ttf:text='My Watermark':fontcolor=white:fontsize=24:x=10:y=10" output.mp4
這個命令會在輸入影片的左上角新增一個白色的"My Watermark"文字水印。
3.2、新增圖片水印
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
這個命令將"watermark.png"圖片疊加在輸入影片的左上角。
3.3、新增透明圖片水印
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10:alpha=0.5" output.mp4
這個命令與前一個命令類似,但是"watermark.png"圖片有50%的透明度。
3.4、新增滾動文字水印
ffmpeg -i input.mp4 -vf "drawtext=fontfile=Arial.ttf:text='My Watermark':fontcolor=white:fontsize=24:x=w-tw-10:y=h-th-10:enable='between(t,5,15)'" output.mp4
這個命令將"My Watermark"文字水印新增在輸入影片的右下角,從第5秒開始到第15秒結束,而且水印是在這期間滾動的。
這些命令只是FFmpeg新增水印的眾多方法中的一部分。透過這些命令的示例,我們可以瞭解如何新增文字水印、圖片水印以及一些高階選項,如水印位置、透明度和滾動文字水印等。
4、影片新增特效
在 FFmpeg 中,我們可以使用濾鏡來新增各種影片特效。下面簡單介紹幾個常見的影片特效:
4.1、旋轉特效
使用 rotate 濾鏡可以對影片進行旋轉。比如以下命令將影片逆時針旋轉90度:
ffmpeg -i input.mp4 -vf "rotate=PI/2" output.mp4
4.2、映象特效
使用 hflip 和 vflip 濾鏡可以實現影片水平和垂直映象。比如以下命令將影片水平映象:
ffmpeg -i input.mp4 -vf "hflip" output.mp4
4.3、模糊特效
使用 boxblur 濾鏡可以對影片進行模糊處理。比如以下命令對影片進行模糊處理:
ffmpeg -i input.mp4 -vf "boxblur=10:2" output.mp4
4.4、縮放特效
使用 scale 濾鏡可以對影片進行縮放。比如以下命令將影片縮小一半:
ffmpeg -i input.mp4 -vf "scale=iw/2:ih/2" output.mp4
4.5、灰度特效
使用 colorchannelmixer 濾鏡可以將影片轉換為灰度影像。比如以下命令將影片轉換為灰度影像:
ffmpeg -i input.mp4 -vf "colorchannelmixer=0.3:0.4:0.3:0:0.3:0.4:0.3:0:0.3:0.4:0.3" output.mp4
在 colorchannelmixer 濾鏡中,第一行表示紅色通道、綠色通道、藍色通道的轉換系數,第二行表示常數項。