FFmpeg 將照片合成 MP4 影片簡介
什麼是 FFmpeg?
FFmpeg 是一套跨平台的開源多媒體框架,能夠錄製、轉換數位音訊、影片,並能將其轉換成不同格式。它支援幾乎所有常見的影音格式。
照片合成 MP4 的應用場景
- 製作時光縮影(Timelapse)
- 照片幻燈片展示
- 動畫製作
- 產品展示影片
操作步驟
- 準備照片
- 將所有要合成的照片放在同一個資料夾中,並以連續的檔名排序(例如:img001.jpg、img002.jpg、img003.jpg...)。
- 執行 FFmpeg 指令
ffmpeg -framerate 30 -i img%03d.jpg -c:v libx264 -pix_fmt yuv420p output.mp4
-framerate 30
:設定每秒播放幾張照片(30 表示 30fps,可依需求調整)。-i img%03d.jpg
:指定照片檔名格式(%03d 代表三位數編號)。-c:v libx264
:使用 H.264 編碼器。-pix_fmt yuv420p
:確保影片兼容性。output.mp4
:輸出檔案名稱。
- 執行後會產生一個 MP4 影片檔案,內容就是你的照片連續播放的效果。
📁 一、環境準備
1. 安裝 Python
請安裝 Python 3.7 以上版本:
👉 https://www.python.org/downloads/2. 安裝 FFmpeg
- Windows 使用者
- 前往:https://ffmpeg.org/download.html
- 下載並解壓縮
- 把 ffmpeg/bin 加入系統環境變數 Path
- macOS 使用者
brew install ffmpeg
- Linux 使用者
sudo apt update
sudo apt install ffmpeg1.
🧠 二、教學流程總覽
我們會使用 Python 完成以下工作:
- 掃描資料夾中的所有圖片
- 根據檔名中的數字自動排序
- 複製圖片到暫存資料夾,並重新命名為
img0001.jpg
、img0002.jpg
... - 用 FFmpeg 把這些圖片轉成一部 MP4 影片


🧾 三、完整 Python 腳本(已解決排序與格式問題)
📌 create_sorted_video.py
import os
import re
import shutil
import subprocess
from pathlib import Path
def extract_number(filename):
""" 從檔名中提取第一組數字(用於排序) """
match = re.search(r'\d+', filename)
return int(match.group()) if match else float('inf')
def prepare_images_for_ffmpeg(source_dir, temp_dir):
""" 將圖片依據數字排序後複製到 temp_dir 並重新命名為連號 """
source_dir = Path(source_dir)
temp_dir = Path(temp_dir)
temp_dir.mkdir(exist_ok=True)
# 取得所有圖片
images = [f for f in source_dir.iterdir() if f.suffix.lower() in ['.jpg', '.jpeg', '.png']]
images.sort(key=lambda x: extract_number(x.name))
# 複製並重新命名
for idx, img in enumerate(images):
new_name = temp_dir / f"img{str(idx+1).zfill(4)}.jpg"
shutil.copy(img, new_name)
print(f"{img.name} → {new_name.name}")
return len(images)
def generate_video_ffmpeg(temp_dir, output_video, frame_rate=1, resolution="1280x720"):
""" 使用 FFmpeg 將 temp_dir 中的圖片轉為影片 """
cmd = [
"ffmpeg",
"-y",
"-framerate", str(frame_rate),
"-i", str(Path(temp_dir) / "img%04d.jpg"),
"-s", resolution,
"-c:v", "libx264",
"-pix_fmt", "yuv420p",
output_video
]
print("執行 FFmpeg:", " ".join(str(x) for x in cmd))
try:
subprocess.run(cmd, check=True)
print(f"✅ 影片製作完成:{output_video}")
except subprocess.CalledProcessError as e:
print("❌ FFmpeg 錯誤:", e)
# 📌 主程式
if __name__ == "__main__":
# 原始圖片資料夾
source_folder = r"F:\vimten\老婆河內\照片\100MSDCF\西湖\123"
# 暫存圖片資料夾
temp_folder = "temp_images"
# 輸出影片檔名
output_mp4 = "sorted_slideshow.mp4"
total = prepare_images_for_ffmpeg(source_folder, temp_folder)
if total == 0:
print("⚠️ 沒有找到任何圖片!")
else:
generate_video_ffmpeg(temp_folder, output_mp4, frame_rate=1, resolution="1280x720")
🔧 四、參數說明
參數說明frame_rate每秒顯示幾張圖片(預設 1 張)resolution輸出影片解析度(如 1280x720)img%04d.jpg圖片命名規則,代表 img0001.jpg ~
🚀 五、執行步驟
- 把你的圖片放在一個資料夾中(可以亂命名,不用連號)
- 修改 source_folder 變數為該資料夾路徑
- 在命令列執行:
python create_sorted_video.py
- 完成!影片會輸出為 sorted_slideshow.mp4

📁 範例目錄結構

your_project/
├── create_sorted_video.py
├── temp_images/ ← 程式自動建立
├── sorted_slideshow.mp4 ← 程式自動產生
🧪 效果展示(假設輸入圖片如下)
A6400099.jpg
A6400105.jpg
A6400101.jpg
→ 會自動排序為:
img0001.jpg ← A6400099.jpg
img0002.jpg ← A6400101.jpg
img0003.jpg ← A6400105.jpg

🎉 結語
這篇教學示範了如何用 Python + FFmpeg 自動處理任意命名的圖片,並轉換為高品質影片。這方法適用於:
- 相簿回顧影片製作
- 自動化影像轉檔流程
- 工作或旅遊照片快速製片