memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

mp4のサイズを小さくするrubyスクリプト

少し前に以下を書きました。

memorandums.hatenablog.com

いちいちバッチ処理用のシェルを作るの面倒だったのでrubyにしました。pythonでも良かったのですがやはりruby推しなので。

Dir.glob("*.mp4").each do |f|
  d = `exiftool -createdate "#{f}"`
  f_ = "_#{f.split(".")[0]}.mp4"
  `ffmpeg -i "#{f}" -vf scale=-1:720 -crf 23 -loglevel quiet "#{f_}"`
  `exiftool -alldates="#{d}" -overwrite_original "#{f_}"`
end

このスクリプトを空フォルダにいれて、あと、小さくしたいmp4ファイルをそのフォルダにいれて、ターミナルで以下などと実行すればファイル名の先頭に_がついたファイルができます。720pにするのでスマホで撮影したファイルであれば7,8割くらい小さくなると思います。さらに、こちらによると-crf 23の数字を大きくするとさらに圧縮できるようです(x264 : 23、x265 : 28、1080p HD video : 31)

ruby a.rb

前後しますが、上記のスクリプトではffmpegとexiftoolを利用しています。未インストールであれば以下を実行してください。

brew install ffmpeg
brew install exiftool