2

マジックナンバーに基づいて、ファイルの種類を盗聴しようとしています。いくつかのグーグルの後、私は次の情報を見つけました:

WMA:

主な関連付け:Windows Media
会社:Microsoft Corporation
ファイル分類:Audio
Mimeタイプ:audio / x-ms-wma、video / x-ms-asf
文字の識別16進数:30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C

WMV:

主な関連付け:Windows Mediaファイル
会社:Microsoft Corporation
Mimeタイプ:video / x-ms-wmv
文字の識別16進数:30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C

これらの魔法数は、オーディオとビデオの両方で使用されます。どちらかを持っているかどうかをどのように検出できますか。System.IO.Stream注:拡張機能は使用できません。バイト数しかありません。

4

4 に答える 4

1

MSDNから:

ASFファイルとWMVまたはWMAファイルの唯一の違いは、ファイル拡張子とMIMEタイプです。WMVファイルのMIMEタイプはvideo/x-ms-wmvであり、WMAの場合はaudio/x-ms-wmaです。ASFのMIMEタイプはvideo/x-ms-asfです。ファイルの基本的な内部構造は同じです。

于 2012-03-28T15:13:34.837 に答える
1

これは、スニファーがどれだけ優れているか、およびどれだけ優れたパフォーマンスが必要かによって異なります。約1024バイトを分析できる場合は、WMVファイルに固有の他のメタデータを検索できます。そのようなデータがない場合は、それがWMAであると見なすことができます。

次のバイトを(優先順に)探します。

  1. AspectRatio(UTF-16)
  2. WindowsMediaVideo(UTF-16)
  3. WMV3(ASCII)
  4. DeviceConformanceTemplate MP @ ML(UTF-16)

ヘッダー領域にあるこのメタデータタグのいずれかをプレセンスすると、ファイルがWMVとして識別されます。したがって、最悪の場合、WMVを検出するために1024バイト領域で約8回の検索(すべてのタイプを含む)を実行する必要がDeviceConformanceTemplateあり、最良の場合、WMVを検出するために1回の検索を実行する必要があります。

もう1つの方法は、ヘッダーを解析することです(AsfMojoが役立つ場合があります)。これは、一般的な8Kバイトですが、一般的には制限されません。ヘッダー情報は、オーディオデータとビデオデータを区別するのに十分でなければならないと思います(ただし、100%確実ではありません)。私はこの方法を好み、解析が不可能な場合は「ハッキー」ソリューションにフォールバックします。

于 2012-03-28T16:14:40.103 に答える
1

すでに述べたようにWMVWMAfileaは同じ形式を共有します- Advanced Systems Format (ASF)。さて、MSのWebサイト(利用可能)でASF形式の仕様を確認できますが、気の弱い人向けではありません。

ファイルの内容を確認するには、 WMCreateReader関数を使用してインスタンス化Windows Media Reader Objectし、インターフェイスを使用してファイルに関する情報を取得することをお勧めします。IWMHeaderInfo

WindowsMedia.NETライブラリは、C#からこのAPIを操作するために必要な定義を提供します(おそらく有用なサンプルもあります)。

于 2012-03-28T16:24:37.190 に答える
0

マジックナンバーを見ただけでは違いがわかりません。マジックナンバーは、Advanced Systems Format(ASF)であるコンテナ形式のものです。

ASFには、オーディオストリームやビデオストリームを含む任意の数のストリームを含めることができます。少なくとも1つのビデオストリームが存在する場合にのみ、そのファイルをWMVファイルと見なします。

WMAとWMV(ASFだけでなく)を区別したい場合は、たとえばAsfMojoを使用してメディアファイルを解析する必要があります。

于 2012-03-28T15:11:33.323 に答える