═══ FFmpeg ═══ 2025年4月29日 · 閱讀時間約 4 分鐘 ┊ 純文字版 最近收到一封讀者來信。信裡提到他的一個困擾: • 他有一個資料夾,裡面堆滿了日常的螢幕截圖,久而久之很難以整理 • 他希望電腦能在每天晚上 11:55 自動把這些截圖做成影片,以當天日期命名存檔 • 他已經問過一些人,都沒有得到解答,認為這是個「難以實現」的困難需求 其實這個問題一點都不困難!這個聽起來需要高級程式設計技巧的任務,其實只要兩個簡 單的終端機工具就可以搞定了: • ffmpeg - 有關影片、聲音的萬用工具(所有作業系統都有) • crontab - 自動排程工具(Linux 和 macOS 有內建) ◆ FFmpeg:超好用(但一般人不知道)的影音工具​ FFmpeg 是多媒體界的萬用工具,它可以處理幾乎所有跟影片、聲音檔案相關的任務──不管 是轉檔、剪輯、縮放、合併、效果⋯⋯只要你想得到的,它八成都能做到。更重要的是,它 是完全免費且授權自由的軟體! 雖然 FFmpeg 是一個純文字工具,沒有花俏的圖形介面,但基本操作其實很簡單。例如, 想把一個 .mp4 影片檔案轉成 .wav 聲音檔?只要簡單的一行指令就可以了: ffmpeg -i 原始影片.mp4 輸出檔案.wav 說到 FFmpeg 的強大,好和弦頻道的內嵌字幕也是用它製作的。我甚至曾經做過一個「把 256 部影片同時播放」的影片,也是靠 FFmpeg 才能完成的。 (這不用 FFmpeg 真的做不到!你可以嘗試把 256 個影片拉進 Final Cut Pro 或 Premiere 的時間軸,然後享受電腦變成暖爐、原地當掉的過程。) [256videos-32-c33cf19af805456d27c0b5eb536fba73] ◆ 將圖片合併為影片​ 回到讀者的問題,要把當下資料夾裡面的所有 .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 ↩