好的,我找到了答案。我使用: http: //www.codeproject.com/Articles/36338/Export-Windows-Media-Player-Music-Metadata-to-XML作为指南。我添加了 WMP.dll 作为获取此信息的参考。一旦我添加了 WMP.dll,我所做的就是找到编解码器的十六进制并进行比较。仅当您每次都使用相同的特定编解码器时,这才有效。至少它会帮助您为编解码器提取十六进制值,并且您可以将十六进制值与 WMP 中文件属性中的视频编解码器相关联。
我希望这有助于下一个试图在他们的 WMV 中找到特定编解码器的人。
private bool WMPCodecCheck(string fileName)
{
try
{
WindowsMediaPlayer wmp = new WindowsMediaPlayer();
wmp.mediaCollection.add(fileName);
IWMPMedia currentWMV = wmp.newMedia(fileName);
media = wmp.mediaCollection;
this.codecType = media.getMediaAtom("FourCC");
IWMPPlaylist mediaList = null;
IWMPMedia mediaItem;
mediaList = media.getByAttribute("MediaType", "Video");
for (int i = 0; i < mediaList.count; i++)
{
mediaItem = mediaList.get_Item(i);
if (mediaItem.sourceURL.Equals(fileName))
{
if (_hasCodec.Equals(GetCodec(mediaItem)))
{
//MessageBox.Show("Codec Exists!");
wmp.mediaCollection.remove(mediaItem, true);
return true;
}
}
}
wmp.mediaCollection.remove(currentWMV, true);
return false;
}
catch (Exception e)
{
Log.LogToFile("Codec Read Error." + e, LogType.Exception);
}
return false;
}
private string GetCodec(IWMPMedia mediaItem)
{
// Has Codec = 877474375
// No Codec = 861293911
string codec = mediaItem.getItemInfoByAtom(codecType);
if (string.IsNullOrEmpty(codec))
{
codec = mediaItem.getItemInfoByAtom(codecType);
}
//MessageBox.Show("Codec Hex Value: " + codec);
return codec;
}