Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
        }