pythonでffmpegを実行する
- VidCutterという動画を無劣化で切り出すソフトで出力した動画が見れなった。
- 対策として、ffmpegで動画のカラーフォーマットを変換した。
- フォルダ内の動画をまとめて処理するためにpythonでffmpegを実行できるようにした。
目次
問題と要因
こんな映像になった。
要因は元動画のcolor fomatがyuv444pであったため
(なぜ、このカラーフォーマットがダメなのかは不明)。
対策
ffmpegで color fomat を yuv444p から 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")
以上。