iPhoneのLive Photosをjpg画像に一括変換

備忘録にて。

iPhoneのLivePhotos(mp4ファイル)から切り出して画像として使用したいときに、一括でjpg画像に変換してしまう方法。

OSはLinux mint20。

ffmpegを使用する

LivePhotosはシャッター前後1.5秒を含めた映像として記録できる機能(参考:Appleサポート)で、1秒60コマで保存されています。

LivePhotosの映像はmp4で保存されているので、ffmpegで1コマずつjpgとして書き出します。

ffmpegのインストール

今はsynapticからインストールできるようです。便利ですね。

synanpticパッケージマネージャー

ffmpegの公式にもダウンロードページがあります。https://www.ffmpeg.org/download.html

ffmpegコマンド

ffmpegでmp4からjpgを切り出す場合、1ファイルから約180枚の画像が生成されることになります。(1秒あたり60コマで、LivePhotosは3秒あるから。)

とりあえず基本的なコマンドは以下のようになります。(sample.mp4 をsample-xxx.jpg に変換)

cd 編集するディレクトリ
ffmpeg -i sample.mp4 sample-%03d.jpg

%03d をつけることで、001.jpg から999.jpgまで3桁の数字が連番でふられていきます。

ターミナルで上のコマンドを実行すると、sampple-001.jpgからsample-180.jpgまでが生成されます(実際には168ファイル生成されたので微妙な差が出る模様)

フレームレートを変更する

180枚も出力されるのは流石に面倒なので、1秒60コマのフレームレートを1秒5コマぐらいにしてみます。フレームレート変更には -r オプションを使用します。 -r 1 で1秒1コマ指定となります。

ffmpeg -i sample.mp4 -r 5 sample-%03d.jpg

実行してみると16ファイル生成されました。

ffmpegの一括実行

1ファイルずつ編集するのは大変なので、一括変更してしまいます。

for i in *.mp4; do ffmpeg -i "$i" -r 5 "${i%.}-%03d.jpg";  done
タイトルとURLをコピーしました