3

私は何日もコーデックの問題に悩まされていましたが、まだ全体像を見ることができませんでした. オーディオ/ビデオ形式とコーデックを扱うのは初めてです。だから私は本当にそれについていくつかの助けが必要です. 作品はこちら。

カスタマイズされた mpeg ファイルのエンコードとデコードを担当するいくつかのコンポーネントを作成しています。標準の解凍/圧縮プロセス (オーディオとビデオの両方) に加えて、カスタムの解凍/暗号化を実装します。このためのコーデックとソフトウェア ライブラリの両方を作成します。わからないことを列挙します。

  • WMP の場合、コーデックの検索ポリシーは何ですか。
  • たとえば、カスタム ファイル形式を mpeg-3 形式と区別するにはどうすればよいですか。このための標準とプログラミング構造は何ですか。(私がめちゃくちゃになっている本当の部分は、コンテナ形式、ビデオ形式、fourccコードなどで、私を死に至らしめます)
  • Windows でのこの作業のために、コーデック (DMO またはフィルター) を作成するためにどのような方法をお勧めしますか?

私はあなたの助けによってリストされた問題に対処したいと思っています。情報といくつかの有用なリンクをいただければ幸いです。MSDNを除いて:)私が探しているものが見つからなかったからです。

4

2 に答える 2

2

WMP の場合、コーデックの検索ポリシーは何ですか。

Windows Media Player 7.0 までは、純粋な DirectShow プレーヤーでした。7.0 以降、Microsoft はさまざまなファイル タイプを異なる方法で処理し始めました。これは主に WMV ファイルに当てはまります。WMP は現在、Vista および 7 で一部のファイル タイプに対して MediaFoundation メディア パイプラインを使用します。

たとえば、カスタム ファイル形式を mpeg-3 形式と区別するにはどうすればよいですか。このための標準とプログラミング構造は何ですか。(私がめちゃくちゃになっている本当の部分はこれです。コンテナ形式、ビデオ形式、fourccコード...などは私を死に至らしめます)

独自のカスタム コンテナー形式を作成している場合は、これを行うことができます(笑、MSDN のリンクで申し訳ありません)。ただし、自分の作業を楽にしたい場合は、既存のコンテナーやオープンソースのコンテナーを選択します。 AVIまたはMKVとして。これらの形式のいずれかでストリームを作成する場合は、ビデオの fourcc やオーディオの形式タグなどのコーデック コードを指定します。独自のカスタム フォーマットを実行しているので、独自の fourcc またはフォーマット タグの値を作成する必要がありますが、既に使用されているものを選択しないように注意してください。

AVI を使用していたとしましょう。組み込みの avi demux は、AVI ヘッダーを読み取り、ファイル内の各ストリームのメタ データを調べます。fourcc DX50 を含むビデオ ストリームと、WAVE_FORMAT_PCM のフォーマット タグを含むオーディオ ストリームが見つかる場合があります。DirectShow は、登録されたフィルターを列挙し、それらのピンをクエリして、DX50 ビデオまたは WAVE_FORMAT_PCM オーディオの取得をサポートしているかどうかを確認します。したがって、AVI に XXXX の fourcc がある場合、DirectShow は、XXXX を受け取る型を探してフィルターを列挙します。次に、fourcc XXXX を受け入れる変換フィルターを作成します。変換フィルターはビデオをデコードし、非圧縮形式で出力します。たぶんRGB24。DirectShow は、出力ピンがそのメディア タイプを出力することを検出し、おそらくレンダラーに直接接続します。プロセスはオーディオと同じです。

For this work on Windows what method do you suggest to write codec(DMO or Filter)

個人的に DMO を書いたことはありませんが、検討することを強くお勧めします。ボイラー プレート COM と IIRC が少ないと聞いたことがあります。MediaFoundation には DMO ラッパーがあるため、MediaFoundation の自動サポートが得られる可能性があります。

DShow SDK サンプルの他に、この をチェックしてみてください。始めるのに役立つかもしれません。また、このウェブサイトには素晴らしいサンプルもありますが、あなたが望むものではないかもしれません.

于 2009-10-21T04:11:24.297 に答える
0

私が思うにコメントのための十分なスペースがありません:)

最後に、あなたの回答とgrapheditプログラムによって、フィルターとdirectshowについてある程度理解しました。オーディオとビデオの両方に AVI コンテナを使用します。内部的には、アルゴリズムによって暗号化される mpeg 形式を使用します。変換フィルターまたは DMO を実装します。(DMOの可能性あり)

AVI スプリッターがデータを登録済みのコーデックにどのように配信するのか知りたいです。私は、データがどの形式になるかを意味します。何らかの基準があるはずだと思います。私は調査に沿って MSDN と和解しましたが、個々の形式のデータ フローで実際のバッファ形式に関する情報を見つけることができませんでした。(私の場合はAVI)

于 2009-10-24T23:42:16.287 に答える