Windows Media Format SDK の概要
[このページに関連付けられている機能である Windows Media Format 11 SDK は、レガシ機能です。 これは、ソース リーダーとシンク ライターによって置き換えられます。 ソース リーダーとシンク ライターは、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、Windows Media Format 11 SDK ではなくソース リーダーとシンク ライターを使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
Windows Media Format SDK には、ASF ファイルの有効期間の 3 つのポイント (作成、編集、再生) でタスクを実行するオブジェクトが含まれています。 一部のアプリケーション (特にビデオ編集用) では、Windows Media Format SDK の広範な機能を使用して ASF ファイルの内容を読み取り、そのコンテンツを変更し、結果を新しいファイルに書き込みます。 ただし、この SDK は、ファイルの作成、編集、再生の 3 つの段階で考えるのが最も簡単です。
Windows Media Format SDK を使用した ASF ファイルの作成
Windows Media Format SDK を使用して ASF ファイルを書き込むプロセスは、大まかに言うと非常に簡単です。 ファイルの作成はライター オブジェクトによって管理されます。 作成するファイルの種類をライター オブジェクトに指示するには、使用するプロファイル オブジェクトを指定します。 各プロファイル オブジェクトには、ASF ファイルの設定が含まれています。 この SDK には一部のプロファイルが含まれており、プロファイル編集のサポートは多数のオブジェクトによって提供されます。 使用するライター オブジェクトのプロファイルを設定したら、処理のためにライターにサンプルを渡し始めることができます。 ほとんどの場合、サンプルは圧縮されていないオーディオまたはビデオの一部ですが、サンプルには任意の種類のデータを使用できます。
内部的には、ライターは 3 つの主要なタスクを実行します。 まず、サンプルが属するストリームを圧縮する場合、ライターはコーデックのエンコード部分 (コンプレッサー/解凍器) と通信してサンプルを圧縮します。 サンプルがプロファイルで指定された形式になると、ライターはサンプルを適切なサイズのパケットに分割して、ネットワーク経由でストリーミングします。 最後に、さまざまなストリームのデータが多重化またはインターリーブされるため、すべてのストリームで同じようなプレゼンテーション時間を持つサンプルが、ASF ファイルのデータ セクション内で互いに近くなります。
ライター オブジェクトは、実際にはファイル自体を書き込むものではありません。 シンクと呼ばれる 1 つ以上のオブジェクトと通信し、ライターからコピー先にデータを配信します。 ローカル ファイルの場合、ファイル シンクはファイルへのデータの書き込みを管理します。 ASF データをネットワーク経由で配信するようにネットワーク シンクを構成することもできます。 一般的に、複数のシンクが使用されます。 たとえば、アプリケーションはネットワーク経由でファイルをストリーミングし、コピーをローカル ディスク上のファイルとして同時に保存できます。 プッシュ シンクを使用すると、書き込みアプリケーションから、Windows Media サービスを実行している 1 つ以上のサーバーにコンテンツをブロードキャストし、そのコンテンツをユーザーに配布できます。
Windows Media Format SDK を使用した ASF ファイルの編集 (メタデータ編集)
ASF ファイルのデータ セクションの内容を編集するには、ファイルの書き換えが必要です。 Windows Media Format SDK では、データ セクションを操作するオブジェクトは提供されません。 2 つのファイルの連結やファイルからのコンテンツの切り取りなどの簡単な編集の場合は、解凍せずにサンプルを読み取り、同じヘッダー情報を使用して新しいファイルに書き込むことができます。 より複雑な編集では、新しいファイルに使用されるプロファイルを変更する必要があります。
Windows Media Format SDK では、ファイルを書き直すことなくヘッダー セクションの一部を編集できます。 ASF ファイルのヘッダーには、さまざまな種類のデータが含まれています。 最も一般的に編集されるメタデータ属性は、コンテンツの側面とコンテンツの作成に関与するユーザーを記述する名前と値のペアです。 メタデータは、Windows Media Format SDK のメタデータ エディター オブジェクトを使用して編集できます。 このオブジェクトは ASF ファイルを開き、ヘッダーの内容の一部を変更し、ファイルに変更を書き込み、ファイルを閉じます。 メタデータの編集は非常に簡単で、値を取得して設定するための簡単なメソッド呼び出しがあります。
Windows Media Format SDK を使用した ASF ファイルの読み取り
Windows Media Format SDK には、ASF ファイルを読み取るための 2 つの異なるオブジェクト (リーダー オブジェクトと同期リーダー オブジェクト) が用意されています。 リーダー オブジェクトは SDK のすべてのバージョンで使用できます。同期リーダー オブジェクトには Windows Media Format 9 Series SDK 以降のバージョンが必要です。 2 つの主な違いは、リーダー オブジェクトがコールバック メソッドにイベントを発生させてサンプルをアプリケーションに配信し、同期リーダーはメソッド呼び出しに応答して個々のサンプルを提供することです。
リーダー オブジェクトを使用するには、リーダー オブジェクトからの状態とサンプル メッセージに対応するために、いくつかのコールバック メソッドを実装する必要があります。 好きなようにコンテンツを配信し、リーダーを起動し、サンプル メッセージを待つようリーダーを構成します。 ASF ファイルからサンプルを取得するプロセスは、基本的に書き込みプロセスの逆です。 リーダー オブジェクトは、圧縮されたストリームをデコードするために必要なコーデックと通信し、圧縮されていないデータをアプリケーションに配信します。 また、以前にエンコードされたストリームを新しいファイルに含めることができるように、圧縮状態のサンプルを配信するようにリーダー オブジェクトを構成することもできます。
同期リーダー オブジェクトは、リーダー オブジェクトとほぼ同じように動作します。 ただし、コールバックを構成する代わりに、同期リーダーに各サンプルを個別に要求する必要があります。 同期リーダーを使用するには 1 つのスレッドのみが必要ですが、リーダーを使用するには複数のスレッドが必要です。 同期リーダー オブジェクトには、特定の状況でリーダー オブジェクトよりもいくつかの利点があります。主に、ファイルのさまざまな部分にすばやくアクセスしてファイル間でデータをコピーする必要があるコンテンツ編集アプリケーションの場合です。 同期リーダー オブジェクトは、はるかに簡単に使用でき、データ セクション内の特定の場所へのシークが簡単になります。 ただし、同期リーダーはネットワーク経由でのファイルの読み取りをサポートしていないため、デジタル著作権管理をサポートしていません。
Windows Media Format SDK を使用したその他の操作
前述した 3 つのメイン機能領域に加えて、Windows Media Format SDK には、ASF ファイルに関連する他の操作を実行するオブジェクトがあります。 プロファイル マネージャー オブジェクトは、プロファイルの作成とアクセス、および保存に使用されます。 インデクサー オブジェクトは、ビデオ ファイル内のシークを可能にする ASF ファイルにインデックス オブジェクトを作成します。 最後に、リーダー オブジェクトとライター オブジェクトは、コンテンツ作成者の知的財産権を保護するためのデジタル著作権管理をサポートします。
メモ ASF ファイル構造とこの SDK の一般的な目的は、オーディオとビデオを含むデジタル メディア ファイルを生成することです。このドキュメントは、その目的を念頭に置いて記述されています。 ただし、ASF ファイル構造は他の種類のコンテンツでも機能します。 オーディオやビデオに関連しない ASF ファイル用の多くのアプリケーションが見つかる場合があります。
関連トピック