
以前にVFRなMP4、MKV(H.264)に挑戦する(AVIUTL編)という記事で自動フィールドシフトでVFRな動画を作成するというのを書きましたが、60iの混合ソースがある場合どうしても思うような状態にならないと思った人もいると思います。60iがよくわからない人はここを読んでください。
どうしても納得いかない人は60iのソースはBob化(60fps化)してあげるのが良いです。といっても静止シーンではBob方式の性質上ゆらゆらして見えてしますが。そういったことを色々試していながら私が自動フィールドシフトでやることが多いのは色んな混合ソースでヴァー('A`)となったからです。
静止でゆらゆらすると書きましたが60iが使われているようなシーンでは大抵テロップなどが一定でスクロールしていて(要するにエンディングに多い)動いてる部分に目に付くのでそこをどうにかしたいと思ってBob化に行き着きます。この記事を書いてる今で放送されてるアニメでは、カイジ、げんしけん2、神霊狩/GHOST HOUND、ネウロなどのエンディング部分でしょうか。ちょっと前ですと私がエンコードしたものでは、なのはStSのED全部とかひぐらし解DVD1巻の特典DISKのオマケアニメの2秒ぐらいで終る超高速スタッフロール(うろ覚え)とかもっと過去にまで遡っていくと色々あります。
EDだけ60iでOP本編は24fps(周期は悩ましいのもあり)というものが多いので、今回はそれらを個別にフレームを指定し手動でVFR化するという紹介になります。今回もサンプルMP4を置いてありますので60iソースをBob化した動画を見たことが無い人は参考になると思います。
早速60iのソースをBob化してみる、比較動画を見てみる
Bob化についてはAVISYNTH標準プラグインのBobで出来ます。そこそこ一般的なデインタレプラグインのTdeintのMode指定でも出来ますし、他にも外部プラグインがあります。また別の方がAutoDeintフィルタを利用したBob(60fps化)関数のbbbなんかも公開されています。
AVIUTLの場合は恐らく60fps読み込みをしてインターレース解除は自動なりにすれば同じようになります。保管部分は別の話かもしれませんが。
サンプルはx264でエンコードしています。オプションは以下を使用しています。サンプルのはkeyint300にするべきだったかな\(^o^)/--scenecut75もいりませんねw
x264 --crf 20 --level 4 --keyint 240 --min-keyint 1 --scenecut 75 --bframes 1 --bime --b-rdo --weightb --direct auto --analyse p8x8,b8x8,i4x4 --8x8dct --trellis 2 --cqm jvt --me umh --merange 32 --qpmax 36 --qpstep 8 --ipratio 1.70 --pbratio 1.50 --subme 6 --no-deblock --no-fast-pskip --threads auto --thread-input --progress --sar 40:33 --no-dct-decimate --no-psnr --no-ssim
何度も人柱になる魔法○女リリカル○のはStrikerS 15話EDの場合
・OPと本編に合わせてEDも24fpsにAuto24FPSで処理しちゃった場合(24fps)
当然がっくんがっくんになります。30fpsを24fpsに間引きしたときよりもひどさを実感できると思います。
以前の記事で書いた自動フィールドシフトを利用したVFR化は、本編中などで24fpsと30fpsが部分部分で混合してくる、もっと噛み砕いて言いますと2話では全部24fpsだったのに3話では部分的に30fpsの混合になっている!?という感じで微妙に不明確だし面倒という場合に使うのですが、今回のケースのように明確にEDだけ毎回60iとわかっている場合は手動でやるほうが良いのです。手動でどのように分けるのかは後で説明します。
・AutoDeintで処理しちゃう場合(30fps)
これでも私個人は良いと思っています。ですが60フレーム読み込みをしたときに60枚違う絵が出るわけですので、これでは半分にAutoDeintで保管されてしまっているわけです。不自然ではないですがスクロールは本来の滑らかさを失われていると考えます。
・TdeintでBob化した場合(60fps)
上の30fpsのものよりスクロールが滑らかになり文字も読みやすくなったのがおわかり頂けたでしょうか。TdeintのMode=1はdouble rate output (bobbing) とBob化もしてくれます。本来60iソースはこのような状態のものを指すのかー!とはじめて見たときは驚きました。
※H.264で圧縮された60fpsのMP4はかなりの再生スペックが必要です。コマ落ちしたらPCスペックが足りないか再生環境に問題があると思ってください。
・AVIUTLで60fps読み込みをしてインターレース解除自動の場合(60fps)
30pと60iが混在している?涼宮ハ○ヒの○鬱1話のED
・AutoDeintで処理した場合(30fps)
とりあえずぱっと見の感想でテロップの文字が読みづらいと思います。右側テロップ全部は60iで流れているからです。ですが左側のアニメ部分は30pのようです。でもパンすると左側も縞が出て全部違う絵が表示されてわけがわかりません。bbbの場合はこういう感じになります。
・TdeintでBob化した場合(60fps)
スクロールは滑らかになりました。どっちがいいの?は結構難しいところだと思います。私はTdeintでBob化したほうを選びましたが・・・正直言って良い方法が未だにわからないソースでもあります。
ITSで24fpsと60fps部分を切り分けタイムコードを出力しtc2mp4でVFR化する
そのまま魔法○女リリカル○のはStrikerSの例でやっていきます。
ITSはdefという定義ファイルを作成しそれを元にデインタレ処理を切り替えることが出来ます。要するに24fps部分のフレームはAutoDeintで、60fps部分はTdeintでという使い方が出来ます。今回使用するコンテナはmp4ですのでnullフレームを含まない形で削除します(ITSのfps=-1)。以上を踏まえるとITSは以下のように指定することになります。outputで吐くタイムコードは後でVFR化する際に必要なので必ず指定して下さい。
its(def="H:\enc\nanoha.def", fps=-1, output="enc1.tmc")
defの作成にうつります。肝心な部分ですので上記ITSのページは必読です。下3行がフレームの切り分けでmode fps_adjust = onは指定範囲が5で割り切れる倍数で無いときにONにします。AntiComb('A`)プッとか言わないで下さいw vinverseのときもあるんですけどねーコーミング除去は。たぶんこの話はスレが1つ潰れる類のものなので深く考えを残さないことにします\(^o^)/でもblendは嫌なんですー!(使うけど)
set [24] auto24 = 'FrameCache(9).Auto24FPS().AntiComb()'
set [60] tdeint = 'tdeint(mode=1)'
default 24 = auto24
default 60 = tdeint
0-42197[24]
42198-45433[60]
45434-46033[24]
mode fps_adjust = on
エンコード時(というかVDMとかAvsPのプレビュー時にすでに吐かれる)に出来たタイムコードを使い、tc2mp4でエンコードしたmp4動画のタイムコードを修正します。直でmp4で出力した場合は恐らく29.97fpsで処理されていると思いますのでraw形式で出力しないでも平気です。tc2mp4でVFR化したMP4と音声をMUXすれば完成です。以下私の例です。DTSRepairでも出来ますがそれは以前書いたので今度はtc2mp4での例ってだけですw
tc2mp4 -i "enc1t.avs.mp4" -t "H:\enc\nanoha5\enc1t.tmc" -o "H:\enc\nanoha5\enc1t_vfr.mp4"
オマケ(むしろ本編) AVIUTLの場合は個別に出力してmp4export.aufで結合する
mp4export.auf及び、mp4input.auiはseraphyさんのところからダウンロードして下さい。単純にMP4を開いて追加読み込みで更に結合したいMP4を読み込みエクスポート→MP4 Exportで結合されたMP4が出力されます。
どんなものでも結合出来るのかはわかりませんがmp4catと同じであれば、個別に出力したx264のオプションが同じであればストリームが壊れたMP4にはならないはずです。
Readmeに書いてあるように60iだけ60fps読み込みで60fpsなMP4を出力して、その他の部分はAFSで処理してしまいそれらを結合なんていうことも出来てしまうのが恐ろしいです。
更にカット編集して部分だけそのまま取り出せてしまうという素晴らしい使い方も出来ます!出来ないのかな?出来ないのかな?と待ち望んだものがついにきたという感じで大変嬉しいです。
※MP4Plugin_20071129にあるreadme.txtの一部引用
■24/30/60fps混合のアニメをエンコードする場合
姉妹品の拡張x264出力で作成した複数のMP4を結合する手順になります。
OP60fps、本編EDが24/30fpsの混合だったとします。
1.AviUtlにて、元ファイル(.mpgや.dvなど)を60fpsで読み込みます。
2.適当にインタレを解除します。(自動や二重化)
3.OP部分を切り出し、拡張x264出力でMP4ファイルにエンコードします。
※この時、自動フィールドシフト利用はOFF
4.fpsを変更せずに、元ファイルを開きます。CMカットを忘れずに。
5.自動フィールドシフトを有効にし、拡張x264出力でエンコードします。
※この時、自動フィールドシフト利用はON
6.出来上がったOPのMP4を、AviUtlに読み込ませます。
7.追加読込で、本編のMP4を読み込みます。
8.「エクスポート」より、MP4 ExportでMP4出力します。







