# [FFmpeg] 將影片轉動態圖片
## 基本選項
* 使用 `fps` 篩選器指定較低的 FPS 以避免出現出現龐大的檔案。
* 使用 `scale` 篩選器指定所需解析度與 `lanczos` 演算法來獲得較好的縮放結果。
> 當目標寬度或高度其中之一設定值為 -1 時,FFmpeg 將自動決定合適寬度或高度以維持寬高比。
例如,解析度 640xH,15 fps。篩選器流程圖:
```powershell
fps=15,scale=640:-1:flags=lanczos
```
* 使用 `-ss` 選項以及 `-t` 或`-to` 選項指定開始時間與持續時間,以防止輸出太龐大或太長時。
> 時間格式秒數或 HH:mm:ss.f...。例如 15 分 20 秒 12 為 `00:15:20.12` 或 `920.12`。
例如,從 00:15:20.12 開始並持續 10 秒。選項組:
```powershell
-ss 00:15:20.12 -t 10
```
以上也等同於:
```powershell
-ss 00:15:20.12 -to 00:15:30.12
```
## WEBP 格式
* 使用 `-c:v webp` 指定影像格式為 WebP。
* 使用 `-q:v` 選項指定輸出目標品質。範圍 0 - 100,預設為 75。
輸出為 WebP,品質為 80:
```powershell
ffmpeg -i input.mp4 -c:v webp -q:v 80 output.webp
```
承上,從 00:15:20.12 開始並持續 10 秒,15 fps,lanczos 縮放至 640xH:
```powershell
ffmpeg -i input.mp4 -ss 00:15:20.12 -t 10 -vf "fps=15,scale=640:-1:flags=lanczos" -c:v webp -q:v 80 output.webp
```
## GIF 格式
* 使用 `-c:v gif` 指定影像格式為 GIF。
* 使用 `split` 篩選器建立一個複製視訊用於建立 GIF 所需的調色盤。
* 使用 `palettegen` 與 `paletteuse` 篩選器建立與應用 GIF 所需的調色盤。
為所有畫格 (frame) 產生一個調色盤並應用。篩選器流程圖:
```powershell
split[s0][s1],[s0]palettegen[p],[s1][p]paletteuse
```
輸出為 GIF。完整命令:
```powershell
ffmpeg -i input.mp4 -vf "split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -c:v gif output.gif
```
承上,從 00:15:20.12 開始並持續 10 秒,15 fps,lanczos 縮放至 640xH:
```powershell
ffmpeg -i input.mp4 -ss 00:15:20.12 -t 10 -vf "fps=15,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -c:v gif output.gif
```
###### tags: `ffmpeg`