drm1gop.exe

本ツールは

VictorのDVDレコーダDR-M1ビデオモード で録画したMPEG2ストリームデータ中のClosed GOPフラグをクリアするツールです。

ダウンロード [ drm1gop051217.zip ]

作成のきっかけ

VictorのDVDレコーダDR-M1のビデオモードで録画したDVD-R/RWディスクをSONYのスゴ録RDR-HX70で再生すると、画面にたまにブロックノイズのようなゴミが出ます(XPモードで15秒ごと、LPモードで60秒ごとくらいの周期で)。DR-M1自身で再生する場合も、逆1倍速再生すると同様のゴミが出ます(順1倍速再生時にはゴミは出ません)。DR-M1のビデオモードで録画したDVDディスクをDVD Shrinkでリッピングし、TDAでカット編集するときにも、TDAのサルネイム表示にゴミが出るフレームがあります。

これらのゴミの原因を探るためDR-M1ビデオモードのMPEG2ストリームデータを詳しく調べてみると、どうやら直前のGOPから画素ブロックを引き継いでいるGOPなのにClosedフラグが立っているGOPがあるようです。Closedフラグが立っているGOP(Closed GOP)は1つ前のGOPのデコード情報を利用せずに単独でデコード可能なGOPで、前のGOPから画素ブロックの引き継ぎがないことを表しています。ところがDR-M1ビデオモードでは前のGOPからの画素ブロックの引き継ぎがあるGOPにもかかわらず、なぜか周期的にClosedフラグが立ってしまうようです。このようなGOPでは前のGOPから引き継がれるべき画素ブロックが正しく引き継がれずゴミが表示されることがあります。問題のGOPのClosedフラグをクリアするだけでゴミは出なくなります。

本ツールは、MPEG2ストリームデータ中からClosed GOPを探しだし、そのGOPのClosedフラグをクリアしてOpen GOPに変更します。

VRモードについて

DR-M1のVRモードではClosed GOPフラグが周期的に立つという現象は起きません。DVD-RAMやDVD-RWのVRモードで録画したデータには本ツールを使用する必要はありません。

本ツールの使用方法

手順は以下のようになります。

  1. DR-M1のビデオモードで録画したDVD-R/RWディスクをDVD Shrink で非圧縮で取り込む(ディスクを開き、圧縮設定でビデオを非圧縮に設定し、バックアップ)。
  2. 取り込んだVIDEO_TSフォルダを引数に指定してdrm1gop.exeを-rで実行する。
  3. TMPGEnc DVD Author(TDA)等でオーサリングする。

上記の手順以外での本ツールの使用は想定されていません(TDA等で編集済みのMPEG2ストリームデータでもたいてい修復できますが、スマートレンダリングを行った部分ではゴミが残る場合があります)。

DR-M1のビデオモードで録画したDVDディスクはどうもファイル構造がおかしいようで、WindowsのUDFファイルシステムからは最後の方のファイルが正しく読めません(VTS_01_4.VOBのデータの先頭がVTS_01_3.VOBの終わりの方と内容が重複して、データの最後が尻切れトンボになったります)。DVD Shrinkで非圧縮で取り込むと、正しく読めるようです。DVDドライブによってはDVD Shrinkでディスクを開こうとするとエラーになって取り込めない機種があるので、その場合はライティングソフト等でDVDのディスクイメージ(ISO)を吸い出してから、DVD Shrinkでディスクイメージを開いて下さい。

drm1gop.exeはWin32コンソールアプリケーションです。コマンドプロンプトを立ち上げて、その中で実行してください。drm1gop.exeが存在するフォルダを E:\Temp 、DVD Shrinkで圧縮なしでリッピングしたフォルダを F:\dvd\VIDEO_TS と仮定すると、実行例は以下のようになります。

フォルダ名にスペースを含む場合は、ダブルクォーテーションで括ってください。例.>drm1gop -r "F:\dvd title\VIDEO_TS"
フォルダ名を入力するのが面倒な場合は、エクスプローラからコマンドプロンプトへフォルダをドラッグ&ドロップすることでフォルダ名を入力できます。

表示される . はGOPを表しています(GOPは通常15フレームから成り、0.5秒に相当します)。改変すべきClosed GOPは C で表示されます。すべてのGOPの検査・修復が終わって成功すると「XX 個のClosed GOPをOpen GOPに変更しました」というメッセージが表示されて終了します。改変すべきClosed GOPがなかった場合は「改変すべきClosed GOPは見つかりませんでした」と表示されます。

GOPの検索に失敗しました」というメッセージが表示されて処理が中断してしまった場合は失敗です。MPEG2ストリームデータが破壊された可能性があるので、そのデータは使用しないでください。

drm1gop.exeの動作オプションの説明

drm1gop.exe の書式は次のようになります。

drm1gop <オプション> <VIDEO_TSフォルダ名 または MPEG2ファイル名>

<オプション> には以下のものを1つまたはそれ以上指定できます。-c または -r オプションは必ずどちらか一方指定してください。

-c MPEG2ストリームデータの検査のみ行います。データの修復・改変は行いません。GOPは . で表示されます。改変すべきClosed GOPを見つけた場合は、C を表示します。
-r MPEG2ストリームデータの修復・改変を行います。GOPは . で表示されます。改変すべきClosed GOPを見つけた場合は、C を表示し、Open GOPに変更されます。
-f 最初のGOPも改変の対象にします。このオプションを指定しない場合は、最初のGOPがClosed GOPであっても、Open GOPには変更しません。DR-M1のビデオモードで録画したMPEG2ストリームデータは最初のGOPは前方参照なしのClosed GOPなので、通常はこのオプションは指定しないで下さい。
-v GOPの詳細を表示します。GOPのタイムコード、ファイル内の位置、Open|Closed、Normal|BrokenLink、ピクチャ構造(IPB)が表示されます。ピクチャは誤検出される場合があるので、ピクチャ構造は参考程度にしてください。
-t<数値> GOP間のタイムコードの差が指定フレーム数を超えた場合は、GOP検索失敗とみなして処理を中断します。デフォルト値は-t20です。GOPのタイムコードを検査しない場合は-t0を指定して下さい。

GOP間のタイムコードが20フレーム以上飛んだ場合は、「GOPの検索に失敗しました」というメッセージが表示されて処理が中断します。GOP以外のデータをGOPと誤検出した可能性があるためです。-rオプションを指定して処理が中断してしまった場合は、MPEG2ストリームデータが破壊された可能性があるので、そのデータは使用しないでください。

変更履歴

  • 初期ver.→ver.050612:
    • オプション -t0 を追加
    • MPEG2ファイルをチェックする際、リードライトモードでファイルオープンしていたのを修正
    • ファイルバッファをスタックではなくヒープに取るように変更
  • ver.050612→ver.051217:
    • GOPのタイムコードが指定フレーム数以上飛んだ場合、GOP誤検出とみなしてそのGOPを無視して処理を続行するようにした(ただし3回連続でタイムコードが飛んだ場合は、GOPの検索失敗とみなして処理を中断します)

要望等について

基本的に要望等にはお答えできません。ソースを付加しておきますので、自分で改変して下さい。

疑問点等ありましたら、 mpuusan@mail.goo.ne.jp まで。

ひとつ上に戻る

inserted by FC2 system