aviutl(正確にはx264guiExプラグインなどから呼び出される muxer.exe / remuxer.exe)で扱うには、別の形式に変換する必要があります。
ということで、いつもどおりPythonでお助けスクリプトです。あらかじめ dateutil モジュールをインストールしておく必要があります。
#!python3 # -*- coding: utf-8 -*- # vim:fenc=utf-8 ff=unix ft=python ts=4 sw=4 sts=4 si et fdm fdl=99: # vim:cinw=if,elif,else,for,while,try,except,finally,def,class: # # makechap.py: # カレントディレクトリからすべての.keyframeファイルを検索し # 順次aviutl(muxer.exe, remuxer.exe)が取り込める形式の # チャプターマークに変換する # # TMPGEnc MPEG Smart Rendereの.keyframe 出力形式 # [chap1] # [chap2] # ただし[chapx]はフレーム番号 # muxer / remuxer のチャプター形式 # CHAPTER01=00:03:00.000 # CHAPTER01NAME=タイトル1 # CHAPTER02=00:06:30.000 # 0CHAPTER02NAME=タイトル2 import sys from glob import glob from os.path import join, splitext from os import close from dateutil.relativedelta import * # import pdb; pdb.set_trace() if sys.version_info[0] != 3: print('This script requires Python 3') exit() path = '.' debug = 0 files = [] i = 0 files = glob(join(path, '*.keyframe')) if debug: print('files:', files) for kffile in files: f = open(kffile, 'r') outfile = open(splitext(kffile)[0]+'.chapter.txt', 'w') frames = f.readlines() base = splitext(kffile)[0] for frame in frames: i = i + 1 rd = relativedelta(seconds=round(int(frame)*0.0333667)) time = "{0.hours:02}:{0.minutes:02}:{0.seconds:02}.000".format(rd) if debug: print(f'CHAPTER{i:02}={time}') print(f'CHAPTER{i:02}NAME={i:02}\n') outfile.write(f'CHAPTER{i:02}={time}\n') outfile.write(f'CHAPTER{i:02}NAME={i:02}\n') i = 0 f.close() outfile.close()
こうして作ったchapter.txtをチャプターとしてMP4ファイルに埋め込むには、x264guiExなどの設定パネルでチャプターを設定しておけばやってくれます。
0 件のコメント:
コメントを投稿