最近になってようやくTS動画を音声無劣化かつ映像もそれなりの画質を保ったままMP4形式にエンコードする方法を習得したので、備忘録がてらその方法をまとめておきます。
Aviutlを使用したエンコードについてはやり方がいろいろありますし、解説されているサイトもたくさん存在しますが、私の方針としてはなるべく高品質な状態で半永久的に保存することを目指しました。そのため音声は当然無劣化となるようにエンコードします。
また映像や音声のCM部分をカットすることはもちろん、字幕データがあるものについては字幕の表示にも対応させました。
個々の詳しいやり方についてはおいおい追記していくとして、この記事では作業全体の流れや必要なソフト、プラグインなどについてまとめておきます。
AviutlでTS動画を音声無劣化でエンコードする流れ
- TS動画をM2V形式の映像ファイルとAAC形式の音声ファイルに分離する
- 分離したAAC形式の音声ファイルをFAWでWAV形式に偽装する
- AviutlでM2Vと偽装WAVを読み込んで、CMなどの不要部分を削除する
- 字幕データを合成するなら削除リストをエクスポートしておく
- 動画をMP4形式にエンコードする(疑似WAVをAACに戻す)
- 副音声を合成するなら読み込む音声ファイルを変更して同様の編集を行い、AAC音声ファイルのみを出力する
- TS動画から字幕データを取得後、削除リストを基に不要部分をカットする
- MP4動画に副音声データや字幕データなどを合成する
大まかな流れは以上になります。副音声や字幕が不要なら4番と6番以降の作業は不要です。
手順を確認したところで、Aviutl以外に必要なソフトをまとめておきます。
AviutlでTS動画を音声無劣化でエンコードするために必要なソフト
AviutlでTS動画を音声無劣化でエンコードするために、また副音声や字幕データを合成するためには下記のソフトが必要です。
DGIndex
まずTS動画の映像と音声を分離するためのソフトが必要です。
私がおすすめしたいのはDGIndexです…が、公式が配布しているDGIndexは不具合を抱えているようで、特にBS11などの録画番組を正常に分離できないことがあります。
そこで面倒ですが、有志が作成されたDGIndexのソースコードをダウンロードしてきて自力でコンパイルするのがおすすめです。これならほぼ100%の確率で正常に分離できています。
このMod版DGIndexでもなぜか1度だけ異常なファイルが生成されましたが、再度試してみたら正常に分離されたので、今のところまったく問題はないと言っても良いです。
Bon TsDemux
Bon TsDemuxもTS動画の映像と音声を分離するためのソフトです。そのためDGIndexがあれば基本的にBon TsDemuxは要りません。
Mod版DGIndexをコンパイルするのは手間がかかるので、それが面倒だったり上手くいかないならBon TsDemuxで代用しても良いでしょう。また副音声を分離するならこちらがおすすめです。
ただBon TsDemuxだとたまに分離に失敗することがあるので、私は基本的にDGIndexを使用しています。
FakeAacWav
FakeAacWav、略してFAWは音声を無劣化でエンコードするための要となる、AAC形式の音声ファイルをWAV形式に偽装、あるいは偽装を解除するためのソフトです。
FAWはAviutlのプラグインも用意されていて、むしろそちらで代用するほうが楽ですが、手動で偽装してもほとんど手間はかからないですし、こちらもインストールしておくことを推奨します。
ちなみに疑似WAVに変換することで、未然に音ズレを防ぐことが可能です。DGIndexやBon TsDumuxで分離した音声ファイルの名前にはDELAY+数値が記述されていますが、補正された疑似WAVではこのDELAYが0msになります。
たまにDELAYの数値が大きいと偽装後に警告が表示されることがありますが、Mod版DGIndexで分離した音声ファイルならこの警告を無視して使用してもエンコードに失敗したことはありません。今のところ100%成功しています。
Caption2Ass
TS動画から字幕データを抽出するために必要なソフトです。
コマンドプロントで操作するのでCUIに馴染みがない方は取っつきにくいかもしれませんが、バッチファイルを組んでしまえば作業を自動化できて便利ですよ。
ちなみにCaption2AssもいくつかのModがありますが、Caption2Ass_PCRが1番優秀らしい…?
SrtSync
Caption2Assで作成した字幕データからCMなどの不要部分をカットするために使用します。こちらもバッチファイルで自動化が可能です。
ちなみに不要部分を指定するテキストファイルは、後述するAviutlのプラグインを利用して生成します。
XMedia Recode
エンコードして生成したMP4動画に副音声データや字幕データを合成するために使用します。
字幕データの合成はCUIで操作可能なMP4Boxを使用する方法がメジャーみたいですが、私の環境ではなぜか出力先を指定するオプションが効かないなどいくつかの不具合がありました。
以上の理由から、今のところはXMedia Recodeで合成、出力先を指定しています。
動作が若干重たいのが難点ですが、再エンコードしなければ合成自体にかかる時間は数秒で済むので実用に問題はありません。
AviutlでTS動画を音声無劣化でエンコードするために必要なプラグイン
Aviutlのインストールと最低限の設定は済んでいるという前提で、TS動画を音声無劣化でエンコードするために、また副音声データや字幕データを合成するために必要なプラグインを簡単に紹介します。
MPEG-2 VIDEO VFAPI Plug-In
MPEG-2 VIDEO VFAPI Plug-InはTS動画から分離したM2Vを取り込むために必要な入力プラグインです。
他にも様々な入力プラグインがありますが、これ以外だと音ズレしたり色空間が変換されて画質が劣化したりとなかなか上手くいかず、最終的にM2VをMPEG-2 VIDEO VFAPI Plug-Inで取り込む方法に落ち着きました。
ちなみに拡張編集は使えないので、M2Vは本体ウインドウに直接ドラッグ&ドロップする必要があります。
またWAVに偽装した音声ファイルは本体メニューの「音声読み込み」から読み込まないといけないので注意してください。たまに読み込み忘れて無音声動画を作ってしまいます。。
まあ読み込み忘れてしまっても、後述する削除リストがあれば後からでも音声ファイルのみ出力することは簡単ですけどね。
自動フィールドシフト
自動フィールドシフトはインタレース解除用のプラグインですが、これを入れておくとカット編集した情報をテキストファイルで出力することも可能です。
この削除リストをSrtSyncに読み込ませれば、字幕データのCM部分を自動でカットしてくれます。
CutEdit
CutEditはカット編集プラグインです。これでCMなどの不要部分をカットします。
必須のプラグインではありませんが、拡張編集の機能でカットしてしまうと削除リストを出力できないので、CMカットと字幕データの合成を両立したいならあると便利です。
ジャンプウィンドウ
CutEditと連動させて使用します。
選択したフレームを含めて前後6フレームの画像を確認できるので、これがあるのとないのとでは編集効率が段違いです。
x264guiEx/x265guiEx
これはもうご存知、Aviutlでエンコードするならほぼ必須の出力プラグインですね。
高画質かつ高圧縮でエンコードしたいならx265guiExのほうが向いていますが、エンコードにかかる時間もそれなりに長くなるのがネックです。
特に実写のドラマだと、私の設定環境ではそれほどファイルサイズに差が生じなかったので、アニメや画質を重視する動画はx265でエンコードしていますが、長時間のドラマなどそこまで画質を重視しないものについては作業時間を優先してx264でエンコードしています。
いずれも拡張子的にはMP4形式の動画に変換されます。
以上で終わりですが、その他にも必要なプラグインがあれば適宜導入してもらえればOKです。
まとめ
まずはMod版DGIndexをコンパイルしましょう。そしてこれを使用してTS動画をM2VとAACに分離、さらにAACはWAVに偽装します。
AviutlでM2Vと疑似WAVを読み込んだらCMなど不要な部分をカット。字幕データを残したいならカット編集後に削除リストをエクスポートしておきましょう。
字幕データの編集はCaption2AssとSrtSyncを使用するとある程度自動化できるのでおすすめです。
エンコードが完了したら、必要に応じてXMedia Recodeで副音声や字幕のデータを合成してください。
コメント