概要
- python-ffmpegを利用して動画を分割する
- python-ffmpegを動かすまでの手順
- 備忘録
前提
- 環境
- python: v.3.7.7
- python-ffmpeg: v.0.2.0
- ffmpeg: v.4.3
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は楽チンで便利〜