用 Python + FFmpeg 將「非連號圖片」自動排序圖片在合成 MP4 影片

更新於 發佈於 閱讀時間約 9 分鐘

FFmpeg 將照片合成 MP4 影片簡介

什麼是 FFmpeg?

FFmpeg 是一套跨平台的開源多媒體框架,能夠錄製、轉換數位音訊、影片,並能將其轉換成不同格式。它支援幾乎所有常見的影音格式。

照片合成 MP4 的應用場景

  • 製作時光縮影(Timelapse)
  • 照片幻燈片展示
  • 動畫製作
  • 產品展示影片

操作步驟

  1. 準備照片
    • 將所有要合成的照片放在同一個資料夾中,並以連續的檔名排序(例如:img001.jpg、img002.jpg、img003.jpg...)。
  2. 執行 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 完成以下工作:

  1. 掃描資料夾中的所有圖片
  2. 根據檔名中的數字自動排序
  3. 複製圖片到暫存資料夾,並重新命名為 img0001.jpgimg0002.jpg...
  4. 用 FFmpeg 把這些圖片轉成一部 MP4 影片
raw-image
raw-image



🧾 三、完整 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 ~


🚀 五、執行步驟

  1. 把你的圖片放在一個資料夾中(可以亂命名,不用連號)
  2. 修改 source_folder 變數為該資料夾路徑
  3. 在命令列執行:
python create_sorted_video.py
  1. 完成!影片會輸出為 sorted_slideshow.mp4
raw-image



📁 範例目錄結構

raw-image
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
raw-image

🎉 結語

這篇教學示範了如何用 Python + FFmpeg 自動處理任意命名的圖片,並轉換為高品質影片。這方法適用於:

  • 相簿回顧影片製作
  • 自動化影像轉檔流程
  • 工作或旅遊照片快速製片
留言
avatar-img
留言分享你的想法!
avatar-img
螃蟹_crab的沙龍
150會員
294內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。 興趣是攝影,踏青,探索未知領域。 人生就是不斷的挑戰及自我認清,希望老了躺在床上不會後悔自己什麼都沒做。
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 影音也是如此, 即時! 即時! 即時! 已經是目前使用者體驗的必要元素了, 在這邊我們要分享的主題是如何在python程式語言的情境下使用ffmpeg來將音檔串流的轉換格式, 為什麼會有這樣的需求呢? 因為我們處理音檔時可能會需要統一輸出的格式, 當然背後也
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 影音也是如此, 即時! 即時! 即時! 已經是目前使用者體驗的必要元素了, 在這邊我們要分享的主題是如何在python程式語言的情境下使用ffmpeg來將音檔串流的轉換格式, 為什麼會有這樣的需求呢? 因為我們處理音檔時可能會需要統一輸出的格式, 當然背後也
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
在某些特殊情況下,需要將圖片進行黑白反轉,例如Tesseract(OCR辨識引擎)就有建議黑底白字的狀況下辨識率較高。 本文將使用 NumPy 進行影像黑白反轉,並顯示反轉前後的影像。
Thumbnail
在某些特殊情況下,需要將圖片進行黑白反轉,例如Tesseract(OCR辨識引擎)就有建議黑底白字的狀況下辨識率較高。 本文將使用 NumPy 進行影像黑白反轉,並顯示反轉前後的影像。
Thumbnail
本篇內容介紹如何使用 Python中的 moviepy library 簡單的剪影片。 先安裝moviepy library , 用pip install moviepy , 可參考官方文件。 要剪的影片和python檔要在同個資料夾中,若不在同個位置要用 os library 更換路徑
Thumbnail
本篇內容介紹如何使用 Python中的 moviepy library 簡單的剪影片。 先安裝moviepy library , 用pip install moviepy , 可參考官方文件。 要剪的影片和python檔要在同個資料夾中,若不在同個位置要用 os library 更換路徑
Thumbnail
當我們在進行影像處理時, 在Python的世界最常聽到的就是OpenCV, 而我們在處理影片時也會想要僅針對某時間段的影片進行處理, 今天我們就來教您如何透過OpenCV來讀取特定的時間區段。 在進入主題之前, 有一些基本概念務必先行建立, 一個影片是由多張圖片組成的, 因此最小單元為一張圖
Thumbnail
當我們在進行影像處理時, 在Python的世界最常聽到的就是OpenCV, 而我們在處理影片時也會想要僅針對某時間段的影片進行處理, 今天我們就來教您如何透過OpenCV來讀取特定的時間區段。 在進入主題之前, 有一些基本概念務必先行建立, 一個影片是由多張圖片組成的, 因此最小單元為一張圖
Thumbnail
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
Thumbnail
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
Thumbnail
使用pytube library 下載Youtube 影片
Thumbnail
使用pytube library 下載Youtube 影片
Thumbnail
本文將介紹影像的基本操作包括:影像的讀取、顯示、保存,以及一些常見的操作如裁剪、旋轉、縮放等。 語法介紹 讀取影像: cv2.imread函數的參數是影像的檔案路徑。讀取後的影像以NumPy的ndarray形式表示。
Thumbnail
本文將介紹影像的基本操作包括:影像的讀取、顯示、保存,以及一些常見的操作如裁剪、旋轉、縮放等。 語法介紹 讀取影像: cv2.imread函數的參數是影像的檔案路徑。讀取後的影像以NumPy的ndarray形式表示。
Thumbnail
[影像處理_OpenCV Python]使用Python撰寫影像處理功能,圖片遮罩或濾除掉不要的地方,旋轉圖片 以下範例將呈現影像處理三種不同的應用: 遮罩的實現 濾除 旋轉
Thumbnail
[影像處理_OpenCV Python]使用Python撰寫影像處理功能,圖片遮罩或濾除掉不要的地方,旋轉圖片 以下範例將呈現影像處理三種不同的應用: 遮罩的實現 濾除 旋轉
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News