[Mac] コマンドラインで動画から静止画像を生成する

動画のある時点で一時停止をし、それを画像として書き出したい状況になった。

環境:macOS Catalina Version 10.15.6(英語環境)

ffmpeg のインストールを済ませておいたうえで、以下のコマンドを実行すればいい。

$ ffmpeg -ss 10 -i input.mp4 -vframes 1 -f image2 output.png

オプションの説明
・-ss 10:10 秒目
・-i input.mp4:元の動画
・-vframes 1:1フレーム切り出す
・-f image2 output.png:出力画像

ただ -ss の秒数の指定は実際の動画の秒数とはずれるようなので、数字をいじって微調整が必要かもしれない。また秒ではなく HH:MM:SS の形式でも指定できる。

指定ディレクトリ内で一括変換するには以下のようなシェルスクリプトを実行すればいい。

#!/bin/sh
DIRPATH=$1

for FILE in ${DIRPATH}*.mp4
do
ffmpeg -ss 10 -i "${FILE}" -vframes 1 -f image2 "${FILE%.mp4}.png"

done

シェルスクリプトに thumbnail.sh と名前をつけたとすると、$ chmod 755 thumbnail.sh を実行して実行権限を付与、$ ./thumbnail.sh で実行する。

参考:
ffmpeg で動画をjpeg画像に切り出し。連続サムネイルをつくる – それマグで!
https://takuya-1st.hatenablog.jp/entry/20110706/1309900617

ffmpegを使って動画のフレームを画像で出力する | IT底辺脱却ブログ
https://moewe-net.com/uncategorized/ffmpeg-image2

ffmpegで動画から音声やサムネイルを取得 – Qiita
https://qiita.com/tukiyo3/items/d8caac4fcf8ad5a7167b

【ffmpeg】動画から特定フレームを画像で出力する方法 – ニコニコ動画研究所
https://looooooooop.blog.fc2.com/blog-entry-1021.html

センディの徒然日記 ffmpegでサムネイルを作成する
http://sendy.blog86.fc2.com/blog-entry-83.html

Amazon.co.jp: [改訂第3版]Linuxコマンドポケットリファレンス eBook : 沓名亮典: 本
https://amzn.to/3Q9hj0j