Ejemplo n.º 1
0
        private string GetFileContent(FileInfo fi, ref bool mediaFlag)
        {
            // 只读取 10KB 以下 __game_version_info__.gvi 文件内容
            if (fi.Name.ToLower() == "__game_version_info__.gvi" && fi.Length <= 10240)
            {
                return(File.ReadAllText(fi.FullName));
            }
            else if (this.scanMediaInfo && (!mediaFlag) &&
                     CommonString.MediaExts.Contains(fi.Extension.ToLower()) &&
                     (!fi.Name.ToLower().Contains(".sample.")))
            {
                if (mediaInfoInitFlag)
                {
                    mediaInfo.Open(fi.FullName);
                    string strTemp = mediaInfo.Inform();
                    mediaFlag = true;
                    mediaInfo.Close();

                    return(strTemp);
                }
                else
                {
                    return(mediaInfoInitErrMsg);
                }
            }
            else
            {
                return(String.Empty);
            }
        }
Ejemplo n.º 2
0
        public MediaInfo(Models.FileName file)
        {
            InitializeComponent();
            this.Text = file.Original;

            string result;

            if (IntPtr.Size == 4)
            {
                var MI = new MediaInfoLib.MediaInfo();

                MI.Open(file.FullPath());
                MI.Option("Complete");
                result = MI.Inform();
                MI.Close();
            }
            else
            {
                var MI = new MediaInfoLib.MediaInfo64();

                MI.Open(file.FullPath());
                MI.Option("Complete");
                result = MI.Inform();
                MI.Close();
            }

            var sp = result
                     .TrimEnd(new char[] { '\r', '\n' })
                     .Split(new string[] { "\r\n" }, StringSplitOptions.None);

            TreeNode root = null;

            foreach (var s in sp)
            {
                if (root == null)
                {
                    root = new TreeNode(s);
                    treeViewInfo.Nodes.Add(root);
                }
                else
                {
                    if (s == "")
                    {
                        root = null;
                    }
                    else
                    {
                        root.Nodes.Add(new TreeNode(Regex.Replace(s, "\\s{2,}", "")));
                    }
                }
            }

            treeViewInfo.ExpandAll();
        }
Ejemplo n.º 3
0
 private void showMediaInformation(string filePath)
 {
     richTextBox_ImageProperties.AppendLine(filePath);
     try
     {
         MediaInfoLib.MediaInfo mediaInfo = new MediaInfoLib.MediaInfo();
         if (mediaInfo.Open(filePath) == 1)
         {
             mediaInfo.Option("Complete", "1");
             richTextBox_ImageProperties.AppendLine(CultureStrings.ColonMediaInformation);
             richTextBox_ImageProperties.AppendLine(mediaInfo.Inform());
         }
         mediaInfo.Close();
     }
     catch (System.Exception ex)
     {
         logException(ex);
     }
 }
Ejemplo n.º 4
0
        private string buildUniqueDestinationFilePath(ThreadParameters parameters, string sourcePath)
        {
            MediaInfoLib.MediaInfo mediaInfo = new MediaInfoLib.MediaInfo();
            string taggedDate = null;

            if (mediaInfo.Open(sourcePath) == 1)
            {
                taggedDate = mediaInfo.Get(MediaInfoLib.StreamKind.General, 0, CultureStrings.TextTaggedDate);
            }
            mediaInfo.Close();
            string uniqueDestinationFilePath = null;

            if (taggedDate != null && taggedDate.Length > 0)
            {
                try
                {
                    System.DateTime dateTime = parseTaggedDate(taggedDate);
                    uniqueDestinationFilePath = normalizeDirectoryPath(parameters.DestinationRootDirectory) + normalizeDirectoryPath(System.IO.Path.GetExtension(sourcePath).ToUpper().Substring(1)) + normalizeDirectoryPath(dateTime.ToString("yyyy")) + normalizeDirectoryPath(dateTime.ToString("MMMM")) + getCollectPhotoOriginalFileName(sourcePath);
                }
                catch (System.Exception ex)
                {
                    logException(ex);
                }
            }
            if (uniqueDestinationFilePath == null)
            {
                uniqueDestinationFilePath = normalizeDirectoryPath(parameters.DestinationRootDirectory) + normalizeDirectoryPath(System.IO.Path.GetExtension(sourcePath).ToUpper().Substring(1)) + getCollectPhotoOriginalFileName(sourcePath);
            }
            if (getDuplicateAutoRenamedFile(sourcePath, uniqueDestinationFilePath) != null)
            {
                return(getDuplicateAutoRenamedFile(sourcePath, uniqueDestinationFilePath));
            }
            else
            {
                return(getUnusedFilePath(uniqueDestinationFilePath));
            }
        }
