web-dev-qa-db-ja.com

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

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

これまでに発見したこと

  • ファイルをプローブすると、それらが Matroska Mediaコンテナ によって使用されるEBMLタイプであることが明らかになりました。

  • そこで、ファイル拡張子を.mkvに変更し、 MKVToolNix および [〜# 〜] ffmpeg [〜#〜]

  • MKVToolNixプローブにより、h.264でエンコードされたビデオトラックとAC3エンコードでエンコードされたオーディオトラックがあることが明らかになりました。

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

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

MKVToolNix screenshot of the track info

  • [〜#〜] 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
sfxedit

Matroskaファイルの「トラックタイプ」の値を簡単に変更できるEBMLエディターまたはMatroskaMediaコンテナーエディターを提出できませんでした。

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

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

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

screenshot of MKVToolNix Info View

16進エディタでファイルを開いた後、MKVToolNixInfoが指す位置でデータを検索するだけです。スクリーンショット:

screenshot of Hex Editor

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

Synalyze It!Pro for macOS-試用版を使用しました-16進編集をとても簡単にするために!)

1
sfxedit