CodecQuery クラスを使用すると、現在のデバイスにインストールされているコーデックを照会できます。 さまざまなデバイス ファミリのWindowsに含まれるコーデックの一覧は、サポートされているコーデックに関する記事に記載されていますが、ユーザーとアプリはデバイスに追加のコーデックをインストールできるため、実行時にコーデックのサポートを照会して、現在のデバイスで使用できるコーデックを特定できます。
コンストラクターを呼び出して 、CodecQuery クラスの新しいインスタンスを初期化します。
var codecQuery = new CodecQuery();
FindAllAsync メソッドは、指定されたパラメーターに一致するすべてのインストール済みコーデックを返します。 これらのパラメーターには、オーディオまたはビデオ コーデックのクエリを実行するかどうかを指定する CodecKind 値、エンコーダーまたはデコーダーのクエリを実行するかどうかを指定する CodecCategory 値、および H.264 ビデオや MP3 オーディオなど、クエリ対象のメディア エンコード サブタイプを表す文字列が含まれます。
サブタイプ値に空の文字列を指定して、すべてのサブタイプのコーデックを返します。 次の例では、デバイスにインストールされているすべてのビデオ エンコーダーを一覧表示します。
IReadOnlyList<CodecInfo> result =
await codecQuery.FindAllAsync(CodecKind.Video, CodecCategory.Encoder, "");
foreach (var codecInfo in result)
{
codecResultsTextBox.Text += "============================================================\n";
codecResultsTextBox.Text += string.Format("Codec: {0}\n", codecInfo.DisplayName);
codecResultsTextBox.Text += string.Format("Kind: {0}\n", codecInfo.Kind.ToString());
codecResultsTextBox.Text += string.Format("Category: {0}\n", codecInfo.Category.ToString());
codecResultsTextBox.Text += string.Format("Trusted: {0}\n", codecInfo.IsTrusted.ToString());
foreach (string subType in codecInfo.Subtypes)
{
codecResultsTextBox.Text += string.Format(" Subtype: {0}\n", subType);
}
}
FindAllAsync に渡すサブタイプ文字列には、システムによって定義されているサブタイプ GUID の文字列表現またはサブタイプの FOURCC コードを指定できます。 サポートされているメディア サブタイプ GUID のセットは 、オーディオ サブタイプ GUID と ビデオ サブタイプ GUID の記事に記載されていますが、 CodecSubtypes クラスは、サポートされている各サブタイプの GUID 値を返すプロパティを提供します。 FOURCC コードの詳細については、「 FOURCC コード」を参照してください。
次の例では、FOURCC コード "H264" を指定して、デバイスに H.264 ビデオ デコーダーがインストールされているかどうかを判断します。 H.264 ビデオ コンテンツの再生を試みる前に、このクエリを実行できます。 また、再生時にサポートされていないコーデックを処理することもできます。 詳細については、「 メディア項目を開くときにサポートされていないコーデックと不明なエラーを処理する」を参照してください。
IReadOnlyList<CodecInfo> h264Result =
await codecQuery.FindAllAsync(CodecKind.Video, CodecCategory.Decoder, "H264");
if (h264Result.Count > 0)
{
codecResultsTextBox.Text = "H264 decoder is present.";
}
次の例では、現在のデバイスにFLAC オーディオ エンコーダーがインストールされているかどうかを確認し、インストールされている場合は、ファイルへのオーディオのキャプチャや別の形式からFLAC オーディオ ファイルへのオーディオのトランスコードに使用できるサブタイプに対して、
IReadOnlyList<CodecInfo> flacResult =
await codecQuery.FindAllAsync(CodecKind.Audio, CodecCategory.Encoder, CodecSubtypes.AudioFormatFlac);
if (flacResult.Count > 0)
{
AudioEncodingProperties audioProps = new AudioEncodingProperties();
audioProps.Subtype = CodecSubtypes.AudioFormatFlac;
audioProps.SampleRate = 44100;
audioProps.ChannelCount = 2;
audioProps.Bitrate = 128000;
audioProps.BitsPerSample = 32;
MediaEncodingProfile encodingProfile = new MediaEncodingProfile();
encodingProfile.Audio = audioProps;
encodingProfile.Video = null;
}
関連トピック
Windows developer