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 では、機能セット、拡張性、オーバーヘッドなど、ほんの数例を挙げるだけです。