/// <summary>
        /// Read MediaInfo properties from given file
        /// </summary>
        /// <param name="fileName">File to check</param>
        /// <returns>File Properties</returns>
        public static MediaInfoContainer GetMediaInfo(string fileName)
        {
            var result = new MediaInfoContainer();
            const NumberStyles numStyle = NumberStyles.Number;

            var resultInfo = new MediaInfo();

            resultInfo.Option("Internet", "No");

            resultInfo.Open(fileName);

            _videoStreams = resultInfo.Count_Get(StreamKind.Video);
            _audioStreams = resultInfo.Count_Get(StreamKind.Audio);
            _imageStreams = resultInfo.Count_Get(StreamKind.Image);
            _textStreams  = resultInfo.Count_Get(StreamKind.Text);
            _menuCount    = resultInfo.Count_Get(StreamKind.Menu);

            #region Get General Info
            result.General.CompleteName      = resultInfo.Get(StreamKind.General, 0, "CompleteName");
            result.General.FileName          = resultInfo.Get(StreamKind.General, 0, "FileName");
            result.General.FileExtension     = resultInfo.Get(StreamKind.General, 0, "FileExtension");
            result.General.Format            = resultInfo.Get(StreamKind.General, 0, "Format");
            result.General.FormatExtensions  = resultInfo.Get(StreamKind.General, 0, "Format/Extensions");
            result.General.InternetMediaType = resultInfo.Get(StreamKind.General, 0, "InternetMediaType");
            DateTime.TryParse(resultInfo.Get(StreamKind.General, 0, "Duration/String3"), CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out result.General.DurationTime);
            result.General.Title = resultInfo.Get(StreamKind.General, 0, "Title");
            result.General.EncodedApplication     = resultInfo.Get(StreamKind.General, 0, "Encoded_Application");
            result.General.EncodedApplicationUrl  = resultInfo.Get(StreamKind.General, 0, "Encoded_Application/Url");
            result.General.EncodedLibrary         = resultInfo.Get(StreamKind.General, 0, "Encoded_Library");
            result.General.EncodedLibraryName     = resultInfo.Get(StreamKind.General, 0, "Encoded_Library/Name");
            result.General.EncodedLibraryVersion  = resultInfo.Get(StreamKind.General, 0, "Encoded_Library/Version");
            result.General.EncodedLibraryDate     = resultInfo.Get(StreamKind.General, 0, "Encoded_Library/Date");
            result.General.EncodedLibrarySettings = resultInfo.Get(StreamKind.General, 0, "Encoded_Library_Settings");
            #endregion

            #region Get Video Info

            for (var i = 0; i < _videoStreams; i++)
            {
                var videoStream = new VideoStreamInfo();

                int.TryParse(resultInfo.Get(StreamKind.Video, i, "StreamKindID"), numStyle, CultureInfo.InvariantCulture, out videoStream.StreamKindID);
                int.TryParse(resultInfo.Get(StreamKind.Video, i, "StreamKindPos"), numStyle, CultureInfo.InvariantCulture, out videoStream.StreamKindPos);
                int.TryParse(resultInfo.Get(StreamKind.Video, i, "ID"), numStyle, CultureInfo.InvariantCulture, out videoStream.ID);
                videoStream.Format               = resultInfo.Get(StreamKind.Video, i, "Format");
                videoStream.FormatInfo           = resultInfo.Get(StreamKind.Video, i, "Format/Info");
                videoStream.FormatVersion        = resultInfo.Get(StreamKind.Video, i, "Format_Version");
                videoStream.FormatProfile        = resultInfo.Get(StreamKind.Video, i, "Format_Profile");
                videoStream.FormatFrameMode      = resultInfo.Get(StreamKind.Video, i, "Format_Settings_FrameMode");
                videoStream.MultiViewBaseProfile = resultInfo.Get(StreamKind.Video, i, "MultiView_BaseProfile");
                videoStream.MultiViewCount       = resultInfo.Get(StreamKind.Video, i, "MultiView_Count");
                videoStream.InternetMediaType    = resultInfo.Get(StreamKind.Video, i, "InternetMediaType");
                videoStream.CodecID              = resultInfo.Get(StreamKind.Video, i, "CodecID");
                videoStream.CodecIDInfo          = resultInfo.Get(StreamKind.Video, i, "CodecID/Info");
                videoStream.CodecIDUrl           = resultInfo.Get(StreamKind.Video, i, "CodecID/Url");
                videoStream.CodecIDDescription   = resultInfo.Get(StreamKind.Video, i, "CodecID_Description");
                DateTime.TryParse(resultInfo.Get(StreamKind.Video, i, "Duration/String3"), CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out videoStream.DurationTime);
                videoStream.BitRateMode = resultInfo.Get(StreamKind.Video, i, "BitRate_Mode");
                int.TryParse(resultInfo.Get(StreamKind.Video, i, "BitRate"), numStyle, CultureInfo.InvariantCulture, out videoStream.BitRate);
                int.TryParse(resultInfo.Get(StreamKind.Video, i, "BitRate_Minimum"), numStyle, CultureInfo.InvariantCulture, out videoStream.BitRateMin);
                int.TryParse(resultInfo.Get(StreamKind.Video, i, "BitRate_Nominal"), numStyle, CultureInfo.InvariantCulture, out videoStream.BitRateNom);
                int.TryParse(resultInfo.Get(StreamKind.Video, i, "BitRate_Maximum"), numStyle, CultureInfo.InvariantCulture, out videoStream.BitRateMax);
                int.TryParse(resultInfo.Get(StreamKind.Video, i, "Width"), numStyle, CultureInfo.InvariantCulture, out videoStream.Width);
                int.TryParse(resultInfo.Get(StreamKind.Video, i, "Height"), numStyle, CultureInfo.InvariantCulture, out videoStream.Height);
                videoStream.PixelAspectRatio   = resultInfo.Get(StreamKind.Video, i, "PixelAspectRatio");
                videoStream.DisplayAspectRatio = resultInfo.Get(StreamKind.Video, i, "DisplayAspectRatio");
                videoStream.FrameRateMode      = resultInfo.Get(StreamKind.Video, i, "FrameRate_Mode");

                float.TryParse(resultInfo.Get(StreamKind.Video, i, "FrameRate"), numStyle, CultureInfo.InvariantCulture, out videoStream.FrameRate);
                VideoHelper.GetFpsNumDenom(videoStream.FrameRate, out videoStream.FrameRateEnumerator, out videoStream.FrameRateDenominator);

                float.TryParse(resultInfo.Get(StreamKind.Video, i, "FrameRate_Minimum"), numStyle, CultureInfo.InvariantCulture, out videoStream.FrameRateMin);
                float.TryParse(resultInfo.Get(StreamKind.Video, i, "FrameRate_Nominal"), numStyle, CultureInfo.InvariantCulture, out videoStream.FrameRateNom);
                float.TryParse(resultInfo.Get(StreamKind.Video, i, "FrameRate_Maximum"), numStyle, CultureInfo.InvariantCulture, out videoStream.FrameRateMax);
                long.TryParse(resultInfo.Get(StreamKind.Video, i, "FrameCount"), numStyle, CultureInfo.InvariantCulture, out videoStream.FrameCount);
                int.TryParse(resultInfo.Get(StreamKind.Video, i, "BitDepth"), numStyle, CultureInfo.InvariantCulture, out videoStream.BitDepth);
                videoStream.ScanType  = resultInfo.Get(StreamKind.Video, i, "ScanType");
                videoStream.ScanOrder = resultInfo.Get(StreamKind.Video, i, "ScanOrder");
                ulong.TryParse(resultInfo.Get(StreamKind.Video, i, "StreamSize"), numStyle, CultureInfo.InvariantCulture, out videoStream.StreamSize);
                videoStream.EncodedApplication     = resultInfo.Get(StreamKind.Video, i, "Encoded_Application");
                videoStream.EncodedApplicationUrl  = resultInfo.Get(StreamKind.Video, i, "Encoded_Application/Url");
                videoStream.EncodedLibrary         = resultInfo.Get(StreamKind.Video, i, "Encoded_Library");
                videoStream.EncodedLibraryName     = resultInfo.Get(StreamKind.Video, i, "Encoded_Library/Name");
                videoStream.EncodedLibraryVersion  = resultInfo.Get(StreamKind.Video, i, "Encoded_Library/Version");
                videoStream.EncodedLibraryDate     = resultInfo.Get(StreamKind.Video, i, "Encoded_Library/Date");
                videoStream.EncodedLibrarySettings = resultInfo.Get(StreamKind.Video, i, "Encoded_Library_Settings");

                if (videoStream.Width > 1280)
                {
                    if ((videoStream.ScanType == "Progressive") || (videoStream.ScanType == ""))
                    {
                        videoStream.VideoSize = VideoFormat.Videoformat1080P;
                    }
                    else
                    {
                        videoStream.VideoSize = VideoFormat.Videoformat1080I;
                    }
                }
                else if (videoStream.Width > 720)
                {
                    videoStream.VideoSize = VideoFormat.Videoformat720P;
                }
                else if ((videoStream.Height > 480) && (videoStream.Height <= 576) && (videoStream.Width <= 720))
                {
                    if ((videoStream.ScanType == "Progressive") || (videoStream.ScanType == ""))
                    {
                        videoStream.VideoSize = VideoFormat.Videoformat576P;
                    }
                    else
                    {
                        videoStream.VideoSize = VideoFormat.Videoformat576I;
                    }
                }
                else
                {
                    if ((videoStream.ScanType == "Progressive") || (videoStream.ScanType == ""))
                    {
                        videoStream.VideoSize = VideoFormat.Videoformat480P;
                    }
                    else
                    {
                        videoStream.VideoSize = VideoFormat.Videoformat480I;
                    }
                }

                result.Video.Add(videoStream);
            }
            #endregion

            #region Get Audio Info
            for (var i = 0; i < _audioStreams; i++)
            {
                var audioStream = new AudioStreamInfo();

                int.TryParse(resultInfo.Get(StreamKind.Audio, i, "StreamKindID"), numStyle, CultureInfo.InvariantCulture, out audioStream.StreamKindID);
                int.TryParse(resultInfo.Get(StreamKind.Audio, i, "StreamKindPos"), numStyle, CultureInfo.InvariantCulture, out audioStream.StreamKindPos);
                int.TryParse(resultInfo.Get(StreamKind.Audio, i, "ID"), numStyle, CultureInfo.InvariantCulture, out audioStream.ID);
                audioStream.Format             = resultInfo.Get(StreamKind.Audio, i, "Format");
                audioStream.FormatInfo         = resultInfo.Get(StreamKind.Audio, i, "Format/Info");
                audioStream.FormatVersion      = resultInfo.Get(StreamKind.Audio, i, "Format_Version");
                audioStream.FormatProfile      = resultInfo.Get(StreamKind.Audio, i, "Format_Profile");
                audioStream.CodecID            = resultInfo.Get(StreamKind.Audio, i, "CodecID");
                audioStream.CodecIDInfo        = resultInfo.Get(StreamKind.Audio, i, "CodecID/Info");
                audioStream.CodecIDUrl         = resultInfo.Get(StreamKind.Audio, i, "CodecID/Url");
                audioStream.CodecIDDescription = resultInfo.Get(StreamKind.Audio, i, "CodecID_Description");
                long.TryParse(resultInfo.Get(StreamKind.Audio, i, "Duration"), numStyle, CultureInfo.InvariantCulture, out audioStream.Duration);
                audioStream.BitRateMode = resultInfo.Get(StreamKind.Audio, i, "BitRate_Mode");
                int.TryParse(resultInfo.Get(StreamKind.Audio, i, "BitRate"), numStyle, CultureInfo.InvariantCulture, out audioStream.BitRate);
                int.TryParse(resultInfo.Get(StreamKind.Audio, i, "BitRate_Minimum"), numStyle, CultureInfo.InvariantCulture, out audioStream.BitRateMin);
                int.TryParse(resultInfo.Get(StreamKind.Audio, i, "BitRate_Nominal"), numStyle, CultureInfo.InvariantCulture, out audioStream.BitRateNom);
                int.TryParse(resultInfo.Get(StreamKind.Audio, i, "BitRate_Maximum"), numStyle, CultureInfo.InvariantCulture, out audioStream.BitRateMax);
                int.TryParse(resultInfo.Get(StreamKind.Audio, i, "Channel(s)"), numStyle, CultureInfo.InvariantCulture, out audioStream.Channels);
                audioStream.ChannelsString   = resultInfo.Get(StreamKind.Audio, i, "Channel(s)/String");
                audioStream.ChannelPositions = resultInfo.Get(StreamKind.Audio, i, "ChannelPositions");
                int.TryParse(resultInfo.Get(StreamKind.Audio, i, "SamplingRate"), numStyle, CultureInfo.InvariantCulture, out audioStream.SamplingRate);
                int.TryParse(resultInfo.Get(StreamKind.Audio, i, "BitDepth"), numStyle, CultureInfo.InvariantCulture, out audioStream.BitDepth);
                audioStream.CompressionMode = resultInfo.Get(StreamKind.Audio, i, "Compression_Mode");
                int.TryParse(resultInfo.Get(StreamKind.Audio, i, "Delay"), numStyle, CultureInfo.InvariantCulture, out audioStream.Delay);
                ulong.TryParse(resultInfo.Get(StreamKind.Audio, i, "StreamSize"), numStyle, CultureInfo.InvariantCulture, out audioStream.StreamSize);
                audioStream.EncodedLibrary         = resultInfo.Get(StreamKind.Audio, i, "Encoded_Library");
                audioStream.EncodedLibraryName     = resultInfo.Get(StreamKind.Audio, i, "Encoded_Library/Name");
                audioStream.EncodedLibraryVersion  = resultInfo.Get(StreamKind.Audio, i, "Encoded_Library/Version");
                audioStream.EncodedLibraryDate     = resultInfo.Get(StreamKind.Audio, i, "Encoded_Library/Date");
                audioStream.EncodedLibrarySettings = resultInfo.Get(StreamKind.Audio, i, "Encoded_Library_Settings");
                audioStream.LanguageFull           = resultInfo.Get(StreamKind.Audio, i, "Language/String1");
                audioStream.LanguageIso6391        = resultInfo.Get(StreamKind.Audio, i, "Language/String2");
                audioStream.LanguageIso6392        = resultInfo.Get(StreamKind.Audio, i, "Language/String3");

                result.Audio.Add(audioStream);
            }
            #endregion

            #region Get Image Info
            for (var i = 0; i < _imageStreams; i++)
            {
                var imageStream = new ImageStreamInfo();

                int.TryParse(resultInfo.Get(StreamKind.Image, i, "StreamKindID"), numStyle, CultureInfo.InvariantCulture, out imageStream.StreamKindID);
                int.TryParse(resultInfo.Get(StreamKind.Image, i, "ID"), numStyle, CultureInfo.InvariantCulture, out imageStream.ID);
                imageStream.Format      = resultInfo.Get(StreamKind.Image, i, "Format");
                imageStream.CodecIDInfo = resultInfo.Get(StreamKind.Image, i, "CodecID/Info");
                ulong.TryParse(resultInfo.Get(StreamKind.Image, i, "StreamSize"), numStyle, CultureInfo.InvariantCulture, out imageStream.StreamSize);
                imageStream.LanguageFull    = resultInfo.Get(StreamKind.Image, i, "Language/String1");
                imageStream.LanguageIso6392 = resultInfo.Get(StreamKind.Image, i, "Language/String3");

                result.Image.Add(imageStream);
            }
            #endregion

            #region Get Text Info
            for (var i = 0; i < _textStreams; i++)
            {
                var textStream = new TextStreamInfo();

                int.TryParse(resultInfo.Get(StreamKind.Text, i, "StreamKindID"), numStyle, CultureInfo.InvariantCulture, out textStream.StreamKindID);
                int.TryParse(resultInfo.Get(StreamKind.Text, i, "ID"), numStyle, CultureInfo.InvariantCulture, out textStream.ID);
                textStream.Format      = resultInfo.Get(StreamKind.Text, i, "Format");
                textStream.CodecIDInfo = resultInfo.Get(StreamKind.Text, i, "CodecID/Info");
                int.TryParse(resultInfo.Get(StreamKind.Text, i, "Delay"), numStyle, CultureInfo.InvariantCulture, out textStream.Delay);
                ulong.TryParse(resultInfo.Get(StreamKind.Text, i, "StreamSize"), numStyle, CultureInfo.InvariantCulture, out textStream.StreamSize);
                textStream.LanguageFull    = resultInfo.Get(StreamKind.Text, i, "Language/String1");
                textStream.LanguageIso6392 = resultInfo.Get(StreamKind.Text, i, "Language/String3");

                result.Text.Add(textStream);
            }
            #endregion

            #region Get Menu Info
            for (var i = 0; i < _menuCount; i++)
            {
                var menuStream = new MenuStreamInfo();

                int.TryParse(resultInfo.Get(StreamKind.Menu, i, "Chapters_Pos_Begin"), numStyle, CultureInfo.InvariantCulture, out menuStream.ChaptersPosBegin);
                int.TryParse(resultInfo.Get(StreamKind.Menu, i, "Chapters_Pos_End"), numStyle, CultureInfo.InvariantCulture, out menuStream.ChaptersPosEnd);

                for (var j = menuStream.ChaptersPosBegin; j < menuStream.ChaptersPosEnd; j++)
                {
                    DateTime tempTime;
                    DateTime.TryParse(resultInfo.Get(StreamKind.Menu, i, j, InfoKind.Name), CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out tempTime);
                    result.Chapters.Add(tempTime.TimeOfDay);
                }
            }
            #endregion

            resultInfo.Option("Complete");
            resultInfo.Close();

            return(result);
        }
