easyvfr.py
使い方
まずeasyvfr.pyをPython3/Lib/site-packagesに置きます。
あとはこんな感じ
#!/usr/bin/env python3 import vapoursynth as vs import easyvfr vs.get_core().std.LoadPlugin('/path/to/d2vsource.dll') d2vsrc = vs.get_core().d2v.Source def ivtc(clip, offset, cycle=10, tff=True): sf = clip.std.SeparateFields(tff) dw = sf.std.DoubleWeave(tff) return dw.std.SelectEvery(cycle, offset) def bob(clip, tff=True): sf = clip.std.SeparateFields(tff) return sf.resize.Bicubic(height=clip.height) src = d2vsrc('/path/to/the/source.d2v') # 適当にTrimして、デインタレ/IVTC/Bobしたりする av0 = ivtc(src[100: 2000], [0, 3, 5, 8]) # 24fps op0 = ivtc(src[2000: 3456], [0, 2, 5, 7]) # 24fps op1 = bob(src[3456: 3501]) # 60fps op2 = ivtc(src[3501: 6541], [1, 4, 6, 9]) # 24fps a00 = ivtc(src[8000: 12000], [1, 3, 6, 8]) #24fps a01 = src[12000: 12151] # 30fps a02 = ivtc(src[12151: 20000], [0, 2, 5, 7]) #24fps # av0, op0, a00の先頭フレームにチャプタを打ち、IDRフレームにしたい av0 = easyvfr.ChapterClip(av0, 'アバンA') op0 = easyvfr.ChapterClip(op0, 'OP') a00 = easyvfr.ChapterClip(a00, 'Aパート') # 各クリップをひとつのリストにまとめる clips = [av0, op0, op1, op2, a00, a01, a02] ''' 22行目以降はこういう書き方もあり cc = easyvfr.ChapterClip clips = [ cc(ivtc(src[100: 2000], [0, 3, 5, 8]), 'アバンA'), cc(ivtc(src[2000: 3456], [0, 2, 5, 7]), 'OP'), bob(src[3456: 3501]), ivtc(src[3501: 6541], [1, 4, 6, 9]), cc(ivtc(src[8000: 12000], [1, 3, 6, 8]), 'Aパート'), src[12000: 12151], ivtc(src[12151: 20000], [0, 2, 5, 7]), ] ''' # timecodeファイル、chapterファイル、x264用QPファイルの出力、及び各クリップを結合 vfr = easyvfr.EasyVFR(clips) vfr.write_tcq('/path/to/the/files') #vfr.write_timecode('/path/to/the/timecode.txt') #vfr.write_chapter('/path/to/the/chapter.txt') #vfr.write_qpfile('/path/to/the/qpfile.txt') vfr.splice_clips().set_output()
timecodeのフォーマットはv2のみです。
chapterファイルのエンコーディングはUTF-8になります。
追記(20160402):最近のVapourSynthにあわせてちょっと書き直しました。
0 件のコメント:
コメントを投稿