跳至主要内容

FFmpeg

· 閱讀時間約 6 分鐘

最近收到一封讀者來信。信裡提到他的一個困擾:

  • 他有一個資料夾,裡面堆滿了日常的螢幕截圖,久而久之很難以整理
  • 他希望電腦能在每天晚上 11:55 自動把這些截圖做成影片,以當天日期命名存檔
  • 他已經問過一些人,都沒有得到解答,認為這是個「難以實現」的困難需求

其實這個問題一點都不困難!這個聽起來需要高級程式設計技巧的任務,其實只要兩個簡單的終端機工具就可以搞定了:

  • ffmpeg - 有關影片、聲音的萬用工具(所有作業系統都有)
  • crontab - 自動排程工具(Linux 和 macOS 有內建)

FFmpeg:超好用(但一般人不知道)的影音工具

FFmpeg 是多媒體界的萬用工具,它可以處理幾乎所有跟影片、聲音檔案相關的任務——不管是轉檔、剪輯、縮放、合併、效果……只要你想得到的,它八成都能做到。更重要的是,它是完全免費且授權自由的軟體!

雖然 FFmpeg 是一個純文字工具,沒有花俏的圖形介面,但基本操作其實很簡單。例如,想把一個 .mp4 影片檔案轉成 .wav 聲音檔?只要簡單的一行指令就可以了:

ffmpeg -i 原始影片.mp4 輸出檔案.wav

說到 FFmpeg 的強大,好和弦頻道的內嵌字幕也是用它製作的。我甚至曾經做過一個「把 256 部影片同時播放」的影片,也是靠 FFmpeg 才能完成的。

(這不用 FFmpeg 真的做不到!你可以嘗試把 256 個影片拉進 Final Cut Pro 或 Premiere 的時間軸,然後享受電腦變成暖爐、原地當掉的過程。)

將圖片合併為影片

回到讀者的問題,要把當下資料夾裡面的所有 .jpg 圖片檔合成影片,並且用當天日期命名,也只需要一行指令:

ffmpeg -framerate 1 -pattern_type glob -i "*.jpg" -c:v libx264 -pix_fmt yuv420p -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" "$(date +%Y-%m-%d)_screenshots.mp4"

以上指令的意思是:

  • framerate 1:一秒播一張圖片(你可以調整這個數字來控制播放速度)
  • -pattern_type glob -i "*.jpg":讀取當下資料夾中所有的 .jpg 檔案
  • -c:v libx264 -pix_fmt yuv420p:使用最常見的 H.264 和 YUV420P 編碼,確保大部分裝置都可以播放
  • -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2":把解析度調成 1080p、保持圖片長寬比、置中、並且在周圍填上黑色
  • "$(date +%Y-%m-%d)_screenshots.mp4":以「年-月-日_screenshots.mp4」格式命名輸出檔案(例如 2025-04-29_screenshots.mp4)

Cron:讓電腦在你睡覺時自動工作

有了把截圖變成影片的方法,接下來只要讓電腦自動在每天晚上 11:55 執行就可以了。這時候你可以用 Linux 和 macOS 都有內建的自動排程工具 crontab

只要在終端機裡輸入 crontab -e,它就會打開一個文字編輯器,在裡面加入以下內容並存檔即可:

55 23 * * * cd /截圖資料夾/路徑 && ffmpeg -framerate 1 -pattern_type glob -i "*.jpg" -c:v libx264 -pix_fmt yuv420p -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" "$(date +%Y-%m-%d)_screenshots.mp4"

這段文字的意思是叫電腦在每天 23:55 時,先進入截圖的資料夾(cd),然後執行剛才的 ffmpeg 指令。以後你就可以安心睡覺,醒來後就會發現昨天的截圖已經被自動整理成影片了!

你不需要記得這一切

最後要強調的是,你完全不需要記得以上這些複雜的語法!你只需要知道「有這些工具的存在」,以及會在終端機裡做簡單的操作即可。

詳細的語法只要問大型語言模型就可以了。例如,進到 Claude 或 ChatGPT 裡,問:「我想用 FFMpeg 在一個影片當中,每隔 10 秒截一張圖存檔,要怎麼做?」1,它就會自動產生語法,然後你只要貼進終端機裡,頂多改一下檔名、路徑就可以囉!

別害怕終端機和純文字介面工具,它們是隱藏在你電腦中的強大神器;有時候只要一行指令,就能完成你過去用滑鼠點來點去半小時才能做到的事,再也不需使用怪怪的網站上的怪怪的工具,真的用過之後就回不去了!歡迎看我的這篇貼文來入坑終端機。

Footnotes

  1. 解答:ffmpeg -i input.mp4 -vf "fps=1/10" output_%04d.jpg