次の方法で共有


ASF ファイル シンクの作成

ASF ファイル シンクは、アプリケーションが ASF メディア データをファイルにアーカイブするために使用できる Media Foundation によって提供される IMFMediaSink の実装です。 ASF メディア シンクのオブジェクト モデルと一般的な使用方法については、「 ASF メディア シンク」を参照してください。

ASF ファイル シンクのインスタンスを作成するには、2 つの方法があります。 MFCreateASFMediaSink または MFCreateASFMediaSinkActivate を呼び出すことができます。

MFCreateASFMediaSink を呼び出す場合は、出力ファイルのバイト ストリームを指定する必要があります。出力ファイルに対して、シンクがエンコード セッション中に ASF コンテンツを書き込みます。 指定されたバイト ストリームにはシーク可能な機能と書き込み可能な機能が必要です。それ以外の場合、 MFCreateASFMediaSink 呼び出しはE_FAILエラー コードで失敗します。 この呼び出しは、インプロセス ファイル シンク オブジェクトを作成し、ファイル シンクの IMFMediaSink インターフェイスへのポインターを返します。

MFCreateASFMediaSinkActivate を呼び出す場合は、ファイル シンクがメディア データを書き込む出力ファイルの URL を指定する必要があります。 この場合、ファイル シンクはバイト ストリームを内部的に作成します。 関数は、ファイル シンクの IMFActivate インターフェイスへのポインターを返します。 終了

エンコード トポロジが次のように設計されている場合は、MFCreateASFMediaSink ではなく MFCreateASFMediaSinkActivate を検討してください。

  • エンコード トポロジは保護されたメディア パス (PMP) 用であり、ファイル シンクはアウトプロセスで使用されます。

  • トポロジの出力ノードは、ファイル シンクの activate オブジェクトへの返されたポインターを使用して作成され、アプリケーションはストリーム番号によってファイル シンク内のストリームを追跡しています。

    Note

    ファイル シンクをアクティブ化するには、 IMFActivate::ActivateObject を呼び出します。 ただし、オブジェクトを明示的にアクティブにする必要はありません。 メディア セッションは、アクティブ化オブジェクトを追跡し、エンコード セッション中にファイル シンクを自動的にアクティブ化します。

     

  • ストリーム情報は ContentInfo オブジェクトで構成されます。 次のサブセクションで説明します。

ASF ファイル シンクを作成した後、トポロジを構築する前に構成する必要があります。 出力ファイルを生成するには、ファイル シンクに次の情報が必要です。

  • 基本的なストリーム情報
  • エンコード モードの情報
  • Metadata

ファイル シンクは ASF ContentInfo オブジェクト を実装し、 IMFASFContentInfo インターフェイスを公開して、アプリケーションがそれを使用してストリームとエンコードに関連する情報を設定できるようにします。 ファイル シンクを作成するために呼び出した関数に応じて、 IMFASFContentInfo インターフェイスへの参照を取得する方法は 2 つあります。

  • MFCreateASFMediaSink 関数を呼び出す場合、アプリケーションは、返されたファイル シンクで IMFMediaSink::QueryInterface を呼び出して、IMFASFContentInfo インターフェイスに対してクエリを実行する必要があります。
  • MFCreateASFMediaSinkActivate を呼び出す場合、この関数は、呼び出しの前に完全に構成された ContentInfo オブジェクトがあることを想定しています。 そのためには、 MFCreateASFContentInfo を呼び出して空の ContentInfo オブジェクトを作成し、必要なすべての情報で構成する必要があります。 構成された ContentInfo オブジェクトを MFCreateASFMediaSinkActivate に渡して、シンクアクティブ化オブジェクトへのポインターを受け取ります。 返されたアクティブ化オブジェクトを使用してファイル シンクをアクティブ化し、ストリームまたはエンコード情報を変更することはできません。

シンク ストリームと特定のプロパティの構成の詳細については、次のトピックを参照してください。

ASF メディア シンク

パイプライン レイヤーの ASF コンポーネント

Media Foundation での ASF サポート