【FFmpeg】開源且功能強大的影音處理框架

FFmpeg是一個自由軟體,可以執行音訊和視訊多種格式的錄影、轉檔、串流功能,市面上絕大多數的影音轉檔工具,相信都是由它為主體產生出來的。當初主要會認識它的原因主要是因為macOS上內建錄影功能,輸出的格式是mov檔,雖然畫質相當的好,但就是檔案太大了,而且也不像在Windows上有類似格式工廠的轉檔APP,加上有時需要簡單的影音合併,所以只有轉向CLI的方式去處理。現在就來記錄一下使用過的一些指令。

影片 ==> 影片

ffmpeg -i 1.mov 1.mp4                                                       # 1.mov => 1.mp4
ffmpeg -i 1.mov -an 1.mp4                                                   # 1.mov => 1.mp4 (No Audio)
ffmpeg -i 1.mov -vf scale=640:-2 1.mp4                                      # 1.mov => 1.gif (轉成640p)
ffmpeg -i 1.mov -c:v libx265 -c:a copy 1.hevc                               # 1.mov => h265
ffmpeg -i 1.mov -c:v libvpx-vp9 1.webm                                      # 1.mov => webm

影片 ==> 圖片

ffmpeg -i 1.mov 1.gif                                                       # 1.mov => 1.gif
ffmpeg -i 1.mov -r 5 1.gif                                                  # 1.mov => 1.gif (5張/秒)
ffmpeg -i 1.mov -vf scale=640:-2 -r 5 1.gif                                 # 1.mov => 1.gif (轉成640p + 5張/秒)

影音合併

ffmpeg -i input.mp4 -i input.aac -c copy -map 0:v:0 -map 1:a:0 output.mp4   # input.mp4 + input.aac = output.mp4

影音切割

ffmpeg -ss 00:01:00 -i input.mp4 -to 00:02:00 -c copy output.mp4

批次轉換

#!/bin/bash
## macOS也可以用
for filename in *.mov; do
  ffmpeg -i "$filename" -an "${filename%.*}.mp4";
done

# Windows也可以用
## mov ==> mp4
for /F "delims=" %i in ('dir /b *.mov') do ffmpeg -i "%i" "%~ni.mp4"

## mp4 ==> mp4
for /F "delims=" %i in ('dir /b *.mp4') do ffmpeg -i "%i" _"%i"