縮放
縮放是一個常見的需求,這需要使用到 FFmpeg 提供的視頻過濾器(或稱視頻濾鏡,video filter),也即?-vf
?參數(shù)。由于過濾器的使用過于復(fù)雜,在此也不會詳細(xì)介紹;這里只是針對過濾器中的縮放器(scaler)功能進(jìn)行說明??s放器還有許多復(fù)雜的用法詳情也可以參考官方文檔的?Video filter - Scaler?章節(jié)。
例如,我們要將一個高分辨率視頻從 1440p 縮放,那么我們可以使用參數(shù):
# 輸出到1280x720的例子
## 直接指定寬1280、高720。選擇以下任意一種寫法即可
scale=w=1280:h=720
scale=1280:720
scale=1280x720
## 可以用-1表示按原視頻寬高比自動計(jì)算
scale=1280:-1
scale=-1:720
## 也可以使用倍率的寫法,用iw、ih代表輸入視頻的寬和高
scale=iw/2:ih/2
# 輸出到方形720x720的例子。
## 可以用ow、oh代表變換后輸出視頻的寬和高
scale=iw/2:ow
使用冒號作為分隔符、等號作為鍵值對的連接符。
除了分辨率,我們有時(shí)候也會用?flags
?參數(shù)指定縮放算法(參見官方文檔?Scaler Options)。關(guān)于視頻縮放算法的選擇(與圖片可能不同),可以參考 StackExchange 上的這一篇回答?Which resize algorithm to choose for videos??;簡單地說,?該回答建議在降分辨率時(shí)使用 Lanczos 或 spline,在升分辨率時(shí)使用 bicubic 或 Lanczos?。
命令示例:
# 使用默認(rèn)的 bicubic 算法縮放到高720并保持原寬高比,并用默認(rèn)編碼格式(H.264)編碼
ffmpeg -i video.mp4 -vf scale=-1:720 out.mp4
# 指定使用 Lanczos 算法縮放到原視頻的寬高的各一半,并用 H.265 格式以默認(rèn)質(zhì)量編碼
ffmpeg -i video.mp4 -vf scale=iw/2:ih/2:flags=lanczos -c:v libx265 -c:a copy out.mp4
裁切
裁切同樣使用視頻過濾器完成,使用?crop
?字段:
# 從原視頻距左上角橫20、豎30的位置,向右下角裁切一個寬100、高200的矩形
crop=w=100:h=200:x=20:y=30
crop=100:200:20:30
# 在視頻的正中央進(jìn)行裁切
crop=100:200
# 也可以使用倍率的寫法,用iw、ih代表輸入視頻的寬和高
## 裁切視頻的中間 3/5 寬度畫面
crop=3/5*iw:ih:iw/5:0
例子:文章來源:http://www.zghlxwxcb.cn/news/detail-820307.html
# 裁切 1/6 到 5/6 寬的畫面范圍,并用 x265 編碼器以 CRF 30 的質(zhì)量來編碼
ffmpeg -i video.mp4 -c:v libx265 -crf 30 -vf "scale=2/3*iw:ih:iw/6:0" -c:a copy out.mp4
FFmpeg 還支持一種自動檢測裁切區(qū)域的參數(shù)?cropdetect
,常用于四周有黑色邊框的情形:文章來源地址http://www.zghlxwxcb.cn/news/detail-820307.html
# 自動檢測黑色邊框來裁切
ffmpeg -i video.mp4 -vf "cropdetect" -c:a copy out.mp4
到了這里,關(guān)于ffmpeg 實(shí)用命令 -- 縮放與裁切的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!