大量のMTS(AVCHD)形式のファイルをaviに変換する

Windows上ではK-Lite Mega Codec Packを入れてあるので再生できるのだが、Macで見たいとか言われたので、PanasonicのHDC-SD5で録画した166個のMTSファイルを一括変換すべく色々やってみた。

思いついた変換方法は、MTS→Avisynthスクリプト作成→VirtualDubで読み込み→AVI保存

とりあえずavsはファイル数分作ることにした。さっくりとPythonスクリプトで作成。(後述)

VirtualDubでジョブ処理をさせるためにjobsファイルを作成する。これもどうせ途中で止めたりしないので、1ファイルに「ファイルオープン」~「AVI保存」~「クローズ」までを処理数分繰り返して記述することにした。

カレントディレクトリにtemplate.avs、template.jobs、createJobs.pyを作成。中身はそれぞれ以下の通り。

template.avs

DirectShowSource("..$1")
BilinearResize(1920,1080)

template.jobs

VirtualDub.Open(U"D:datasmovieshogeavs$1.MTS.avs");
VirtualDub.SaveAVI(U"D:datasmovieshogeavi$1.avi");
VirtualDub.Close();

createJobs.py

import os
path=’./MTS’
filelist = os.listdir(path)
output_jobs = ”
for i in range(len(filelist)):
    item=os.path.join(os.path.normpath(path),filelist[i])
    filename = os.path.basename(item)
    filebase = filename.replace(‘.MTS’, ”)
    f = open(‘./template.avs’, ‘r’)
    output = ”
    for line in f:
        line = line.replace(‘$1’, item)
        output = output + line
    f.close()
    fo = open(‘./avs/’ + filename + ‘.avs’, ‘w’)
    fo.write(output)
    fo.close()
    f_jobs = open(‘./template.jobs’)
    for line in f_jobs:
        line = line.replace(‘$1’, filebase)
        output_jobs = output_jobs + line
    f_jobs.close()

fo_jobs = open(‘./all.jobs’, ‘w’)
fo_jobs.write(output_jobs)
fo_jobs.close()

あ、MTSファイルはMTSフォルダに入れておくのと、aviフォルダ、avsフォルダを作っておく。

あとはPythonスクリプトを実行するだけで、all.jobsが出来上がるので、VirtualDubのファイルメニューからRun Scriptを実行するだけ。VirtualDubの保存時のエフェクトやCODECはあらかじめVirtualDub上で設定しておく。


新しく会社作りました!

コメントをどうぞ