---
# System prepended metadata

title: '[FFmpeg] 將影片轉動態圖片'
tags: [ffmpeg]

---

# [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`
