ffmpeg對各種視訊及音頻處理是不可繞開的存在,在此我需要記錄下它常用的命令。
轉格式
如把webm轉成mp4:
ffmpeg -i input.webm -c:v libx264 -c:a aac output.mp4
如果想保持原始檔案的元數據:
ffmpeg -i input.webm -c:v libx264 -c:a aac -map_metadata 0 output.mp4
轉音頻
ffmpeg -i input.mp4 -vn -c:a mp3 -b:a 192k output.mp3
常用的比特率:
- 語音或播客:64 kbps 或 96 kbps,檔案小,語音清晰。
- 一般音樂:128 kbps 或 192 kbps,適合大多數場景。
- 高品質音樂:256 kbps 或 320 kbps,適合高保真需求。
消音
使用 -an 會生成無聲的 MP4 檔案。如果只是想靜音但保留音頻軌(例如占位),可以改用 -c:a aac -vol 0(設置音量為 0),但這不常見。
縮放
-vf scale=1280:720
框選
-vf crop=iw-(iw%2):ih-(ih%2)
也可寫成-vf crop=width:height:x:y。
旋轉
九十度:
-vf transpose=1
transpose可以為1、2、3。
任意角度:
-vf "rotate=45*PI/180"
時間區間
ffmpeg -i input.webm -ss 90 -t 60 -c:v copy -c:a copy output.mp4
或者用-to:
ffmpeg -i input.webm -ss 00:01:30 -to 00:02:30 -c:v libx264 -c:a aac output.mp4
合並
ffmpeg -i "concat:video1.mp4|video2.mp4" -c copy output.mp4
查看視訊元數據
ffprobe -v error -select_streams v:0 input.webm
進度
-progress pipe:1
特別注意
當使用了濾鏡-vf後,不能再用-c:v copy,須指定編碼器,例如:
ffmpeg -i input.webm -ss 00:01:30 -t 60 -vf "transpose=1,crop=iw-(iw%2):ih-(ih%2)" -c:v libx264 -an output.mp4
現在有了 ChatGPT 之後這些內容都可以直接問出來了
我就是問grok的,不過寫個總結日後更方便。