Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A classe CodecQuery permite-lhe consultar codecs instalados no dispositivo atual. A lista de codecs incluídos com Windows para diferentes famílias de dispositivos está listada no artigo Supported codecs, mas como utilizadores e aplicações podem instalar codecs adicionais num dispositivo, pode querer consultar o suporte de codecs em tempo de execução para determinar que codecs estão disponíveis no dispositivo atual.
Inicialize uma nova instância da classe CodecQuery chamando o construtor.
var codecQuery = new CodecQuery();
O método FindAllAsync devolve todos os codecs instalados que correspondam aos parâmetros fornecidos. Estes parâmetros incluem um valor CodecKind que especifica se está a consultar codecs de áudio ou vídeo ou ambos, um valor CodecCategory que especifica se está a consultar codificadores ou descodificadores, e uma cadeia que representa o subtipo de codificação de media para o qual está a consultar, como vídeo H.264 ou áudio MP3.
Especifique uma string vazia para o valor do subtipo para devolver codecs para todos os subtipos. O exemplo seguinte lista todos os codificadores de vídeo instalados no dispositivo.
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);
}
}
A cadeia de subtipos que passa para o FindAllAsync pode ser uma representação de cadeia do subtipo GUID definido pelo sistema ou um código FOURCC para o subtipo. O conjunto de GUIDs de subtipos de media suportados está listado nos artigos GUIDs de Subtipos de Áudio e GUIDs de Subtipos de Vídeo, mas a classe CodecSubtypes fornece propriedades que devolvem os valores de GUID para cada subtipo suportado. Para mais informações sobre os códigos FOURCC, consulte Códigos FOURCC.
O exemplo seguinte especifica o código FOURCC "H264" para determinar se existe um descodificador de vídeo H.264 instalado no dispositivo. Pode fazer esta consulta antes de tentar reproduzir conteúdo de vídeo H.264. Também pode lidar com codecs não suportados durante a reprodução. Para mais informações, consulte Processar codecs não suportados e erros desconhecidos ao abrir itens multimédia.
IReadOnlyList<CodecInfo> h264Result =
await codecQuery.FindAllAsync(CodecKind.Video, CodecCategory.Decoder, "H264");
if (h264Result.Count > 0)
{
codecResultsTextBox.Text = "H264 decoder is present.";
}
As consultas de exemplo seguintes determinam se um codificador de áudio FLAC está instalado no dispositivo atual e, em caso afirmativo, cria-se um MediaEncodingProfile para o subtipo, que pode ser utilizado para capturar áudio para um ficheiro ou transcodificar áudio de outro formato para um ficheiro de áudio 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;
}
Tópicos relacionados
Windows developer