10
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ffmpeg-python環境を構築して動画の分割を行う

Posted at

概要

  • python-ffmpegを利用して動画を分割する
  • python-ffmpegを動かすまでの手順
  • 備忘録

前提


ffpmegをインストールする

  • ビルド済みのイメージを利用する
    • https://www.johnvansickle.com/ffmpeg/ からビルド済みファイルを利用すれば楽チン
    • ダウンロードしたファイルを解凍後、/usr/local/bin配下にコピーすればOK
      • ffprobeをコピーしないと、ffmpeg.probeを実行した際に、
        [Errno 2] No such file or directory: 'ffprobe': 'ffprobe' とエラーが出るので注意
wget http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-arm64-static.tar.xz
tar xvf ffmpeg-release-arm64-static.tar.xz
sudo cp ./ffmpeg-4.3-arm64-static/ffmpeg /usr/local/bin
sudo cp ./ffmpeg-4.3-arm64-static/ffprobe /usr/local/bin

python-ffmpegをインストールする

  • pip installするだけ
pip install ffmpeg-python

動画の切り出しコードを書く

import ffmpeg
srcfile_path = 'hoge.mp4' # 動画の格納パス
split_num = 5 # 動画の分割数

# ffmpeg.probeを実施して、動画のメタデータを取得
video_info = ffmpeg.probe(srcfile_path)

# 動画の全長(秒)を取得
duration = float(video_info['streams'][0]['duration'])
stride = duration/split_num

# 動画をN個に分割
for i in range(split_num):
    start = int(i * stride)
    stream = ffmpeg.input(srcfile_path, ss=start, t=stride)

    # cオプションは、ffmpegの-vcodecと-acodecをまとめて指定
    # c="copy"指定することで、再変換する手間と時間を抑える
    stream = ffmpeg.output(stream, 'output_{}'.format(i), c="copy")
    ffmpeg.run(stream)


OpenCV使った方法もあるけど、動画の編集処理だけだったらffmpegは楽チンで便利〜

10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?