Beispiel #2
0
        public void GetMediaInfo(string fileName)
        {
            const NumberStyles numStyle = NumberStyles.Number;

            if (Processing.MyMediaInfo == null)
            {
                Processing.MyMediaInfo = new MediaInfo();
                Processing.MyMediaInfo.Option("Internet", "No");
            }

            Processing.MyMediaInfo.Open(fileName);

            _videoStreams = Processing.MyMediaInfo.Count_Get(StreamKind.Video);
            _audioStreams = Processing.MyMediaInfo.Count_Get(StreamKind.Audio);
            _imageStreams = Processing.MyMediaInfo.Count_Get(StreamKind.Image);
            _textStreams  = Processing.MyMediaInfo.Count_Get(StreamKind.Text);
            _menuCount    = Processing.MyMediaInfo.Count_Get(StreamKind.Menu);

            #region Get General Info
            General.CompleteName      = Processing.MyMediaInfo.Get(StreamKind.General, 0, "CompleteName");
            General.FileName          = Processing.MyMediaInfo.Get(StreamKind.General, 0, "FileName");
            General.FileExtension     = Processing.MyMediaInfo.Get(StreamKind.General, 0, "FileExtension");
            General.Format            = Processing.MyMediaInfo.Get(StreamKind.General, 0, "Format");
            General.FormatExtensions  = Processing.MyMediaInfo.Get(StreamKind.General, 0, "Format/Extensions");
            General.InternetMediaType = Processing.MyMediaInfo.Get(StreamKind.General, 0, "InternetMediaType");
            DateTime.TryParse(Processing.MyMediaInfo.Get(StreamKind.General, 0, "Duration/String3"), AppSettings.CInfo, DateTimeStyles.AssumeLocal, out General.DurationTime);
            General.Title = Processing.MyMediaInfo.Get(StreamKind.General, 0, "Title");
            General.EncodedApplication     = Processing.MyMediaInfo.Get(StreamKind.General, 0, "Encoded_Application");
            General.EncodedApplicationUrl  = Processing.MyMediaInfo.Get(StreamKind.General, 0, "Encoded_Application/Url");
            General.EncodedLibrary         = Processing.MyMediaInfo.Get(StreamKind.General, 0, "Encoded_Library");
            General.EncodedLibraryName     = Processing.MyMediaInfo.Get(StreamKind.General, 0, "Encoded_Library/Name");
            General.EncodedLibraryVersion  = Processing.MyMediaInfo.Get(StreamKind.General, 0, "Encoded_Library/Version");
            General.EncodedLibraryDate     = Processing.MyMediaInfo.Get(StreamKind.General, 0, "Encoded_Library/Date");
            General.EncodedLibrarySettings = Processing.MyMediaInfo.Get(StreamKind.General, 0, "Encoded_Library_Settings");
            #endregion

            #region Get Video Info

            for (int i = 0; i < _videoStreams; i++)
            {
                VideoStreamInfo videoStream = new VideoStreamInfo();

                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "StreamKindID"), numStyle, AppSettings.CInfo, out videoStream.StreamKindID);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "StreamKindPos"), numStyle, AppSettings.CInfo, out videoStream.StreamKindPos);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "ID"), numStyle, AppSettings.CInfo, out videoStream.ID);
                videoStream.Format               = Processing.MyMediaInfo.Get(StreamKind.Video, i, "Format");
                videoStream.FormatInfo           = Processing.MyMediaInfo.Get(StreamKind.Video, i, "Format/Info");
                videoStream.FormatVersion        = Processing.MyMediaInfo.Get(StreamKind.Video, i, "Format_Version");
                videoStream.FormatProfile        = Processing.MyMediaInfo.Get(StreamKind.Video, i, "Format_Profile");
                videoStream.FormatFrameMode      = Processing.MyMediaInfo.Get(StreamKind.Video, i, "Format_Settings_FrameMode");
                videoStream.MultiViewBaseProfile = Processing.MyMediaInfo.Get(StreamKind.Video, i, "MultiView_BaseProfile");
                videoStream.MultiViewCount       = Processing.MyMediaInfo.Get(StreamKind.Video, i, "MultiView_Count");
                videoStream.InternetMediaType    = Processing.MyMediaInfo.Get(StreamKind.Video, i, "InternetMediaType");
                videoStream.CodecID              = Processing.MyMediaInfo.Get(StreamKind.Video, i, "CodecID");
                videoStream.CodecIDInfo          = Processing.MyMediaInfo.Get(StreamKind.Video, i, "CodecID/Info");
                videoStream.CodecIDUrl           = Processing.MyMediaInfo.Get(StreamKind.Video, i, "CodecID/Url");
                videoStream.CodecIDDescription   = Processing.MyMediaInfo.Get(StreamKind.Video, i, "CodecID_Description");
                DateTime.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "Duration/String3"), AppSettings.CInfo, DateTimeStyles.AssumeLocal, out videoStream.DurationTime);
                videoStream.BitRateMode = Processing.MyMediaInfo.Get(StreamKind.Video, i, "BitRate_Mode");
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "BitRate"), numStyle, AppSettings.CInfo, out videoStream.BitRate);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "BitRate_Minimum"), numStyle, AppSettings.CInfo, out videoStream.BitRateMin);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "BitRate_Nominal"), numStyle, AppSettings.CInfo, out videoStream.BitRateNom);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "BitRate_Maximum"), numStyle, AppSettings.CInfo, out videoStream.BitRateMax);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "Width"), numStyle, AppSettings.CInfo, out videoStream.Width);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "Height"), numStyle, AppSettings.CInfo, out videoStream.Height);
                videoStream.PixelAspectRatio   = Processing.MyMediaInfo.Get(StreamKind.Video, i, "PixelAspectRatio");
                videoStream.DisplayAspectRatio = Processing.MyMediaInfo.Get(StreamKind.Video, i, "DisplayAspectRatio");
                videoStream.FrameRateMode      = Processing.MyMediaInfo.Get(StreamKind.Video, i, "FrameRate_Mode");

                Single.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "FrameRate"), numStyle, AppSettings.CInfo, out videoStream.FrameRate);
                Processing.GetFPSNumDenom(videoStream.FrameRate, out videoStream.FrameRateEnumerator, out videoStream.FrameRateDenominator);

                Single.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "FrameRate_Minimum"), numStyle, AppSettings.CInfo, out videoStream.FrameRateMin);
                Single.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "FrameRate_Nominal"), numStyle, AppSettings.CInfo, out videoStream.FrameRateNom);
                Single.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "FrameRate_Maximum"), numStyle, AppSettings.CInfo, out videoStream.FrameRateMax);
                Int64.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "FrameCount"), numStyle, AppSettings.CInfo, out videoStream.FrameCount);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "BitDepth"), numStyle, AppSettings.CInfo, out videoStream.BitDepth);
                videoStream.ScanType  = Processing.MyMediaInfo.Get(StreamKind.Video, i, "ScanType");
                videoStream.ScanOrder = Processing.MyMediaInfo.Get(StreamKind.Video, i, "ScanOrder");
                UInt64.TryParse(Processing.MyMediaInfo.Get(StreamKind.Video, i, "StreamSize"), numStyle, AppSettings.CInfo, out videoStream.StreamSize);
                videoStream.EncodedApplication     = Processing.MyMediaInfo.Get(StreamKind.Video, i, "Encoded_Application");
                videoStream.EncodedApplicationUrl  = Processing.MyMediaInfo.Get(StreamKind.Video, i, "Encoded_Application/Url");
                videoStream.EncodedLibrary         = Processing.MyMediaInfo.Get(StreamKind.Video, i, "Encoded_Library");
                videoStream.EncodedLibraryName     = Processing.MyMediaInfo.Get(StreamKind.Video, i, "Encoded_Library/Name");
                videoStream.EncodedLibraryVersion  = Processing.MyMediaInfo.Get(StreamKind.Video, i, "Encoded_Library/Version");
                videoStream.EncodedLibraryDate     = Processing.MyMediaInfo.Get(StreamKind.Video, i, "Encoded_Library/Date");
                videoStream.EncodedLibrarySettings = Processing.MyMediaInfo.Get(StreamKind.Video, i, "Encoded_Library_Settings");

                if (videoStream.Width > 1280)
                {
                    if ((videoStream.ScanType == "Progressive") || (videoStream.ScanType == ""))
                    {
                        videoStream.VideoSize = VideoFormat.Videoformat1080P;
                    }
                    else
                    {
                        videoStream.VideoSize = VideoFormat.Videoformat1080I;
                    }
                }
                else if (videoStream.Width > 720)
                {
                    videoStream.VideoSize = VideoFormat.Videoformat720P;
                }
                else if ((videoStream.Height > 480) && (videoStream.Height <= 576) && (videoStream.Width <= 720))
                {
                    if ((videoStream.ScanType == "Progressive") || (videoStream.ScanType == ""))
                    {
                        videoStream.VideoSize = VideoFormat.Videoformat576P;
                    }
                    else
                    {
                        videoStream.VideoSize = VideoFormat.Videoformat576I;
                    }
                }
                else
                {
                    if ((videoStream.ScanType == "Progressive") || (videoStream.ScanType == ""))
                    {
                        videoStream.VideoSize = VideoFormat.Videoformat480P;
                    }
                    else
                    {
                        videoStream.VideoSize = VideoFormat.Videoformat480I;
                    }
                }

                Video.Add(videoStream);
            }
            #endregion

            #region Get Audio Info
            for (int i = 0; i < _audioStreams; i++)
            {
                AudioStreamInfo audioStream = new AudioStreamInfo();

                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "StreamKindID"), numStyle, AppSettings.CInfo, out audioStream.StreamKindID);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "StreamKindPos"), numStyle, AppSettings.CInfo, out audioStream.StreamKindPos);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "ID"), numStyle, AppSettings.CInfo, out audioStream.ID);
                audioStream.Format             = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Format");
                audioStream.FormatInfo         = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Format/Info");
                audioStream.FormatVersion      = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Format_Version");
                audioStream.FormatProfile      = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Format_Profile");
                audioStream.CodecID            = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "CodecID");
                audioStream.CodecIDInfo        = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "CodecID/Info");
                audioStream.CodecIDUrl         = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "CodecID/Url");
                audioStream.CodecIDDescription = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "CodecID_Description");
                Int64.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Duration"), numStyle, AppSettings.CInfo, out audioStream.Duration);
                audioStream.BitRateMode = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "BitRate_Mode");
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "BitRate"), numStyle, AppSettings.CInfo, out audioStream.BitRate);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "BitRate_Minimum"), numStyle, AppSettings.CInfo, out audioStream.BitRateMin);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "BitRate_Nominal"), numStyle, AppSettings.CInfo, out audioStream.BitRateNom);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "BitRate_Maximum"), numStyle, AppSettings.CInfo, out audioStream.BitRateMax);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Channel(s)"), numStyle, AppSettings.CInfo, out audioStream.Channels);
                audioStream.ChannelsString   = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Channel(s)/String");
                audioStream.ChannelPositions = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "ChannelPositions");
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "SamplingRate"), numStyle, AppSettings.CInfo, out audioStream.SamplingRate);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "BitDepth"), numStyle, AppSettings.CInfo, out audioStream.BitDepth);
                audioStream.CompressionMode = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Compression_Mode");
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Delay"), numStyle, AppSettings.CInfo, out audioStream.Delay);
                UInt64.TryParse(Processing.MyMediaInfo.Get(StreamKind.Audio, i, "StreamSize"), numStyle, AppSettings.CInfo, out audioStream.StreamSize);
                audioStream.EncodedLibrary         = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Encoded_Library");
                audioStream.EncodedLibraryName     = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Encoded_Library/Name");
                audioStream.EncodedLibraryVersion  = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Encoded_Library/Version");
                audioStream.EncodedLibraryDate     = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Encoded_Library/Date");
                audioStream.EncodedLibrarySettings = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Encoded_Library_Settings");
                audioStream.LanguageFull           = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Language/String1");
                audioStream.LanguageIso6391        = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Language/String2");
                audioStream.LanguageIso6392        = Processing.MyMediaInfo.Get(StreamKind.Audio, i, "Language/String3");

                Audio.Add(audioStream);
            }
            #endregion

            #region Get Image Info
            for (int i = 0; i < _imageStreams; i++)
            {
                ImageStreamInfo imageStream = new ImageStreamInfo();

                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Image, i, "StreamKindID"), numStyle, AppSettings.CInfo, out imageStream.StreamKindID);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Image, i, "ID"), numStyle, AppSettings.CInfo, out imageStream.ID);
                imageStream.Format      = Processing.MyMediaInfo.Get(StreamKind.Image, i, "Format");
                imageStream.CodecIDInfo = Processing.MyMediaInfo.Get(StreamKind.Image, i, "CodecID/Info");
                UInt64.TryParse(Processing.MyMediaInfo.Get(StreamKind.Image, i, "StreamSize"), numStyle, AppSettings.CInfo, out imageStream.StreamSize);
                imageStream.LanguageFull    = Processing.MyMediaInfo.Get(StreamKind.Image, i, "Language/String1");
                imageStream.LanguageIso6392 = Processing.MyMediaInfo.Get(StreamKind.Image, i, "Language/String3");

                Image.Add(imageStream);
            }
            #endregion

            #region Get Text Info
            for (int i = 0; i < _textStreams; i++)
            {
                TextStreamInfo textStream = new TextStreamInfo();

                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Text, i, "StreamKindID"), numStyle, AppSettings.CInfo, out textStream.StreamKindID);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Text, i, "ID"), numStyle, AppSettings.CInfo, out textStream.ID);
                textStream.Format      = Processing.MyMediaInfo.Get(StreamKind.Text, i, "Format");
                textStream.CodecIDInfo = Processing.MyMediaInfo.Get(StreamKind.Text, i, "CodecID/Info");
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Text, i, "Delay"), numStyle, AppSettings.CInfo, out textStream.Delay);
                UInt64.TryParse(Processing.MyMediaInfo.Get(StreamKind.Text, i, "StreamSize"), numStyle, AppSettings.CInfo, out textStream.StreamSize);
                textStream.LanguageFull    = Processing.MyMediaInfo.Get(StreamKind.Text, i, "Language/String1");
                textStream.LanguageIso6392 = Processing.MyMediaInfo.Get(StreamKind.Text, i, "Language/String3");

                Text.Add(textStream);
            }
            #endregion

            #region Get Menu Info
            for (int i = 0; i < _menuCount; i++)
            {
                MenuStreamInfo menuStream = new MenuStreamInfo();

                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Menu, i, "Chapters_Pos_Begin"), numStyle, AppSettings.CInfo, out menuStream.ChaptersPosBegin);
                Int32.TryParse(Processing.MyMediaInfo.Get(StreamKind.Menu, i, "Chapters_Pos_End"), numStyle, AppSettings.CInfo, out menuStream.ChaptersPosEnd);

                for (int j = menuStream.ChaptersPosBegin; j < menuStream.ChaptersPosEnd; j++)
                {
                    DateTime tempTime;
                    DateTime.TryParse(Processing.MyMediaInfo.Get(StreamKind.Menu, i, j, InfoKind.Name), AppSettings.CInfo, DateTimeStyles.AssumeLocal, out tempTime);
                    Chapters.Add(tempTime.TimeOfDay);
                }
            }
            #endregion
            Processing.MyMediaInfo.Option("Complete");
            Processing.MyMediaInfo.Close();
        }
        public void GetMediaInfo(string fileName)
        {
            const NumberStyles numStyle = NumberStyles.Number;

            if (Processing.mediaInfo == null)
            {
                Processing.mediaInfo = new MediaInfo();
                Processing.mediaInfo.Option("Internet", "No");
            }

            Processing.mediaInfo.Open(fileName);

            _videoStreams = Processing.mediaInfo.Count_Get(StreamKind.Video);
            _audioStreams = Processing.mediaInfo.Count_Get(StreamKind.Audio);
            _imageStreams = Processing.mediaInfo.Count_Get(StreamKind.Image);
            _textStreams = Processing.mediaInfo.Count_Get(StreamKind.Text);
            _menuCount = Processing.mediaInfo.Count_Get(StreamKind.Menu);

            #region Get General Info
            General.CompleteName        = Processing.mediaInfo.Get(StreamKind.General, 0, "CompleteName");
            General.FileName            = Processing.mediaInfo.Get(StreamKind.General, 0, "FileName");
            General.FileExtension       = Processing.mediaInfo.Get(StreamKind.General, 0, "FileExtension");
            General.Format              = Processing.mediaInfo.Get(StreamKind.General, 0, "Format");
            General.FormatExtensions    = Processing.mediaInfo.Get(StreamKind.General, 0, "Format/Extensions");
            General.InternetMediaType   = Processing.mediaInfo.Get(StreamKind.General, 0, "InternetMediaType");
            DateTime.TryParse(Processing.mediaInfo.Get(StreamKind.General, 0, "Duration/String3"), AppSettings.CInfo, DateTimeStyles.AssumeLocal, out General.DurationTime);
            General.Title               = Processing.mediaInfo.Get(StreamKind.General, 0, "Title");
            General.EncodedApplication  = Processing.mediaInfo.Get(StreamKind.General, 0, "Encoded_Application");
            General.EncodedApplicationUrl = Processing.mediaInfo.Get(StreamKind.General, 0, "Encoded_Application/Url");
            General.EncodedLibrary      = Processing.mediaInfo.Get(StreamKind.General, 0, "Encoded_Library");
            General.EncodedLibraryName  = Processing.mediaInfo.Get(StreamKind.General, 0, "Encoded_Library/Name");
            General.EncodedLibraryVersion = Processing.mediaInfo.Get(StreamKind.General, 0, "Encoded_Library/Version");
            General.EncodedLibraryDate  = Processing.mediaInfo.Get(StreamKind.General, 0, "Encoded_Library/Date");
            General.EncodedLibrarySettings = Processing.mediaInfo.Get(StreamKind.General, 0, "Encoded_Library_Settings");
            #endregion

            #region Get Video Info

            for (int i = 0; i < _videoStreams; i++)
            {
                VideoStreamInfo videoStream = new VideoStreamInfo();

                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "StreamKindID"), numStyle, AppSettings.CInfo, out videoStream.StreamKindID);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "StreamKindPos"), numStyle, AppSettings.CInfo, out videoStream.StreamKindPos);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "ID"), numStyle, AppSettings.CInfo, out videoStream.ID);
                videoStream.Format              = Processing.mediaInfo.Get(StreamKind.Video, i, "Format");
                videoStream.FormatInfo          = Processing.mediaInfo.Get(StreamKind.Video, i, "Format/Info");
                videoStream.FormatVersion       = Processing.mediaInfo.Get(StreamKind.Video, i, "Format_Version");
                videoStream.FormatProfile       = Processing.mediaInfo.Get(StreamKind.Video, i, "Format_Profile");
                videoStream.MultiViewBaseProfile = Processing.mediaInfo.Get(StreamKind.Video, i, "MultiView_BaseProfile");
                videoStream.MultiViewCount      = Processing.mediaInfo.Get(StreamKind.Video, i, "MultiView_Count");
                videoStream.InternetMediaType   = Processing.mediaInfo.Get(StreamKind.Video, i, "InternetMediaType");
                videoStream.CodecID             = Processing.mediaInfo.Get(StreamKind.Video, i, "CodecID");
                videoStream.CodecIDInfo         = Processing.mediaInfo.Get(StreamKind.Video, i, "CodecID/Info");
                videoStream.CodecIDUrl          = Processing.mediaInfo.Get(StreamKind.Video, i, "CodecID/Url");
                videoStream.CodecIDDescription  = Processing.mediaInfo.Get(StreamKind.Video, i, "CodecID_Description");
                DateTime.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "Duration/String3"), AppSettings.CInfo, DateTimeStyles.AssumeLocal, out videoStream.DurationTime);
                videoStream.BitRateMode         = Processing.mediaInfo.Get(StreamKind.Video, i, "BitRate_Mode");
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "BitRate"), numStyle, AppSettings.CInfo, out videoStream.BitRate);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "BitRate_Minimum"), numStyle, AppSettings.CInfo, out videoStream.BitRateMin);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "BitRate_Nominal"), numStyle, AppSettings.CInfo, out videoStream.BitRateNom);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "BitRate_Maximum"), numStyle, AppSettings.CInfo, out videoStream.BitRateMax);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "Width"), numStyle, AppSettings.CInfo, out videoStream.Width);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "Height"), numStyle, AppSettings.CInfo, out videoStream.Height);
                videoStream.PixelAspectRatio    = Processing.mediaInfo.Get(StreamKind.Video, i, "PixelAspectRatio");
                videoStream.DisplayAspectRatio  = Processing.mediaInfo.Get(StreamKind.Video, i, "DisplayAspectRatio");
                videoStream.FrameRateMode       = Processing.mediaInfo.Get(StreamKind.Video, i, "FrameRate_Mode");

                Single.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "FrameRate"), numStyle, AppSettings.CInfo, out videoStream.FrameRate);
                Processing.GetFPSNumDenom(videoStream.FrameRate, out videoStream.FrameRateEnumerator, out videoStream.FrameRateDenominator);

                Single.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "FrameRate_Minimum"), numStyle, AppSettings.CInfo, out videoStream.FrameRateMin);
                Single.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "FrameRate_Nominal"), numStyle, AppSettings.CInfo, out videoStream.FrameRateNom);
                Single.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "FrameRate_Maximum"), numStyle, AppSettings.CInfo, out videoStream.FrameRateMax);
                Int64.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "FrameCount"), numStyle, AppSettings.CInfo, out videoStream.FrameCount);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "BitDepth"), numStyle, AppSettings.CInfo, out videoStream.BitDepth);
                videoStream.ScanType            = Processing.mediaInfo.Get(StreamKind.Video, i, "ScanType");
                videoStream.ScanOrder           = Processing.mediaInfo.Get(StreamKind.Video, i, "ScanOrder");
                UInt64.TryParse(Processing.mediaInfo.Get(StreamKind.Video, i, "StreamSize"), numStyle, AppSettings.CInfo, out videoStream.StreamSize);
                videoStream.EncodedApplication  = Processing.mediaInfo.Get(StreamKind.Video, i, "Encoded_Application");
                videoStream.EncodedApplicationUrl = Processing.mediaInfo.Get(StreamKind.Video, i, "Encoded_Application/Url");
                videoStream.EncodedLibrary      = Processing.mediaInfo.Get(StreamKind.Video, i, "Encoded_Library");
                videoStream.EncodedLibraryName  = Processing.mediaInfo.Get(StreamKind.Video, i, "Encoded_Library/Name");
                videoStream.EncodedLibraryVersion = Processing.mediaInfo.Get(StreamKind.Video, i, "Encoded_Library/Version");
                videoStream.EncodedLibraryDate  = Processing.mediaInfo.Get(StreamKind.Video, i, "Encoded_Library/Date");
                videoStream.EncodedLibrarySettings = Processing.mediaInfo.Get(StreamKind.Video, i, "Encoded_Library_Settings");

                if (videoStream.Width > 1280)
                {
                    if ((videoStream.ScanType == "Progressive") || (videoStream.ScanType == ""))
                        videoStream.VideoSize = VideoFormat.Videoformat1080P;
                    else
                        videoStream.VideoSize = VideoFormat.Videoformat1080I;
                }
                else if (videoStream.Width > 720)
                {
                    videoStream.VideoSize = VideoFormat.Videoformat720P;
                }
                else if ((videoStream.Height > 480) && (videoStream.Height <= 576) && (videoStream.Width <= 720))
                {
                    if ((videoStream.ScanType == "Progressive") || (videoStream.ScanType == ""))
                        videoStream.VideoSize = VideoFormat.Videoformat576P;
                    else
                        videoStream.VideoSize = VideoFormat.Videoformat576I;
                }
                else
                {
                    if ((videoStream.ScanType == "Progressive") || (videoStream.ScanType == ""))
                        videoStream.VideoSize = VideoFormat.Videoformat480P;
                    else
                        videoStream.VideoSize = VideoFormat.Videoformat480I;
                }

                Video.Add(videoStream);
            }
            #endregion

            #region Get Audio Info
            for (int i = 0; i < _audioStreams; i++)
            {
                AudioStreamInfo audioStream = new AudioStreamInfo();

                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "StreamKindID"), numStyle, AppSettings.CInfo, out audioStream.StreamKindID);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "StreamKindPos"), numStyle, AppSettings.CInfo, out audioStream.StreamKindPos);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "ID"), numStyle, AppSettings.CInfo, out audioStream.ID);
                audioStream.Format              = Processing.mediaInfo.Get(StreamKind.Audio, i, "Format");
                audioStream.FormatInfo          = Processing.mediaInfo.Get(StreamKind.Audio, i, "Format/Info");
                audioStream.FormatVersion       = Processing.mediaInfo.Get(StreamKind.Audio, i, "Format_Version");
                audioStream.FormatProfile       = Processing.mediaInfo.Get(StreamKind.Audio, i, "Format_Profile");
                audioStream.CodecID             = Processing.mediaInfo.Get(StreamKind.Audio, i, "CodecID");
                audioStream.CodecIDInfo         = Processing.mediaInfo.Get(StreamKind.Audio, i, "CodecID/Info");
                audioStream.CodecIDUrl          = Processing.mediaInfo.Get(StreamKind.Audio, i, "CodecID/Url");
                audioStream.CodecIDDescription  = Processing.mediaInfo.Get(StreamKind.Audio, i, "CodecID_Description");
                Int64.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "Duration"), numStyle, AppSettings.CInfo, out audioStream.Duration);
                audioStream.BitRateMode         = Processing.mediaInfo.Get(StreamKind.Audio, i, "BitRate_Mode");
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "BitRate"), numStyle, AppSettings.CInfo, out audioStream.BitRate);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "BitRate_Minimum"), numStyle, AppSettings.CInfo, out audioStream.BitRateMin);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "BitRate_Nominal"), numStyle, AppSettings.CInfo, out audioStream.BitRateNom);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "BitRate_Maximum"), numStyle, AppSettings.CInfo, out audioStream.BitRateMax);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "Channel(s)"), numStyle, AppSettings.CInfo, out audioStream.Channels);
                audioStream.ChannelsString      = Processing.mediaInfo.Get(StreamKind.Audio, i, "Channel(s)/String");
                audioStream.ChannelPositions    = Processing.mediaInfo.Get(StreamKind.Audio, i, "ChannelPositions");
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "SamplingRate"), numStyle, AppSettings.CInfo, out audioStream.SamplingRate);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "BitDepth"), numStyle, AppSettings.CInfo, out audioStream.BitDepth);
                audioStream.CompressionMode     = Processing.mediaInfo.Get(StreamKind.Audio, i, "Compression_Mode");
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "Delay"), numStyle, AppSettings.CInfo, out audioStream.Delay);
                UInt64.TryParse(Processing.mediaInfo.Get(StreamKind.Audio, i, "StreamSize"), numStyle, AppSettings.CInfo, out audioStream.StreamSize);
                audioStream.EncodedLibrary      = Processing.mediaInfo.Get(StreamKind.Audio, i, "Encoded_Library");
                audioStream.EncodedLibraryName  = Processing.mediaInfo.Get(StreamKind.Audio, i, "Encoded_Library/Name");
                audioStream.EncodedLibraryVersion = Processing.mediaInfo.Get(StreamKind.Audio, i, "Encoded_Library/Version");
                audioStream.EncodedLibraryDate  = Processing.mediaInfo.Get(StreamKind.Audio, i, "Encoded_Library/Date");
                audioStream.EncodedLibrarySettings = Processing.mediaInfo.Get(StreamKind.Audio, i, "Encoded_Library_Settings");
                audioStream.LanguageFull        = Processing.mediaInfo.Get(StreamKind.Audio, i, "Language/String1");
                audioStream.LanguageIso6391     = Processing.mediaInfo.Get(StreamKind.Audio, i, "Language/String2");
                audioStream.LanguageIso6392     = Processing.mediaInfo.Get(StreamKind.Audio, i, "Language/String3");

                Audio.Add(audioStream);
            }
            #endregion

            #region Get Image Info
            for (int i = 0; i < _imageStreams; i++)
            {
                ImageStreamInfo imageStream = new ImageStreamInfo();

                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Image, i, "StreamKindID"), numStyle, AppSettings.CInfo, out imageStream.StreamKindID);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Image, i, "ID"), numStyle, AppSettings.CInfo, out imageStream.ID);
                imageStream.Format                  = Processing.mediaInfo.Get(StreamKind.Image, i, "Format");
                imageStream.CodecIDInfo             = Processing.mediaInfo.Get(StreamKind.Image, i, "CodecID/Info");
                UInt64.TryParse(Processing.mediaInfo.Get(StreamKind.Image, i, "StreamSize"), numStyle, AppSettings.CInfo, out imageStream.StreamSize);
                imageStream.LanguageFull            = Processing.mediaInfo.Get(StreamKind.Image, i, "Language/String1");
                imageStream.LanguageIso6392         = Processing.mediaInfo.Get(StreamKind.Image, i, "Language/String3");

                Image.Add(imageStream);
            }
            #endregion

            #region Get Text Info
            for (int i = 0; i < _textStreams; i++)
            {
                TextStreamInfo textStream = new TextStreamInfo();

                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Text, i, "StreamKindID"), numStyle, AppSettings.CInfo, out textStream.StreamKindID);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Text, i, "ID"), numStyle, AppSettings.CInfo, out textStream.ID);
                textStream.Format                   = Processing.mediaInfo.Get(StreamKind.Text, i, "Format");
                textStream.CodecIDInfo              = Processing.mediaInfo.Get(StreamKind.Text, i, "CodecID/Info");
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Text, i, "Delay"), numStyle, AppSettings.CInfo, out textStream.Delay);
                UInt64.TryParse(Processing.mediaInfo.Get(StreamKind.Text, i, "StreamSize"), numStyle, AppSettings.CInfo, out textStream.StreamSize);
                textStream.LanguageFull             = Processing.mediaInfo.Get(StreamKind.Text, i, "Language/String1");
                textStream.LanguageIso6392          = Processing.mediaInfo.Get(StreamKind.Text, i, "Language/String3");

                Text.Add(textStream);
            }
            #endregion

            #region Get Menu Info
            for (int i = 0; i < _menuCount; i++)
            {
                MenuStreamInfo menuStream = new MenuStreamInfo();

                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Menu, i, "Chapters_Pos_Begin"), numStyle, AppSettings.CInfo, out menuStream.ChaptersPosBegin);
                Int32.TryParse(Processing.mediaInfo.Get(StreamKind.Menu, i, "Chapters_Pos_End"), numStyle, AppSettings.CInfo, out menuStream.ChaptersPosEnd);

                for (int j = menuStream.ChaptersPosBegin; j < menuStream.ChaptersPosEnd; j++)
                {
                    DateTime tempTime;
                    DateTime.TryParse(Processing.mediaInfo.Get(StreamKind.Menu, i, j, InfoKind.Name), AppSettings.CInfo, DateTimeStyles.AssumeLocal, out tempTime);
                    Chapters.Add(tempTime.TimeOfDay);
                }
            }
            #endregion
            Processing.mediaInfo.Option("Complete");
            Processing.mediaInfo.Close();
        }