Kinaconの技術ブログ

Ubuntuはじめました。

pythonでffmpegを実行する

f:id:m-oota-711:20190222212028p:plain


  • VidCutterという動画を無劣化で切り出すソフトで出力した動画が見れなった。
  • 対策として、ffmpegで動画のカラーフォーマットを変換した。
  • フォルダ内の動画をまとめて処理するためにpythonでffmpegを実行できるようにした。


目次

問題と要因

こんな映像になった。

f:id:m-oota-711:20190221110655p:plain

要因は元動画のcolor fomatyuv444pであったため
(なぜ、このカラーフォーマットがダメなのかは不明)。


対策

ffmpegで color fomatyuv444p から yuv420p に変換


ffmpeg -i input.mp4 -pix_fmt yuv420p -qp 0 output.mp4


オプション 説明
-pix_fmt yuv420p カラーフォーマットをyuv420pへ変換
-qp 0 ロスレスエンコード


pythonでffmpegを実行してフォルダ内の画像をまとめて処理

ffmpyのインストール

pip3 install ffmpy


コード例

#!/usr/bin/python3

""" ffmpegでカラーフォーマットを変更する """

import ffmpy
import glob

# dir_path内のmp4ファイルのパスを取得
dir_path = '/home/user/Videos/test_video'
inputs = glob.glob(dir_path + "/*.mp4")


for i,input_path in enumerate(inputs):
 
 # 出力ファイル
    output_path = './output_{}.mp4'.format(i)
 
 # ffmpeg実行
    ff = ffmpy.FFmpeg(
        inputs={input_path:None},
        outputs={output_path: '-pix_fmt yuv420p -qp 0'}
    )
    ff.run()

print("Finished")

以上。