Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med klassen CodecQuery kan du fråga efter codecs som är installerade på den aktuella enheten. Listan över codecs som ingår i Windows för olika enhetsfamiljer visas i artikeln Supported codecs, men eftersom användare och appar kan installera ytterligare codecs på en enhet kanske du vill fråga efter codec-stöd vid körning för att avgöra vilka codecs som är tillgängliga på den aktuella enheten.
Initiera en ny instans av klassen CodecQuery genom att anropa konstruktorn.
var codecQuery = new CodecQuery();
Metoden FindAllAsync returnerar alla installerade codecs som matchar de angivna parametrarna. De här parametrarna innehåller ett CodecKind-värde som anger om du frågar efter ljud- eller video codecs eller båda, ett CodecCategory-värde som anger om du frågar efter kodare eller avkodare och en sträng som representerar mediekodningsundertypen som du frågar efter, till exempel H.264-video eller MP3-ljud.
Ange en tom sträng för undertypsvärdet för att returnera codecs för alla undertyper. I följande exempel visas alla videokodare som är installerade på enheten.
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);
}
}
Den undertypssträng som du skickar till FindAllAsync kan antingen vara en strängrepresentation av undertypens GUID som definieras av systemet eller en FOURCC-kod för undertypen. Uppsättningen mediaundertyps-GUID:er som stöds visas i artiklarna GUID för ljudundertyper och GUID för videoundertyper, men klassen CodecSubtypes innehåller egenskaper som returnerar GUID-värdena för varje undertyp som stöds. Mer information om FOURCC-koder finns i FOURCC-koder.
I följande exempel anges FOURCC-koden "H264" för att avgöra om det finns en H.264-videodekodare installerad på enheten. Du kan utföra den här frågan innan du försöker spela upp H.264-videoinnehåll. Du kan också hantera codecs som inte stöds vid uppspelning. Mer information finns i Hantera kodningsfel som inte stöds och okända fel när du öppnar medieobjekt.
IReadOnlyList<CodecInfo> h264Result =
await codecQuery.FindAllAsync(CodecKind.Video, CodecCategory.Decoder, "H264");
if (h264Result.Count > 0)
{
codecResultsTextBox.Text = "H264 decoder is present.";
}
Följande exempel frågar om en FLAC-ljudkodare är installerad på den aktuella enheten och i så fall skapas en MediaEncodingProfile för undertypen som kan användas för att samla in ljud till en fil eller omkoda ljud från ett annat format till en FLAC-ljudfil.
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;
}
Relaterade ämnen
Windows developer