public VideoFileInformation GetVideoFileInformation(string file)
 {
     LogTo.Debug("Determining codec for file {0}...", file);
     VideoFileInformation videoFileInformation = new VideoFileInformation { StreamDetails = new StreamDetails() };
     using (MediaFile mediaFile = new MediaFile(file))
     {
         videoFileInformation.StreamDetails.Audios = GetAudioTracks(mediaFile.Audio).ToList();
         videoFileInformation.StreamDetails.Videos = GetVideoTracks(mediaFile.Video).ToList();
         videoFileInformation.StreamDetails.Subtitles = GetSubtitleTracks(mediaFile.Text).ToList();
     }
     return videoFileInformation;
 }
        public ViewMediaInfoForm(string path)
        {
            InitializeComponent();

            var mediaFile = new MediaFile(path);

            var lines = new List<string>();
            {
                lines.Add(string.Format("Unique ID            : {0}", mediaFile.uniqueId));
                lines.Add(string.Format("Complete name        : {0}", path));
                lines.Add(string.Format("Format               : {0}", mediaFile.format));
                lines.Add(string.Format("File size            : {0}", mediaFile.size));
                lines.Add(string.Format("Duration             : {0}", mediaFile.duration));
                lines.Add(string.Format("Overall bit rate     : {0}", mediaFile.bitRate));
                lines.Add(string.Format("Encoded date         : {0}", mediaFile.encodedDate));
                lines.Add(string.Format("Writing application  : {0}", mediaFile.miGetString("Encoded_Application")));
                lines.Add(string.Format("Writing library      : {0}", mediaFile.encodedLibrary));
            }

            lines.Add(string.Empty);
            lines.Add("Video");
            foreach (var info in mediaFile.Video)
            {
                double bitPerFrame = info.Value.size*8/
                                     ((double) info.Value.width*info.Value.height*info.Value.frameCount);
                lines.Add(string.Format("ID                   : {0}", info.Value.uniqueId));
                lines.Add(string.Format("Format               : {0}", info.Value.format));
                lines.Add(string.Format("Format profile       : {0}", info.Value.miGetString("Format_Profile")));
                lines.Add(string.Format("Format settings      : {0}", info.Value.miGetString("Format_Settings")));
                lines.Add(string.Format("Codec ID             : {0}", info.Value.codecId));
                lines.Add(string.Format("Duration             : {0}", info.Value.duration));
                lines.Add(string.Format("Bit rate             : {0}", info.Value.bitRate));
                lines.Add(string.Format("Width                : {0}", info.Value.width));
                lines.Add(string.Format("Height               : {0}", info.Value.height));
                lines.Add(string.Format("Display aspect ratio : {0}", info.Value.pixelAspectRatio));
                lines.Add(string.Format("Frame rate mode      : {0}", info.Value.frameRateMode));
                lines.Add(string.Format("Frame rate           : {0}", info.Value.frameRate));
                lines.Add(string.Format("Chroma subsampling   : {0}", info.Value.miGetString("ChromaSubsampling")));
                lines.Add(string.Format("Bit depth            : {0}", info.Value.bitDepth));
                lines.Add(string.Format("Scan type            : {0}", info.Value.miGetString("ScanType")));
                lines.Add(string.Format("Bits/(Pixel*Frame)   : {0}", bitPerFrame.ToString("0.#####")));
                lines.Add(string.Format("Stream size          : {0}", info.Value.miGetString("StreamSize")));
                lines.Add(string.Format("Writing library      : {0}", info.Value.encodedLibrary));
                lines.Add(string.Format("Encoding settings    : {0}", info.Value.encoderSettingsRaw));
                lines.Add(string.Format("Language             : {0}", info.Value.language));
            }

            lines.Add(string.Empty);

            lines.Add("Audio");
            foreach (var info in mediaFile.Audio)
            {
                lines.Add(string.Format("ID                   : {0}", info.Value.uniqueId));
                lines.Add(string.Format("Format               : {0}", info.Value.format));
                lines.Add(string.Format("Codec ID             : {0}", info.Value.codecId));
                lines.Add(string.Format("Duration             : {0}", info.Value.duration));
                lines.Add(string.Format("Bit rate mode        : {0}", info.Value.bitRateMode));
                lines.Add(string.Format("Bit rate             : {0}", info.Value.bitRate));
                lines.Add(string.Format("Channel(s)           : {0}", info.Value.channels));
                lines.Add(string.Format("Sampling rate        : {0}", info.Value.sampleRate));
                lines.Add(string.Format("Bit depth            : {0}", info.Value.bitDepth));
                lines.Add(string.Format("Compression mode     : {0}", info.Value.compressionMode));
                lines.Add(string.Format("Stream size          : {0}", info.Value.size));
                lines.Add(string.Format("Language             : {0}", info.Value.language));
            }

            lines.Add(string.Empty);

            lines.Add("Subtitle");
            foreach (var info in mediaFile.Text)
            {
                lines.Add(string.Format("ID                   : {0}", info.Value.uniqueId));
                lines.Add(string.Format("Format               : {0}", info.Value.format));
                lines.Add(string.Format("Muxing Mode          : {0}", info.Value.muxingMode));
                lines.Add(string.Format("Codec ID             : {0}", info.Value.codecId));
                lines.Add(string.Format("Language             : {0}", info.Value.language));
            }

            textBoxInfo.Lines = lines.ToArray();
        }
        public ViewMediaInfoForm(string path)
        {
            InitializeComponent();

            Icon = Gui.Icon;

            wb_info.PreviewKeyDown += OnBrowserPreviewKeyDown;

            var mediaFile = new MediaFile(path);
            var mi = new MediaInfo();
            mi.Open(path);

            var lines = new List<string>();
            {
                lines.Add("<!doctype html>");
                lines.Add("<html>");
                lines.Add("<head>");
                lines.Add("<style>* { padding: 0px; margin: 0px; font-family:tahoma; } body { width: 700px; background: #fff; margin: 0 auto; } table { width: 700px; font-size: 12px; border-collapse: collapse; } td { width: 570px; padding: 5px; border-bottom: 1px dotted #1562b6; word-wrap: break-word; } td:first-child { width: 130px; border-right: 1px solid #1562b6; } .thead { font-size: 15px; color: #1562b6; padding-top: 25px; border: 0px !important; border-bottom: 2px solid #1562b6 !important; } .no-padding { padding-top: 0px !important; }</style>");
                lines.Add("</head>");
                lines.Add("<body>");
                lines.Add("<table border='0' cellspacing='0' cellpadding='0'>");
                lines.Add("<tr><td class='thead no-padding' colspan='2'><b>General</b></td></tr>");
                lines.Add(string.IsNullOrEmpty(mediaFile.miGetString("UniqueID/String")) ? string.Empty : string.Format("<tr><td>Unique ID:</td><td>{0}</td></tr>", mediaFile.miGetString("UniqueID/String")));
                lines.Add(string.IsNullOrEmpty(mediaFile.miGetString("Movie")) ? string.Empty : string.Format("<tr><td>Movie name:</td><td>{0}</td></tr>", mediaFile.miGetString("Movie")));
                lines.Add(string.IsNullOrEmpty(mediaFile.miGetString("CompleteName")) ? string.Empty : string.Format("<tr><td>Complete name:</td><td>{0}</td></tr>", mediaFile.miGetString("CompleteName")));
                lines.Add(string.IsNullOrEmpty(mediaFile.miGetString("Format")) ? string.Empty : string.Format("<tr><td>Format:</td><td>{0}</td></tr>", mediaFile.miGetString("Format")));
                lines.Add(string.IsNullOrEmpty(mediaFile.miGetString("Format_Version")) ? string.Empty : string.Format("<tr><td>Format version:</td><td>{0}</td></tr>", mediaFile.miGetString("Format_Version")));
                lines.Add(string.IsNullOrEmpty(mediaFile.miGetString("FileSize/String")) ? string.Empty : string.Format("<tr><td>File size:</td><td>{0}</td></tr>", mediaFile.miGetString("FileSize/String")));
                lines.Add(string.IsNullOrEmpty(mediaFile.miGetString("Duration/String")) ? string.Empty : string.Format("<tr><td>Duration:</td><td>{0}</td></tr>", mediaFile.miGetString("Duration/String")));
                lines.Add(string.IsNullOrEmpty(mediaFile.miGetString("OverallBitRate/String")) ? string.Empty : string.Format("<tr><td>Overall bitrate:</td><td>{0}</td></tr>", mediaFile.miGetString("OverallBitRate/String")));
                lines.Add(string.IsNullOrEmpty(mediaFile.miGetString("Encoded_Date")) ? string.Empty : string.Format("<tr><td>Encoded date:</td><td>{0}</td></tr>", mediaFile.miGetString("Encoded_Date")));
                lines.Add(string.IsNullOrEmpty(mediaFile.miGetString("Encoded_Application")) ? string.Empty : string.Format("<tr><td>Writing application:</td><td>{0}</td></tr>", mediaFile.miGetString("Encoded_Application")));
                lines.Add(string.IsNullOrEmpty(mediaFile.miGetString("Encoded_Library/String")) ? string.Empty : string.Format("<tr><td>Writing library:</td><td>{0}</td></tr>", mediaFile.miGetString("Encoded_Library/String")));
            }

            lines.Add("<tr><td class='thead' colspan='2'><b>Video</b></td></tr>");
            foreach (var info in mediaFile.Video)
            {
                lines.Add(string.Format("<tr><td>ID:</td><td>{0}</td></tr>", info.Value.miGetString("ID/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Title")) ? string.Empty : string.Format("<tr><td>Title:</td><td>{0}</td></tr>", info.Value.miGetString("Title")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Format")) ? string.Empty : string.Format("<tr><td>Format:</td><td>{0}</td></tr>", info.Value.miGetString("Format")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Format/Info")) ? string.Empty : string.Format("<tr><td>Format info:</td><td>{0}</td></tr>", info.Value.miGetString("Format/Info")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Format_Profile")) ? string.Empty : string.Format("<tr><td>Format profile:</td><td>{0}</td></tr>", info.Value.miGetString("Format_Profile")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Format_Settings")) ? string.Empty : string.Format("<tr><td>Format settings:</td><td>{0}</td></tr>", info.Value.miGetString("Format_Settings")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("MuxingMode")) ? string.Empty : string.Format("<tr><td>Muxing mode:</td><td>{0}</td></tr>", info.Value.miGetString("MuxingMode")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("CodecID/String")) ? string.Empty : string.Format("<tr><td>Codec ID:</td><td>{0}</td></tr>", info.Value.miGetString("CodecID/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Duration/String")) ? string.Empty : string.Format("<tr><td>Duration:</td><td>{0}</td></tr>", info.Value.miGetString("Duration/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("BitRate/String")) ? string.Empty : string.Format("<tr><td>Bitrate:</td><td>{0}</td></tr>", info.Value.miGetString("BitRate/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("BitRate_Nominal/String")) ? string.Empty : string.Format("<tr><td>Nominal bitrate:</td><td>{0}</td></tr>", info.Value.miGetString("BitRate_Nominal/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Width/String")) ? string.Empty : string.Format("<tr><td>Width:</td><td>{0}</td></tr>", info.Value.miGetString("Width/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Height/String")) ? string.Empty : string.Format("<tr><td>Height:</td><td>{0}</td></tr>", info.Value.miGetString("Height/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("DisplayAspectRatio/String")) ? string.Empty : string.Format("<tr><td>Display aspect ratio:</td><td>{0}</td></tr>", info.Value.miGetString("DisplayAspectRatio/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("FrameRate_Mode/String")) ? string.Empty : string.Format("<tr><td>Frame rate mode:</td><td>{0}</td></tr>", info.Value.miGetString("FrameRate_Mode/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("FrameRate/String")) ? string.Empty : string.Format("<tr><td>Frame rate:</td><td>{0}</td></tr>", info.Value.miGetString("FrameRate/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("ColorSpace")) ? string.Empty : string.Format("<tr><td>Color space:</td><td>{0}</td></tr>", info.Value.miGetString("ColorSpace")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("ChromaSubsampling")) ? string.Empty : string.Format("<tr><td>Chroma subsampling:</td><td>{0}</td></tr>", info.Value.miGetString("ChromaSubsampling")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("BitDepth/String")) ? string.Empty : string.Format("<tr><td>Bit depth:</td><td>{0}</td></tr>", info.Value.miGetString("BitDepth/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("ScanType")) ? string.Empty : string.Format("<tr><td>Scan type:</td><td>{0}</td></tr>", info.Value.miGetString("ScanType")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Bits-(Pixel*Frame)")) ? string.Empty : string.Format("<tr><td>Bits/(Pixel*Frame):</td><td>{0}</td></tr>", info.Value.miGetString("Bits-(Pixel*Frame)")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("StreamSize/String")) ? string.Empty : string.Format("<tr><td>Stream size:</td><td>{0}</td></tr>", info.Value.miGetString("StreamSize/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Encoded_Library/String")) ? string.Empty : string.Format("<tr><td>Writing library:</td><td>{0}</td></tr>", info.Value.miGetString("Encoded_Library/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Encoded_Library_Settings")) ? string.Empty : string.Format("<tr><td>Encoding settings:</td><td>{0}</td></tr>", info.Value.miGetString("Encoded_Library_Settings")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Language/String")) ? string.Empty : string.Format("<tr><td>Language:</td><td>{0}</td></tr>", info.Value.miGetString("Language/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Default/String")) ? string.Empty : string.Format("<tr><td>Default:</td><td>{0}</td></tr>", info.Value.miGetString("Default/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Forced/String")) ? string.Empty : string.Format("<tr><td>Forced:</td><td>{0}</td></tr>", info.Value.miGetString("Forced/String")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("colour_range")) ? string.Empty : string.Format("<tr><td>Color range:</td><td>{0}</td></tr>", info.Value.miGetString("colour_range")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("colour_primaries")) ? string.Empty : string.Format("<tr><td>Color primaries:</td><td>{0}</td></tr>", info.Value.miGetString("colour_primaries")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("transfer_characteristics")) ? string.Empty : string.Format("<tr><td>Transfer characteristics:</td><td>{0}</td></tr>", info.Value.miGetString("transfer_characteristics")));
                lines.Add(string.IsNullOrEmpty(info.Value.miGetString("matrix_coefficients")) ? string.Empty : string.Format("<tr><td>Matrix coefficients:</td><td>{0}</td></tr>", info.Value.miGetString("matrix_coefficients")));
            }

            if (mediaFile.Audio.Count > 0)
            {
                int audioTracks = 1;

                foreach (var info in mediaFile.Audio)
                {
                    lines.Add(mediaFile.Audio.Count == 1 ? "<tr><td class='thead' colspan='2'><b>Audio</b></td></tr>" : string.Format("<tr><td class='thead' colspan='2'><b>Audio #{0}</b></td></tr>", audioTracks));
                    lines.Add(string.Format("<tr><td>ID:</td><td>{0}</td></tr>", info.Value.miGetString("ID/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Title")) ? string.Empty : string.Format("<tr><td>Title:</td><td>{0}</td></tr>", info.Value.miGetString("Title")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Format")) ? string.Empty : string.Format("<tr><td>Format:</td><td>{0}</td></tr>", info.Value.miGetString("Format")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Format/Info")) ? string.Empty : string.Format("<tr><td>Format info:</td><td>{0}</td></tr>", info.Value.miGetString("Format/Info")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("CodecID/String")) ? string.Empty : string.Format("<tr><td>Codec ID:</td><td>{0}</td></tr>", info.Value.miGetString("CodecID/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Duration/String")) ? string.Empty : string.Format("<tr><td>Duration:</td><td>{0}</td></tr>", info.Value.miGetString("Duration/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("BitRate_Mode/String")) ? string.Empty : string.Format("<tr><td>Bitrate mode:</td><td>{0}</td></tr>", info.Value.miGetString("BitRate_Mode/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("BitRate/String")) ? string.Empty : string.Format("<tr><td>Bitrate:</td><td>{0}</td></tr>", info.Value.miGetString("BitRate/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Channel(s)/String")) ? string.Empty : string.Format("<tr><td>Channels:</td><td>{0}</td></tr>", info.Value.miGetString("Channel(s)/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("SamplingRate/String")) ? string.Empty : string.Format("<tr><td>Sampling rate:</td><td>{0}</td></tr>", info.Value.miGetString("SamplingRate/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("BitDepth/String")) ? string.Empty : string.Format("<tr><td>Bit depth:</td><td>{0}</td></tr>", info.Value.miGetString("BitDepth/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Compression_Mode/String")) ? string.Empty : string.Format("<tr><td>Compression mode:</td><td>{0}</td></tr>", info.Value.miGetString("Compression_Mode/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("StreamSize/String")) ? string.Empty : string.Format("<tr><td>Stream size:</td><td>{0}</td></tr>", info.Value.miGetString("StreamSize/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Language/String")) ? string.Empty : string.Format("<tr><td>Language:</td><td>{0}</td></tr>", info.Value.miGetString("Language/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Default/String")) ? string.Empty : string.Format("<tr><td>Default:</td><td>{0}</td></tr>", info.Value.miGetString("Default/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Forced/String")) ? string.Empty : string.Format("<tr><td>Forced:</td><td>{0}</td></tr>", info.Value.miGetString("Forced/String")));

                    audioTracks++;
                }
            }

            if (mediaFile.Text.Count > 0)
            {
                int textTracks = 1;

                foreach (var info in mediaFile.Text)
                {
                    lines.Add(mediaFile.Text.Count == 1 ? "<tr><td class='thead' colspan='2'><b>Text</b></td></tr>" : string.Format("<tr><td class='thead' colspan='2'><b>Text #{0}</b></td></tr>", textTracks));
                    lines.Add(string.Format("<tr><td>ID:</td><td>{0}</td></tr>", info.Value.miGetString("ID/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Format")) ? string.Empty : string.Format("<tr><td>Format:</td><td>{0}</td></tr>", info.Value.miGetString("Format")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("CodecID")) ? string.Empty : string.Format("<tr><td>Codec ID:</td><td>{0}</td></tr>", info.Value.miGetString("CodecID")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("CodecID/Info")) ? string.Empty : string.Format("<tr><td>Codec ID info:</td><td>{0}</td></tr>", info.Value.miGetString("CodecID/Info")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Compression_Mode/String")) ? string.Empty : string.Format("<tr><td>Compression mode:</td><td>{0}</td></tr>", info.Value.miGetString("Compression_Mode/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Language/String")) ? string.Empty : string.Format("<tr><td>Language:</td><td>{0}</td></tr>", info.Value.miGetString("Language/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Default/String")) ? string.Empty : string.Format("<tr><td>Default:</td><td>{0}</td></tr>", info.Value.miGetString("Default/String")));
                    lines.Add(string.IsNullOrEmpty(info.Value.miGetString("Forced/String")) ? string.Empty : string.Format("<tr><td>Forced:</td><td>{0}</td></tr>", info.Value.miGetString("Forced/String")));

                    textTracks++;
                }
            }

            if (mediaFile.Menu.Count > 0)
            {
                int chapterBegin = int.Parse(mi.Get(StreamKind.Menu, 0, "Chapters_Pos_Begin"));
                int chapterEnd = int.Parse(mi.Get(StreamKind.Menu, 0, "Chapters_Pos_End"));

                lines.Add("<tr><td class='thead' colspan='2'><b>Menu</b></td></tr>");
                foreach (var info in mediaFile.Menu)
                {
                    for (int i = chapterBegin; i < chapterEnd; i++)
                    {
                        string key = mi.Get(StreamKind.Menu, 0, i, InfoKind.Name);
                        string value = mi.Get(StreamKind.Menu, 0, i);
                        lines.Add(string.IsNullOrEmpty(info.Value.miGetString(key)) ? string.Empty : string.Format("<tr><td>{0}:</td><td>{1}</td></tr>", key, value));
                    }
                }
            }

            lines.Add("</table></body></html>");

            wb_info.DocumentText = string.Join("\n", lines.ToArray());
        }
Example #4
0
        public bool Init(string filepath)
        {
            //if( !mediaFile.HasStreams ) {
            //	// 大文字と小文字を区別しない一致
            //	if( System.Text.RegularExpressions.Regex.IsMatch(
            //		filepath,
            //		"\\.(?:xwm)$",
            //		System.Text.RegularExpressions.RegexOptions.IgnoreCase ) ) {
            //		m_format = "XWM";
            //		noMediaInfo = true;
            //		return true;
            //	}
            //	if( System.Text.RegularExpressions.Regex.IsMatch(
            //		filepath,
            //		"\\.(?:fuz)$",
            //		System.Text.RegularExpressions.RegexOptions.IgnoreCase ) ) {
            //		m_format = "FUZ";
            //		noMediaInfo = true;
            //		return true;
            //	}

            //	MainWindowHelper.SetNotifyText( "ストリームを検出できませんでした" );
            //	return false;
            //}


            switch (filepath.getExt().ToLower())
            {
            case ".bms":
            case ".bme": {
                m_format = "BMS";
                var b = new BMSParse();
                b.Read(filepath);
                m_artist    = b.m_ARTIST;
                m_trackName = b.m_TITLE;
                return(true);
            }
            }

            var mediaFile = new MediaInfoDotNet.MediaFile(filepath);
            var dic       = new Dictionary <string, string>();

            using (var lol = new MediaInfo()) {
                var prop = lol.GetType().GetField("MustUseAnsi", BindingFlags.Instance | BindingFlags.NonPublic);
                prop.SetValue(lol, false);

                if (lol.Open(Uri.UnescapeDataString(filepath)) == 1)
                {
                    foreach (string entry in lol.Inform().Split('\n'))
                    {
                        var tokens = entry.Split(':');
                        if (tokens.Length == 2)
                        {
                            dic[tokens[0].Trim()] = tokens[1].Trim();
                        }
                    }
                    lol.Close();
                }
            }

            m_format     = dic.GetValue("Format");
            m_artist     = dic.GetValue("Performer");
            m_album      = dic.GetValue("Album");
            m_trackName  = dic.GetValue("Track name");
            m_trackIndex = dic.GetValue("Track name/Position");
            m_trackTotal = dic.GetValue("Track name/Total");
            m_discIndex  = dic.GetValue("Part name/Position");
            m_discTotal  = dic.GetValue("Part name/Total");

            m_genre        = dic.GetValue("Genre");
            m_comment      = dic.GetValue("Comment");
            m_recordedDate = dic.GetValue("Recorded date");

            switch (dic.GetValue("Sampling rate"))
            {
            case "32.0 KHz":
                m_sampleRate = 32000;
                break;

            case "44.1 KHz":
                m_sampleRate = 44100;
                break;

            case "48.0 KHz":
                m_sampleRate = 48000;
                break;

            case "96.0 KHz":
                m_sampleRate = 96000;
                break;

            default:
                MessageBox.Show("未対応のサンプリングレート: {0}", dic.GetValue("Sampling rate"));
                break;
            }

            m_duration = mediaFile.General.duration;
            var tm = m_duration / 1000;
            var m  = (tm / 60) % 60;
            var h  = (tm / 60) / 60;;
            var s  = (tm % 60);

            //m_playTime = "{0:00}:{1:00}:{2:00}".format( h, m, s );
            m_playTime = $"{h:00}:{m:00}:{s:00}";
            bitRate    = dic.GetValue("Bit rate");

            switch (m_format)
            {
            case "Wave":
            case "PCM":
                detail = $"{dic.GetValue( "Format" )}, {dic.GetValue( "Channel(s)" )}, {dic.GetValue( "Bit depth" )}";
                break;

            case "MPEG Audio":
                detail = $"{dic.GetValue( "Format" )}, {dic.GetValue( "Format version" )}, {dic.GetValue( "Format profile" )}, {dic.GetValue( "Mode" )}";
                break;

            case "MPEG-4":
                detail = $"{dic.GetValue( "Format" )}, {dic.GetValue( "Format profile" )}";
                break;

            case "FLAC":
                detail = $"{dic.GetValue( "Format" )}";
                break;
            }

            //m_audioCount = mediaFile.Audio.Count;
            return(true);
        }