Ejemplo n.º 5
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.º 6
0
        internal static void Check(Media media)
        {
            if (media.MediaType == TMediaType.Movie || media.MediaType == TMediaType.Unknown)
            {
                TimeSpan videoDuration;
                TimeSpan audioDuration;
                int startTickCunt = Environment.TickCount;
                using (FFMpegWrapper ffmpeg = new FFMpegWrapper(media.FullPath))
                {
                    videoDuration = ffmpeg.GetFrameCount().SMPTEFramesToTimeSpan();
                    audioDuration = (TimeSpan)ffmpeg.GetAudioDuration();
                    if (videoDuration == TimeSpan.Zero)
                    {
                        MediaInfoLib.MediaInfo mi = new MediaInfoLib.MediaInfo();
                        try
                        {
                            mi.Open(media.FullPath);
                            long frameCount;
                            if (long.TryParse(mi.Get(MediaInfoLib.StreamKind.Video, 0, "FrameCount"), out frameCount))
                                videoDuration = frameCount.SMPTEFramesToTimeSpan();
                            long audioMilliseconds;
                            if (long.TryParse(mi.Get(MediaInfoLib.StreamKind.Audio, 0, "Duration"), out audioMilliseconds))
                                audioDuration = TimeSpan.FromMilliseconds(audioMilliseconds);
                            //mi.Option("Complete");
                            //Debug.WriteLine(mi.Inform());
                        }
                        finally
                        {
                            mi.Close();
                        }
                    }

                    media.Duration = videoDuration;
                    if (media.DurationPlay == TimeSpan.Zero || media.DurationPlay > videoDuration)
                        media.DurationPlay = videoDuration;
                    int w = ffmpeg.GetWidth();
                    int h = ffmpeg.GetHeight();
                    FieldOrder order = ffmpeg.GetFieldOrder();
                    Rational frameRate = ffmpeg.GetFrameRate();
                    Rational sar = ffmpeg.GetSAR();
                    if (h == 608 && w == 720)
                    {
                        media.HasExtraLines = true;
                        h = 576;
                    }
                    else
                        media.HasExtraLines = false;

                    RationalNumber sAR = ((sar.Num == 608 && sar.Den == 405) || (sar.Num == 1 && sar.Den == 1)) ? VideoFormatDescription.Descriptions[TVideoFormat.PAL_FHA].SAR
                        : (sar.Num == 152 && sar.Den == 135) ? VideoFormatDescription.Descriptions[TVideoFormat.PAL].SAR
                        : new RationalNumber(sar.Num, sar.Den);

                    var vfd = VideoFormatDescription.Match(new System.Drawing.Size(w, h), new RationalNumber(frameRate.Num, frameRate.Den), sAR, order != FieldOrder.PROGRESSIVE);
                    media.VideoFormat = vfd.Format;
                    media.VideoFormatDescription = vfd;

                    if (videoDuration > TimeSpan.Zero)
                    {
                        media.MediaType = TMediaType.Movie;
                        if (Math.Abs(videoDuration.Ticks - audioDuration.Ticks) >= TimeSpan.TicksPerSecond / 2
                            && audioDuration != TimeSpan.Zero)
                            // when more than 0.5 sec difference
                            media.MediaStatus = TMediaStatus.ValidationError;
                        else
                            media.MediaStatus = TMediaStatus.Available;
                    }
                    else
                        media.MediaStatus = TMediaStatus.ValidationError;
                }
                Debug.WriteLine("Check of {0} finished with status {1}. It took {2} milliseconds", media.FullPath, media.MediaStatus, Environment.TickCount - startTickCunt);
            }
            else
                media.MediaStatus = TMediaStatus.Available;
        }
