1

Windows 7 で、固定サイズの生ピクセル フレームを MPEG にエンコードしたいと考えています。これを行うためにメディア ファンデーション変換を使用しようとしています。しかし、Media Fondation は生のフレームを MPEG に直接変換することをサポートしていません。代わりに、メディア シンクを使用して生のピクセル バッファーを WMV3 形式に変換し、トランスコード トポロジを使用して WMV を MPEG に変換する必要があります。

メディア ファンデーションがフレーム バッファを MEPG に直接変換する方法はありますか?

また、これを行っているときに、トランスコード フレームワークが単一フレームの WMV ビデオを MEPG に変換できないという問題が発生しています。理由はわかりませんが、単一フレームの WMV がフィードされると、空の MPEG ファイルが作成されます。メディア基盤の既知の制限ですか?

よろしくお願いします

GT

PSこれを行うために直接表示するためのフィルターグラフを実装するつもりはありません。メディア財団のドキュメントによると、ダイレクト ショーが提供するすべての機能を提供する必要があります。

4

1 に答える 1

2

Media Foundation は、圧縮を処理するH.264 ビデオ エンコーダーMFT/DMO を提供します。

DirectShow (使用したくないが、サード パーティのエンコーダを使用して MPEG-4 と MPEG-4 AVC の両方に圧縮する同等のオプションを提供します) とは異なり、Media Foundation を使用すると、変換なしで単独で変換を使用できます。完全機能のグラフ (トポロジ) に挿入します。Microsoft は H.264 エンコーダーのみを提供しており、Windows 7 からのみ提供されています (あなたにとっては良いことです)。

MFT の使用については MSDN の記事で説明されており、それを順を追って実行すると、圧縮された H.264 (MPEG-4 AVC) NAL ユニットが得られますが、厳密には「ファイル」ではありません。MPEG-4 ファイルは、MPEG-4 Part 14 仕様に従ってフォーマットされたデータであり、Microsoft はMPEG-4 File Sinkを提供しています。後者は基本的に、個々のコンポーネントではなくトポロジを使用していることを前提としています。

したがって、(a) トポロジに挿入するカスタム ビデオ ソース ノードを実装し、H.264 エンコーダを介してデータを MPEG-4 ファイル シンクにルーティングするエンコーディング トポロジを構築するか、(b) スタンドアロン ビデオ エンコーダをインスタンス化するかのいずれかを選択します。およびファイル シンクを個別に設定し、トポロジーの外部でそれらを使用して、自分でそれらを設定し、それらの間でデータを渡します。または、別のオプション (c) は、Media Foundation Sink Writer APIを使用することです。後者とほぼ同じで、柔軟性と詳細の制御よりも使いやすさに重点を置いています。

メディア財団のドキュメントによると、ダイレクト ショーが提供するすべての機能を提供する必要があります。

いいえ、そうすべきではありません。Microsoft は、Windows 7+ の Media Foundation を通じてのみ MPEG-4 ビデオ エンコーダーとマルチプレクサーを提供しており、DirectShow でそれらを利用できるようにはしていません (MF コンポーネントのラッパーを使用しない限り)。しかし、MF は多くの面で DS よりも劣っています: サポート古い OS では、機能セット、拡張性、オーバーヘッドなど、ほんの数例を挙げるだけです。

于 2013-04-08T21:12:45.240 に答える