必要に迫られて、動画を 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()