AviSynthで、jpegからHD動画に変換する。

えー内容としてはとても簡単しもっと最適化できそうですが、AviSynthど素人なのでここまで調べるのに、ちょっと時間がかかったので、メモ

  1. AviSynth 入力された映像(静止画を含む)を加工して映像(静止画)として出力するソフト。加工条件の設定がスクリプトベースでできるのがポイント。2.5を使用
  2. VirtualDub 動画編集ソフト、AviSynth用のスクリプトが入力として使用できる。1.8.6の日本語版を使用

 このあと凝った編集をするなら、VirtualDubで適当なaviファイルとしてセーブしてEdiusなどで加工します。

AviSynthスクリプト

SD動画(640x480)作成
# #以降はコメントです
# jpgファイルを連番で読み込む
src = ImageSource("HC08%04d.jpg",1054,1122,29.97,false,false,"RGB32")
# 640x480にBilinearでリサイズ
src = src.BilinearResize(640,480)
# srcを返す。
return src 

上記ファイルの、"HC08%04d.jpg",1054,1122 の部分は 1054が開始ファイル名、1122が終了ファイル名です。具体的にはHC081054,jpg 〜 HC081122.jpg のリストとして展開されます。また、29.97がフレームレートになります。

HD動画(1920x1080)作成
#以降はコメントです
src = ImageSource("HC08%04d.jpg",1054,1122,29.97,false,false,"RGB32")
# アスペクト比が4:3なので、適当な範囲を16:9に切り抜く
src = src.Crop(0,378,4032,2268)
src = src.BilinearResize(1920,1080)
return src

あとは、夜景などは前後のフレームを混ぜるのもいいかもしれません(試行錯誤中)

HD動画(1920x1080)作成 4フレーム合成
src = ImageSource("HA20%04d.jpg",4272,4701,29.97,false,false,"RGB32")
src = src.Crop(0,378,4032,2268)
src = src.BilinearResize(1920,1080)
src1 = src.trim(0,-420)
src2 = src.trim(1,-420)
src3 = src.trim(2,-420)
src4 = src.trim(3,-420)
src12 = Layer(src1,src2,"fast",128)
src34 = Layer(src3,src4,"fast",128)
src1234 = Layer(src12,src34,"fast",128)
return src1234