動画変換の手順
Ubuntu22.04 LTSのスクリーンキャプチャの録画機能を使うと.webmファイルとして録画ファイルが出力されます。
これをはてなブログでGIFとして貼るには圧縮とファイルタイプの変換が必要です。
下記のように実行したら、27インチPCのスクリーンレコード30秒程度の動画を、問題なく貼ることが出来ました。
# 1. 幅を600, 高さはアスペクト比を保ったままスケール fmpeg -i origin.webm -vf scale=600:-1 origin_scaled.webm # 2. 1で出力されたwebmをフレームレート30のGIFに変換 ffmpeg -i origin_scaled.webm -r 30 origin_scaled.gif
再利用可能にする
上記の操作を関数化して再利用できるようにします。
本来であれば、圧縮する関数と拡張子を変換する関数で分けたほうが良いかもしれませんが、なるべく.bashrc
を汚したくないため1関数にまとめました。
# scale_video # eg1) 幅指定なし(デフォルトで600) # convert_video_to_gif example.webm # eg2) 幅を指定して変換 # convert_video_to_gif example.mp4 800 convert_video_to_gif() { if [ -z "$1" ]; then echo "Usage: convert_video_to_gif <input_video_file> [width]" return 1 fi input_file="$1" width=${2:-600} # 幅を指定, デフォルトは600 frame_rate=${3:-30} # フレームレートを指定, デフォルトは30 output_file="${input_file%.*}_scaled.${input_file##*.}" gif_file="${input_file%.*}_scaled.gif" # 1. 幅を指定した値にスケーリング ffmpeg -i "$input_file" -vf scale=${width}:-1 "$output_file" # 2. スケーリングされた動画を30fpsのGIFに変換 ffmpeg -i "$output_file" -r ${frame_rate} "$gif_file" echo "Conversion completed. GIF file: $gif_file" }
下記のようなgifが出来ます。