動画を n 分毎に分割する

Jul 4, 2021 10:54 ·

必要に迫られて、動画を n 分毎に分割する Python スクリプトを書いた。以下は 5 分毎に動画を分割している。

import ffmpeg
import math
from pathlib import Path
import os
import shutil

DURATION = 300  # 300 秒ごとに分割する
F_PATH = '{動画ファイルのパス}'


# 動画の再生時間(秒)を返却する ※小数点は切り上げる
def get_playback_seconds_of_movie(fpath):
    return math.ceil(float(ffmpeg.probe(fpath)['streams'][0]['duration']))


def recreate_dir():
    shutil.rmtree('outputs', ignore_errors=True)
    os.makedirs('outputs')


def main():
    recreate_dir()
    duration = get_playback_seconds_of_movie(F_PATH)
    current = 0
    idx = 1
    while current < duration:
        start = current
        stream = ffmpeg.input(F_PATH, ss=start, t=DURATION)
        stream = ffmpeg.output(stream, f'outputs/{idx}.mov', c='copy')
        ffmpeg.run(stream)
        idx += 1
        current += DURATION


if __name__ == '__main__':
    main()