問題:
カスタム プレーヤーでのみ再生できるビデオ ファイルが多数あるため、そのビデオを一般的なメディア プレーヤー (VLC や MPC など) で再生できるようにリバース エンジニアリングしたいと考えています。
これまでに発見したこと:
ファイルを調べたところ、EBML形式であることが分かりました。Matroska メディアコンテナ。
MKVツールNix調査の結果、h.264 でエンコードされたビデオ トラックと AC3 エンコードでエンコードされたオーディオ トラックがあることが判明しました。
しかし、「トラック タイプ」タグを意図的に変更することで、オーディオ トラックはビデオとして、ビデオ トラックはオーディオとして「マーク」されていました。
MKVツールNixトラック情報のスクリーンショット:
- 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 (デフォルト)
疑問:
Matroska コンテナを編集して、メディア トラックの「トラック タイプ」タグを変更することは可能ですか?
使用できますかffmpegビデオ トラックとオーディオ トラックの両方に正しい入力コーデックを指定して、それらを抽出 (できれば再エンコードせずに) するにはどうすればよいでしょうか?
答え1
Matroska ファイル内の「トラック タイプ」の値を簡単に変更できる EBML エディターや Matroska メディア コンテナー エディターを見つけることができませんでした。
そのため、バイナリファイルを直接編集するには、16進エディタを使用する必要がありました。MKVToolNixがなければ、時間のかかる作業になっていたでしょう。MKVToolNix 情報ツールMatroska ファイル内のデータ (タグ) の位置を指定する便利な機能が追加されました。
それによると「トラックタイプ: オーディオ「は414番の位置にあり、「トラックタイプ: ビデオ「」はMatroskaファイル内の位置532にあります。
MKVToolNix 情報ビューのスクリーンショット:
ファイルを16進エディタ(試用版)で開いた後、Synalyze It! プロmacOS の場合、MKVToolNix Info が示す位置にあるデータを検索するだけです。スクリーンショット:
位置414にデータが含まれていることがわかります83 81 02
(オーディオ- タグ用「トラックタイプ」)であり、位置532にはデータ83 81 01
(ビデオ- タグ用「トラックタイプ」)。したがって、このデータを交換して置き換える必要があります。