コーデック ID が一致しない (トラック タイプが間違っている) 破損したファイルからビデオとオーディオを抽出する方法は?

コーデック ID が一致しない (トラック タイプが間違っている) 破損したファイルからビデオとオーディオを抽出する方法は?

問題:
カスタム プレーヤーでのみ再生できるビデオ ファイルが多数あるため、そのビデオを一般的なメディア プレーヤー (VLC や MPC など) で再生できるようにリバース エンジニアリングしたいと考えています。

これまでに発見したこと:

  • ファイルを調べたところ、EBML形式であることが分かりました。Matroska メディアコンテナ

  • そこで私はファイル拡張子を.mkvに変更し、さらにファイルを調べた。MKVツールNixそしてFFMPEG

  • MKVツールNix調査の結果、h.264 でエンコードされたビデオ トラックと AC3 エンコードでエンコードされたオーディオ トラックがあることが判明しました。

  • しかし、「トラック タイプ」タグを意図的に変更することで、オーディオ トラックはビデオとして、ビデオ トラックはオーディオとして「マーク」されていました。

MKVツールNixトラック情報のスクリーンショット:

MKVToolNix のトラック情報のスクリーンショット

  • FFMPEGも同様のことを確認しています。

[matroska,webm @ 0x7f966c800a00] avformat_find_stream_info でコーデックを開けませんでした

[h264 @ 0x7f966c811a00] コーデックタイプまたはIDが一致しません
[ac3 @ 0x7f966c812600] コーデックタイプまたはIDが一致しません

[matroska,webm @ 0x7f966c800a00] ストリーム 0 (オーディオ: h264 (高)、0 チャンネル) のコーデック パラメータが見つかりませんでした: サンプル レートが指定されていません。'analyzeduration' および 'probesize' オプションの値を増やすことを検討してください。

[matroska,webm @ 0x7f966c800a00] ストリーム 1 のコーデック パラメータが見つかりませんでした (ビデオ: ac3、なし、192 kb/s): サイズが指定されていません。'analyzeduration' および 'probesize' オプションの値を増やすことを検討してください。

(編集済み)

期間: 01:46:42.00、開始: 0.035000、ビットレート: 2629 kb/s
... ストリーム #0:0(eng): オーディオ: h264 (高)、0 チャンネル (デフォルト)

ストリーム #0:1(eng): ビデオ: ac3、なし、192 kb/s、31.25 fps、31.25 tbr、1k tbn、1k tbc (デフォルト)

疑問:

  1. Matroska コンテナを編集して、メディア トラックの「トラック タイプ」タグを変更することは可能ですか?

  2. 使用できますかffmpegビデオ トラックとオーディオ トラックの両方に正しい入力コーデックを指定して、それらを抽出 (できれば再エンコードせずに) するにはどうすればよいでしょうか?

答え1

Matroska ファイル内の「トラック タイプ」の値を簡単に変更できる EBML エディターや Matroska メディア コンテナー エディターを見つけることができませんでした。

そのため、バイナリファイルを直接編集するには、16進エディタを使用する必要がありました。MKVToolNixがなければ、時間のかかる作業になっていたでしょう。MKVToolNix 情報ツールMatroska ファイル内のデータ (タグ) の位置を指定する便利な機能が追加されました。

それによると「トラックタイプ: オーディオ「は414番の位置にあり、「トラックタイプ: ビデオ「」はMatroskaファイル内の位置532にあります。

MKVToolNix 情報ビューのスクリーンショット:

MKVToolNix 情報ビューのスクリーンショット

ファイルを16進エディタ(試用版)で開いた後、Synalyze It! プロmacOS の場合、MKVToolNix Info が示す位置にあるデータを検索するだけです。スクリーンショット:

16進エディタのスクリーンショット

位置414にデータが含まれていることがわかります83 81 02オーディオ- タグ用「トラックタイプ」)であり、位置532にはデータ83 81 01ビデオ- タグ用「トラックタイプ」)。したがって、このデータを交換して置き換える必要があります。

関連情報