今までMediaCoderをベースにしていたアニメエンコレシピを久しぶりに刷新しました。MediaCoderは様々なフリーツールを裏で呼び出して使うフロントエンドGUIツールで、今まではAviSynthでデインタレと局ロゴ消しをして、x264でmp4にエンコードするというレシピにしていました。MediaCoderは各種パラメーターがGUIで指定できて便利は便利なんですが、いまいち不安定な箇所もあります。最新版が良いとも限らないので迂闊にアップデートもできず、既に治ってるバグもあるかも知れないですが、ウチでは少なくとも、
・カンパしたのに定期的にIDを聞かれるダイアログがでてエンコが中断される
・カンパしたのにブラウザで広告ページが表示されたりしてウザい
・環境設定にFireFoxを使うのだけど、ついにFF最新版ではエラーが出るようになった(MediaCoderも最新版にすればいいんだろうけど、上記理由で勇気が要る)
など。そして、AviSynth(aviutl)によるデインタレ処理のスクリプトが難しく、色々ググってはマネしてみたんですが、単一のスクリプトで汎用性のあるものに仕上げられないでいました。
一方、デインタレでいえばTMPGEnc Video Mastering Works 5(以下TVMW5)で24fps化した方がずっと簡単で安定することはわかってたんですが、こっちは透過合成フィルタがなくロゴ消しができないので、仕方なく上述のMediaCoder環境を使っていた、という感じです(ここ2,3年位)。
それでもiPhoneやiPad、車載モニタで見る分には正直あまり気になってはいなかったんですが、最近は友達と遠隔同期視聴をしたりするので、PCモニタやプロジェクターで再生してやっぱガタガタだなぁ、と思う機会も増えてきたり。もともとチルト(縦スクロール)するカット(確かストパン2のED)がガタガタするのが気になってAvySynthを導入したんですが、気付いてみると最近はパン(横スクロール)がガタガタなのに凹む日々。
連休を使ってレシピの再検討を行いました。以上、毎度長い前振り。
■TVMW5でも局ロゴ消せる!?
なんでもっと早くググらなかったんでしょう。結論からいうとできました。正確にはaviutlで「透過性ロゴ」フィルタをかけただけの編集プロジェクトファイル(.aup)を作り、それをTVMW5にVFAPI経由で読み込ませます。aupファイル用のVFAPIプラグインはaviutlに添付されているので、TVMW5のフォルダに放り込んでやれば認識するので、環境設定画面で有効化してやればOKです。
以下、当面の手順メモです。個々のソフトの細かい操作方法などは割愛します。
・TMPGEnc MPEG Smart Renderer 4でCMカットする
tsを直接aviutlに食わせてたaupをTVMR5に食わせてからカット作業してもいいんですが、最近のTMSR4はCM検出機能とかついて便利なのと、aviutlに生tsを食わせるとGOP検出とかで読み込みに数十秒待たされるので、CMカットは従来通りTMSR4を使うことにしました。HDD容量的には中間のMPEGファイル作らなくて済ませられるのも魅力なんですが作業性優先で。ここで生成されるファイルは、CMカット済みMPEG2ファイル、以下(A)と、(チャプター付きmp4を作りたい場合は).keyframeファイル(B)です((B)は環境設定で自動的に出力されるようにできます)。ちなみに我が家ではここまでは録画機で行います。
・aviutlでロゴを指定して.aupファイルを生成
aviutlに(A)を読み込ませ、チャンネルにあったロゴをセットします。aviutlは最後に使ったロゴを自動的に適用してくれるので、同じチャンネルの番組を連続で読み込ませると作業性が上がりますね。aupファイル(C)は単なるプロジェクトファイルなのでサイズは小さいし一瞬で保存されます。
aviutlのコマンドラインツールとかで上手いことマクロ化すれば、(例えばチャンネル名をファイル名末尾に足しておいて)このaupファイル出力までを自動化できるのかも知れませんが、まだよくわかってないです。aviutlって局ロゴ透過ファイルを作るのくらいしか使ったことないので…
・TVMW5に(C)を読ませる
VFAPIフィルタが正しく設定されていれば、普通にプロジェクトにドラッグとかで一括投入できます。ただしaviutl側でAC3音声を認識できてないせいか、TVMW5側でも音声トラック無しとして読み込まれます。そこで音声トラックとして手動で(A)を再指定します。(A)は映像と音声が両方入ったファイルですが問題なく音声トラックだけが利用されます。またkeyframeファイル(B)はここでは使いません。TVMW5にはキーフレームをiOSのチャプターとして出力するというチェックボックスがありますが、ウチでは機能してないっぽいので(コンテナ拡張子を.m4vとかにしたらいいのかも?)。また、keyframeファイルを読み込ませると、プラグインがクラッシュするっぽいです。エラーダイアログを無視して進めればいいだけなのでサムネイル生成に失敗してるのかな?まぁ鬱陶しいのには変わりありません。
・TVMW5でエンコする
TVMW5もH.264なmp4はx264を使うので、MediaCoderの時と同じです。もともとパラメーターを似せた出力テンプレートを作ってあったのでこれを指定。またフィルタも24fps化(動き優先)や軽くノイズ除去を適用したテンプレート作っておいて一括適用。この辺り、なるべく数をまとめてエンコした方が効率は良いです。
単に再生できりゃいいという方ならここまで。以下はチャプターやメタタグ、アートワークなどを一括処理する為の追加レシピです。
・keyframeファイル(B)からiOS用チャプターファイルを生成
自作のdgKeyframe2Chapterというツールを使い、.chapters.txt形式のファイル(D)を作ります。
・各種付随ファイルを統合して、高機能mp4ファイルを生成
iOSやMPCHCでチャプターを認識し、iTunes上で「TV番組」として認識して番組名やエピソード番号、サブタイトルなどが正しく表示され、更にはアートワークまで表示されるmp4ファイルにします。
AtomicParsleyというコマンドラインツールを使えば良いのですが、バッチ処理のためのGUIフロントエンドツールdgMP4Taggerを公開しています。
- .mp4ファイル
- .chapter.txtファイル(チャプター情報)
- .jpgファイル(アートワーク用)
の3つを合成して新しいmp4ファイルを作ります。詳しくはリンク先や同梱のマニュアルをご覧下さい。
とまぁ、電子書籍レシピ同様、相当な物好きじゃなけれ
ばマネできない手順ですが、とりあえず自分の記録のために書き留めておきます。新旧レシピの比較としては、
- パンニングなどのカットが滑らかに動くようになった
- 動画解像度(?)も上がった気がする
- サイズが20%程度縮まった!
- エンコ時間が若干伸びた?(たぶんノイズ除去フィルタの分)
という変化が。今までインタレ解除がヘッタクソだったせいで、何フレームか毎に写真のような混合フレームができちゃっていました。再生ソフトでポーズかけまくってるとこういうフレームに遭遇します。当然圧縮には不利でしょうし、なによりこうした物理的にブレたフレームが混じることで見た目も悪くなります。新レシピだとスペースキー連打しまくってあちこちでポーズしてもこうしたフレームが見当たりません。
実際にはインタレ解除ってもっと奥が深くて、こだわってる人は番組毎、下手するとエピソード毎に最適なデインタレレシピを適用しているようですが、σ(^^)はさすがにそこまでの手間はかけたくありません。なので、TVMR5のそこそこのインテリジェントさにおまかせできるのがこのレシピの最大のメリットですね。また、ソフトとして安定度が上なのも大きいです。複数本のバッチ処理をかけて安心して寝ることができます。もっと早くググってレシピを見直すべきだったと反省しきり。
さて、これで何年戦えるんでしょうね。最近はBDレコーダーやnasneなどでもH.264のハードエンコができるようになったし、iOS端末から直接、しかも外出先からも視聴できるような環境が整ってきています。そろそろソフトエンコの時代でもないだろ、という気も。ただやはりそうしたハードエンコは画質的にはまだ微妙でブロックノイズ等が気になることが多いし、やはりOPスキップなどがフリックでできる拙作「おやゆびでお」+自作ライブラリサーバーの方が快適なんだよなぁ(ステマ)。
5年ぶりに(メイン機の)グラボ交換
玄人志向 GeForce GTX650 1GB 補助電源なし Greenモデル PCI-E GF-GTX650-E1…