private void QueryMediaFile(string path) { MediaInfoLib.MediaInfo MI = new MediaInfoLib.MediaInfo(); MI.Open(path); int i; DIFeature difeature = new DIFeature(); difeature.Filesize = (int)(ToInt64(MI.Get(0, 0, "FileSize")) / 1024 / 1024); // MB try { difeature.Duration = TimeSpan.FromMilliseconds(Convert.ToDouble(MI.Get(0, 0, "Duration"))); // Minutes } catch { } difeature.OverallBitRate = ToInt32(MI.Get(0, 0, "OverallBitRate")) / 1000; // kbps difeature.Format = MI.Get(0, 0, "Format"); difeature.Name = path; int videostreamscount = ToInt32(MI.Get(MediaInfoLib.StreamKind.Video, 0, "StreamCount")); Console.WriteLine("\nVideo Stream Count : " + videostreamscount.ToString()); try { for (i = 0; i < videostreamscount; i++) { DIVideoStream divideostream = new DIVideoStream(); divideostream.FrameRate = (float)Convert.ToDouble(MI.Get(MediaInfoLib.StreamKind.Video, i, "FrameRate")); divideostream.Bitrate = ToInt32(MI.Get(MediaInfoLib.StreamKind.Video, i, "BitRate")) / 1000; divideostream.Resolution = new Size( ToInt32(MI.Get(MediaInfoLib.StreamKind.Video, i, "Width")), ToInt32(MI.Get(MediaInfoLib.StreamKind.Video, i, "Height"))); divideostream.Format = MI.Get(MediaInfoLib.StreamKind.Video, i, "Format"); divideostream.AspectRatio = MI.Get(MediaInfoLib.StreamKind.Video, i, "DisplayAspectRatio/String"); divideostream.ScanType = MI.Get(MediaInfoLib.StreamKind.Video, i, "ScanType"); divideostream.TitleID = ToInt32(MI.Get(MediaInfoLib.StreamKind.Video, i, "ID")); divideostream.Name = MI.Get(MediaInfoLib.StreamKind.Video, i, "Title"); difeature.VideoStreams.Add(divideostream); } } catch (Exception ex) { Utilities.DebugLine("[DiskInfo:QueryMediaFile] An error occured during file scan: {0}", ex.Message); } try { int audiostreamscount = ToInt32(MI.Get(MediaInfoLib.StreamKind.Audio, 0, "StreamCount")); Console.WriteLine("\nAudio Stream Count : " + audiostreamscount.ToString()); for (i = 0; i < audiostreamscount; i++) { DIAudioStream diaudiostream = new DIAudioStream(); diaudiostream.LanguageID = MI.Get(MediaInfoLib.StreamKind.Audio, i, "Language"); diaudiostream.BitrateMode = MI.Get(MediaInfoLib.StreamKind.Audio, i, "BitRate_Mode"); diaudiostream.Bitrate = ToInt32(MI.Get(MediaInfoLib.StreamKind.Audio, i, "BitRate")) / 1000; diaudiostream.Channels = ToInt32(MI.Get(MediaInfoLib.StreamKind.Audio, i, "Channels")); diaudiostream.AudioID = ToInt32(MI.Get(MediaInfoLib.StreamKind.Audio, i, "ID")); diaudiostream.Name = diaudiostream.Language; if (diaudiostream.Channels > 0) { diaudiostream.Name = diaudiostream.Name + " " + diaudiostream.Channels.ToString() + "ch"; } // Initialise fields diaudiostream.EncodingProfile = DIAudioEncodingProfile.Undefined; diaudiostream.SubFormat = ""; switch (MI.Get(MediaInfoLib.StreamKind.Audio, i, "Format")) { case "AC-3": diaudiostream.Encoding = DIAudioEncoding.AC3; diaudiostream.EncodingProfile = DIAudioEncodingProfile.Undefined; break; case "DTS": diaudiostream.Encoding = DIAudioEncoding.DTS; diaudiostream.EncodingProfile = DIAudioEncodingProfile.Undefined; break; case "AAC": diaudiostream.Encoding = DIAudioEncoding.AAC; diaudiostream.EncodingProfile = DIAudioEncodingProfile.Undefined; break; case "Vorbis": diaudiostream.Encoding = DIAudioEncoding.VORBIS; diaudiostream.EncodingProfile = DIAudioEncodingProfile.Undefined; break; case "MPEG Audio": switch (MI.Get(MediaInfoLib.StreamKind.Audio, i, "Format_Version")) { case "Version 1": diaudiostream.Encoding = DIAudioEncoding.MPEG1; break; case "Version 2": diaudiostream.Encoding = DIAudioEncoding.MPEG2; break; default: diaudiostream.Encoding = DIAudioEncoding.Undefined; break; } switch (MI.Get(MediaInfoLib.StreamKind.Audio, i, "Format_Profile")) { case "Layer 2": diaudiostream.EncodingProfile = DIAudioEncodingProfile.Layer2; break; case "Layer 3": diaudiostream.EncodingProfile = DIAudioEncodingProfile.Layer3; break; default: diaudiostream.EncodingProfile = DIAudioEncodingProfile.Undefined; break; } break; case "WMA2": diaudiostream.Encoding = DIAudioEncoding.WMA2; switch (MI.Get(MediaInfoLib.StreamKind.Audio, i, "Format_Profile")) { case "L1": diaudiostream.EncodingProfile = DIAudioEncodingProfile.L1; break; case "L2": diaudiostream.EncodingProfile = DIAudioEncodingProfile.L2; break; default: diaudiostream.EncodingProfile = DIAudioEncodingProfile.Undefined; break; } break; default: diaudiostream.Encoding = DIAudioEncoding.Undefined; diaudiostream.EncodingProfile = DIAudioEncodingProfile.Undefined; break; } difeature.AudioStreams.Add(diaudiostream); } } catch (Exception ex) { Utilities.DebugLine("[DiskInfo:QueryMediaFile] An error occured during file scan: {0}", ex.Message); } Console.WriteLine(MI.Count_Get(MediaInfoLib.StreamKind.Audio)); Console.WriteLine(MI.Get(MediaInfoLib.StreamKind.General, 0, "AudioCount")); Console.WriteLine(MI.Get(MediaInfoLib.StreamKind.Audio, 0, "StreamCount")); DiskFeatures.Add(difeature); MI.Close(); }
private static void DisplayMediaInfo() { String ToDisplay; MediaInfoLib.MediaInfo MI = new MediaInfoLib.MediaInfo(); ToDisplay = MI.Option("Info_Version", "0.7.0.0;MediaInfoDLL_Example_CS;0.7.0.0"); if (ToDisplay.Length == 0) { Console.Write("MediaInfo.Dll: this version of the DLL is not compatible"); return; } //Information about MediaInfo ToDisplay += "\r\n\r\nInfo_Parameters\r\n"; ToDisplay += MI.Option("Info_Parameters"); ToDisplay += "\r\n\r\nInfo_Capacities\r\n"; ToDisplay += MI.Option("Info_Capacities"); ToDisplay += "\r\n\r\nInfo_Codecs\r\n"; ToDisplay += MI.Option("Info_Codecs"); //An example of how to use the library ToDisplay += "\r\n\r\nOpen\r\n"; ToDisplay += "\r\n\r\nClose\r\n=========================="; ToDisplay += "\r\n\r\nClose\r\n=========================="; MI.Open("d:\temp\test.mp4"); ToDisplay += "\r\n\r\nInform with Complete=false\r\n"; MI.Option("Complete"); ToDisplay += MI.Inform(); ToDisplay += "\r\n\r\nInform with Complete=true\r\n"; MI.Option("Complete", "1"); ToDisplay += MI.Inform(); ToDisplay += "\r\n\r\nCustom Inform\r\n"; MI.Option("Inform", "General;File size is %FileSize% bytes"); ToDisplay += MI.Inform(); ToDisplay += "\r\n\r\nGet with Stream=General and Parameter='FileSize'\r\n"; ToDisplay += MI.Get(0, 0, "FileSize"); ToDisplay += "\r\n\r\nGet with Stream=General and Parameter=46\r\n"; ToDisplay += MI.Get(0, 0, 46); ToDisplay += "\r\n\r\nCount_Get with StreamKind=Stream_Audio\r\n"; ToDisplay += MI.Count_Get(MediaInfoLib.StreamKind.Audio); ToDisplay += "\r\n\r\nGet with Stream=General and Parameter='AudioCount'\r\n"; ToDisplay += MI.Get(MediaInfoLib.StreamKind.General, 0, "AudioCount"); ToDisplay += "\r\n\r\nGet with Stream=Audio and Parameter='StreamCount'\r\n"; ToDisplay += MI.Get(MediaInfoLib.StreamKind.Audio, 0, "StreamCount"); ToDisplay += "\r\n\r\nClose\r\n"; MI.Close(); ToDisplay += "\r\n\r\nClose\r\n=========================="; //Example with a stream ToDisplay += "\r\n" + ReadMediaInfo() + "\r\n"; //Displaying the text Console.Write(ToDisplay); }