MPEG2-TSの無劣化A-Bカットの話

無劣化というより該当の映像音声部分をパケット単位で切り出すだけの事がしたい場合の話です。
DTV的な用途だとフレーム単位での編集より(これやるならSmartRenderer買ってください)こっちが要求されるのではないのかなと思います。(素材として該当部分だけほしいとか)
まあこれだけなら別にMurdocCut使えば良いじゃない?でおわりなんですが、他に何かあるのかとかH.264(AVC)やHEVCはどうするの、というのが問題になるわけで。そっちをどうにか出来る方法をメインで書いておきます。

DGIndexNV(DGDecNV)

NVIDIAグラボ組ならdonate不要になったのでもうDGIndexNVにやって貰えばいいんじゃないのかな?って思います。

H.264もHEVCもいけますし一応MPEG2なTSもOKだった気がします(ただちょっと変なエンコードになってると怪しかった気がしなくもないですが忘れました)
音声の警告は別に無視してもしなくてもいいです。範囲指定してTS切るだけなら問題ないです。ProjectFile(dgi)使ってAviSynth+DGDecNV.dllで読むなら適切にやる必要がありますが。

DGDecNV GPU-Enabled AVC/H.264 Decoder and Frame Server

PTSはMPEG2に限って言えばMurdocCutで見たときにカット前と一致してたので大丈夫です。

ただ、DTS/PCRがどうなるかは未確認です。まーここ触ってなければ大丈夫でしょー

AACのフレーム長がちょっと気になるので後で気が向いたら……

TVTestの手動録画でごり押し

最悪なごり押しとしてはTVTestに食わせて残したい範囲だけ再生
この場合は知ってる限りで以下に気をつける必要があったと思います

Testの設定→録画で全サービスのチェックON
同様に さかのぼり録画をOFF(というかTvtPlayのシークを行った部分が残ってはいけない)
TvtPlayのラップアラウンドは無効にした方が良い可能性がある(その辺の改変が入るはずなので)
また、192byteなパーシャルTSの頭4バイト(タイムスタンプ)は蒸発します(TvtPlayで192→188変換が入るので)
最近のTVTestだとNULLパケット(0xffff)があったときにSplitされるはずです(0.7以前は触ってないので知りません)

ちなみにTVTestが再生できない音声を含んでいた場合でも別に全サービスで録画する分にはNULLパケット以外は手を付けずにそのまま出力してくれた気がするのでTvtPlay側の送出がまともに出来るTSなら割となんとかなっちゃう手法だったりします。これは便利(最悪)

×ffmpegでカットする

さっき便利(最悪)って言いましたがこれ以上にやってはいけない可能性が高いのが直接or間接問わずにffmpegを利用するパターンです。

あのツールはあくまでもMPEG2-TSの音声と映像をデコードしてからその部分の映像と音声を切り出して”MPEG2-TSに詰め直す”行為が行われているので我々が本来求めているパケット単位でのTSカットではありません。本当に注意してください。後で見直してデータ放送どころかEIT/TOT/NITまでもがないみたいなことがあり得ます。

まとめ

まあDGIndexNVが割りかし行けてるようにみえますが、シークのしやすさとかはMurdocCutの方がやっぱり行けてるのでMPEG2ならそっち使った方が良いですね。ただIndex作らなくていいので長めのTSを切るには楽かもしれませんね。
別に持ってるならSmartCutterでもよかったよーな気がしますがPCR/PTS/DTS触るらしいので要注意かもしれないですね(単純にパケット単位で前後カットしたい用途なら適切ではないかもしれない)実は買うまでもないのかもしれない?
参考 n-anime – ts cut
MurdocCutとDGIndexNVを適当に使い分ければ正直何とかなると思います知らんけど。

ところでMPEG2-ADとかになったTSも相変わらずIフレームしかみてないとはいえまともにデコード出来てるMurdocCutせんせい、かなりヤバくないですか?

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください