お絵描き伝言ゲームのgifファイルをmp4動画に変換する方法


はじめに

お絵描き伝言ゲーム(Gartic Phone)では、
みんなで振り返りするときにみんなの回答と絵をgifファイルとして保存できます。
保存したGifをTwitterなどにそのまま投稿できますが、
(面白すぎて)厳選できなかったので1つの動画にしたいなと思ったのがきっかけです。

前提条件

  • 動作環境はWindows
  • FFmpegをインストールしておく

処理手順

  1. 保存したgifファイルを1つのフォルダに格納
  2. gifファイルをmp4ファイルに変換
  3. mp4を1つに結合
gif2mp4.cmd
rem gifファイルの保存先フォルダ
SET INDIR=D:\dengongame\20220328
rem mp4一覧のファイル
SET LISTFILE=D:\dengongame\20220328\mylist.txt
rem 出力するmp4動画のパスとファイル名
SET OUTFILE=D:\dengongame\20220328output.mp4
rem FFmpegの実行ファイルのパス
SET FFMPEGEXE=C:\ffmpeg\bin\ffmpeg.exe

rem カレントディレクトリを移動
CD /D "%INDIR%"

rem フォルダのgif->mp4に変換
for /r "%INDIR%" %%f in (*.gif) do (
"%FFMPEGEXE%" -i %%f -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" %%f.mp4
)

rem フォルダ内のmp4フォルダを一覧に出力
TYPE NUL > "%LISTFILE%"
FOR %%I in (*.mp4) DO (
    ECHO file '%%~FI' >> "%LISTFILE%"
)

rem 一覧のフォルダを1つのmp4ファイルに結合
"%FFMPEGEXE%" -f concat -safe 0 -i "%LISTFILE%" -c copy "%OUTFILE%"

解説

実行時のパス設定

SETコマンドで実行時のフォルダやパスを指定しています。
mylist.txtはgifからmp4に変換したmp4一覧を出力するために使用します。

gif2mp4.cmd
rem gifファイルの保存先フォルダ
SET INDIR=D:\dengongame\20220117
rem mp4一覧のファイル
SET LISTFILE=D:\dengongame\20220117\mylist.txt
rem 出力するmp4動画のパスとファイル名
SET OUTFILE=D:\dengongame\20220117output.mp4
rem FFmpegの実行ファイルのパス
SET FFMPEGEXE=C:\ffmpeg\bin\ffmpeg.exe

カレントディレクトリの移動

/Dオプションを使いドライブ変更も行っています。

rem カレントディレクトリを移動
CD /D "%INDIR%"

gifファイルをmp4に変換

フォルダ内のgifファイルでループし、FFmpegにオプション指定しながらmp4に変換しています。
-i %%f :入力ファイル
-movflags faststart :メタデータを動画ファイルの先頭に
-pix_fmt yuv420p :動画フォーマット
-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" %%f.mp4 :おまじない1

rem フォルダのgif->mp4に変換
for /r "%INDIR%" %%f in (*.gif) do (
"%FFMPEGEXE%" -i %%f -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" %%f.mp4
)

mp4を1つに結合

フォルダ内のmp4ファイルを%LISTFILE%(mylist.xt)に出力し、
出力したmp4ファイルを1つのファイルに結合します。

rem フォルダ内のmp4フォルダを一覧に出力
TYPE NUL > "%LISTFILE%"
FOR %%I in (*.mp4) DO (
    ECHO file '%%~FI' >> "%LISTFILE%"
)

rem 一覧のフォルダを1つのmp4ファイルに結合
"%FFMPEGEXE%" -f concat -safe 0 -i "%LISTFILE%" -c copy "%OUTFILE%"

コマンド実行

gif2mp4.cmdをダブルクリック

改善点

  • 保存フォルダのドラッグ&ドロップにする
  • 作業完了したmp4ファイルを削除する

おわり

変換した動画はyoutubeにアップできます。
これでいつでもどこでも思い出し笑いができますね

参考リンク

  1. 動画変換時のエラー対応