Pythonとffmpegで動画を圧縮する

2023年6月17日

ブログ内に動画を載せるにあたって動画の容量を減らしたいと思ったので、どうせならとPythonで書いてみます。
webmに変換するのも考えましたが今回はサクッとやるためにffmpegとmp4で行きます。

ffmpegのダウンロードとパス通し

ffmpegを使用するにあたって、ffmpeg本体と環境変数への追加が必要です。
以下の記事を参考にやれば簡単にできます。

※ただダウンロードリンクまでの文言がちょこちょこと違いましたがリンク先がわからないレベルではないです。

ソースコード

ffmpegのダウンロード等が終われば後はPythonで少し書くだけです。
※コマンドプロンプト等からそのままffmpegを実行すればいいだけですがそれは考えないようにします。

動画ファイルを読み込んでffmpegで圧縮しています。
一応別名で保存しているので元ファイルは残ります。

import glob
import subprocess

# moviesフォルダ直下のmp4ファイルを取得
videos = glob.glob('movies/*.mp4')

# 動画に対してffmpegで圧縮処理
for video in videos:

	# 動画の高さを720で固定圧縮する場合
    subprocess.call('ffmpeg -i '+video+' -crf 18 -vf "scale=-2:720" '+video[:-4]+'_comp.mp4', shell=True)

    # 動画のサイズを変更せず圧縮する場合
    #subprocess.call('ffmpeg -i '+video+' -crf 18 '+video[:-4]+'_comp.mp4', shell=True)

# 終わり
print('処理終了')

Python,プログラム

Posted by marimo