Pythonで動画トリミングを自動化する方法

環境

  • Windows 10
  • Python 3.9.4
  • VSCode

使用するソースコード

以下の公開リポジトリに置いています

GitHub - masayan1126/tao-py-py: 作業自動化用 Python ライブラリ
作業自動化用 Python ライブラリ. Contribute to masayan1126/tao-py-py development by creating an account on GitHub.

事前準備

masayan
masayan

ffmpegの本体(実行ファイル)とpythonのライブラリのインストールが必要です

ffmpeg-pythonのインストール

pinenv install ffmpeg-python

ffmpegのインストール

公式サイトからインストーラーをダウンロード

Download FFmpeg

トップページのDownloadボタンをクリックし、下にスクロール

OSごとのアイコンがあるので対象をクリック

Windows builds by BtbN の方をクリック

Githubのリポジトリに飛ぶので、win64-gplとファイル名に入っているzipファイルをダウンロード

最後に、落としてきた圧縮ファイルを適当なフォルダに展開して、展開したフォルダ内にあるbinフォルダにPATHを通せば完了

which ffmpeg
# /c/Program Files/Ffmpeg/bin/ffmpeg

トリミングの実装例

読み込み

import ffmpeg

stream = ffmpeg.input(
    "input.mp4", # 読み込む動画のファイルパス
    ss=9227.07, # 開始時間
    t=6.64, # 開始時間からトリミングする動画時間
)

audio_stream = stream.audio

# ↓以降でフィルタして書き出し処理
masayan
masayan

音声トラックが消えてしまう場合があるので、ストリームにフィルタをかける前に音声を分けておいて(audio_stream)、後で結合してあげる必要があります

書き出し

# ↑ここまでで読み込み

audio_stream = stream.audio

stream.filter("fps", fps=15, round="up").output(
    stream,
    audio_stream, # 分けておいた音声データ
    "書き出す動画ファイルのパス",
    crf=30,
).run(overwrite_output=True)

Python学習におすすめの書籍

独習Python/山田祥寛【3000円以上送料無料】
bookfan 1号店 楽天市場店
¥ 3,300(2022/08/04 17:32時点)
タイトルとURLをコピーしました