1

h264 ロスレス形式のビデオを YUV/RGB 生データにデコードするために、MS Media Foundation SDK を使用して libavcodec (http://en.wikipedia.org/wiki/Libavcodec) を統合する方法をテストしています。

2 つの質問があります。

  1. h264/AVC (ロスレス形式ではなく通常の形式) でエンコードされた mp4 ビデオを MFPlayer (MF SDK の例から VS2010 でコンパイル) にロードする際に問題が発生しました。エラー コードは次のとおりでした: 不良バイト ストリーム。同じビデオをストリームとして読み込もうとしたときに同じエラーが発生しました ( http://msdn.microsoft.com/en-us/library/dd389281%28v=VS.85%29.aspxから取得したソース リーダー コード) またはトランスコーディングの例を使用したセッションとして。Media Foundation を使用して mp4-h264 ビデオをロードする方法について、誰でも経験を共有できるかもしれません。

  2. サードパーティのコーデックを Media Foundation ベースのデコードに統合する必要があります。MSDN によると、Media Foundation はサードパーティのコーデックをある程度サポートしていますが、サードパーティのコーデックを使用してデコードを行う例は見つかりませんでした。誰かがそれをしたのでしょうか?または、それを行う方法の使用可能な例を参照する場合があります。

前もって感謝します、Ze'ev

4

1 に答える 1

0

(2) サードパーティのコーデックを Media Foundation ベースのデコードに統合する必要があります。MSDN によると、Media Foundation はサードパーティのコーデックをある程度サポートしていますが、サードパーティのコーデックを使用してデコードを行う例は見つかりませんでした。誰かがそれをしたのでしょうか?または、それを行う方法の使用可能な例を参照する場合があります。

これは可能です。基本的には、サード パーティのデコーダ用にMedia Foundation Transformを作成する必要があります。SDK インストール ディレクトリを調べます。に進みMicrosoft SDKs -> v7.0 -> Samples -> Multimedia -> Mediafoundation -> Decoderます。サンプルの MPEG1 デコーダー MFT が含まれています。あなたがする必要があるのはIMFTransform、インターフェースを適切に継承し、そのメソッドを実装することです。たとえば、メディア クライアントはProcessInput()メソッドを呼び出して、デコーダー MFT にメディア サンプルを提供します。同様にProcessOutput()、デコードされた出力を取得するために呼び出します。つまり、MFT はサードパーティのデコーダのラッパーとして機能します。

于 2011-12-28T15:55:55.720 に答える