Ejemplo n.º 7
0
        public string of_GetXmlStr(string lsFile)
        {
            try
            {
                string parameter = "";//存放所有参数
                string tempstr;
                int    i          = 0;
                int    VideoCount = 0;
                int    AudioCount = 0;

                MediaInfoLib.MediaInfo m = new MediaInfoLib.MediaInfo();
                int k = m.Open(lsFile);
                if (k != 1)
                {
                    return("Not Media File!");
                }

                parameter = "<Root>";
                //General
                parameter += "\r\n" + "<General>";
                i          = 0;
                while (true)
                {
                    tempstr = m.Get(StreamKind.General, 0, i++, InfoKind.Name);//.Replace("/", "_");
                    if (tempstr == "")
                    {
                        break;
                    }
                    //获得值
                    string V = m.Get(MediaInfoLib.StreamKind.General, 0, tempstr);
                    if (V == "")
                    {
                        continue;
                    }
                    if (tempstr.Contains("/"))
                    {
                        continue;
                    }
                    //获得视频和音频数据
                    if (tempstr == "VideoCount")
                    {
                        VideoCount = int.Parse(V);
                    }
                    if (tempstr == "AudioCount")
                    {
                        AudioCount = int.Parse(V);
                    }
                    parameter += "\r\n" + "<item Name=\"" + tempstr + "\">" + V + "</item>";
                }
                parameter += "\r\n" + "</General>";
                //Video
                parameter += "\r\n" + "<Video>";
                for (int j = 0; j < VideoCount; j++)
                {
                    parameter += "\r\n" + "<Row>";
                    i          = 0;
                    while (true)
                    {
                        tempstr = m.Get(StreamKind.Video, j, i++, InfoKind.Name);//.Replace("/", "_");
                        if (tempstr == "")
                        {
                            break;
                        }
                        //获得值
                        string V = m.Get(MediaInfoLib.StreamKind.Video, j, tempstr);
                        if (V == "")
                        {
                            continue;
                        }
                        //if (V.Contains("AMBA")) continue;
                        if (tempstr.Contains("/"))
                        {
                            continue;
                        }
                        //if (tempstr.Contains("AMBA")) continue;

                        parameter += "\r\n" + "<item Name=\"" + tempstr + "\">" + V + "</item>";
                    }
                    parameter += "\r\n" + "</Row>";
                }
                parameter += "\r\n" + "</Video>";
                //Audio
                parameter += "\r\n" + "<Audio>";
                for (int j = 0; j < AudioCount; j++)
                {
                    parameter += "\r\n" + "<Row>";
                    i          = 0;
                    while (true)
                    {
                        tempstr = m.Get(StreamKind.Audio, j, i++, InfoKind.Name);//.Replace("/", "_");
                        if (tempstr == "")
                        {
                            break;
                        }
                        //获得值
                        string V = m.Get(MediaInfoLib.StreamKind.Audio, j, tempstr);
                        if (V == "")
                        {
                            continue;
                        }
                        if (tempstr.Contains("/"))
                        {
                            continue;
                        }
                        parameter += "\r\n" + "<item Name=\"" + tempstr + "\">" + V + "</item>";
                    }
                    parameter += "\r\n" + "</Row>";
                }
                parameter += "\r\n" + "</Audio>";
                parameter += "\r\n" + "</Root>";
                m.Close();
                return(parameter);
            }
            catch (Exception ex)
            { return("error:" + ex.Message + ex.StackTrace); }
        }
Ejemplo n.º 8
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);
        }