public MyAddittionalData()
 {
     Selezionato = false;
     Metadata = new FFmpegMetadata();
 }
Beispiel #2
0
        /// <summary>
        /// Ottiene i Metadata da un file Media in modalità sincrona
        /// </summary>
        /// <param name="Input">Path del file Media</param>
        /// <returns></returns>
        public static FFmpegMetadata GetMetadata(String Input)
        {
            if (!_Loaded)
                return null;

            if (CheckValidInput(Input))
            {
                MyProcess p = new MyProcess(_PathFFmpeg, "-i \"" + Input + "\"");
                FFmpegMetadata temp = new FFmpegMetadata();

                p.OnNewLine += (string line) =>
                {

                    if (line == null)
                        return;
                    else if (line.StartsWith("    LANGUAGE        : "))
                    {
                        temp.Language = line.RemoveLeft("    LANGUAGE        : ").Trim();
                    }
                    else if (line.StartsWith("    YEAR            : "))
                    {
                        temp.Year = line.RemoveLeft("    YEAR            : ").Trim();
                    }

                    else if (line.StartsWith("    TITLE           : "))
                    {
                        temp.Title = line.RemoveLeft("    TITLE           : ").Trim();
                    }
                    else if (line.StartsWith("    title           : "))
                    {
                        temp.Title = line.RemoveLeft("    title           : ").Trim();
                    }

                    else if (line.StartsWith("    ARTIST          : "))
                    {
                        temp.Artist = line.RemoveLeft("    ARTIST          : ").Trim();
                    }
                    else if (line.StartsWith("    artist          :"))
                    {
                        temp.Artist = line.RemoveLeft("    artist          :").Trim();
                    }

                    else if (line.StartsWith("    ALBUM           : "))
                    {
                        temp.Album = line.RemoveLeft("    ALBUM           : ").Trim();
                    }
                    else if (line.StartsWith("    album           :"))
                    {
                        temp.Album = line.RemoveLeft("    album           :").Trim();
                    }

                    else if (line.StartsWith("    DATE            : "))
                    {
                        temp.Date = line.RemoveLeft("    DATE            : ").Trim();
                    }
                    else if (line.StartsWith("    date            : "))
                    {
                        temp.Date = line.RemoveLeft("    date            : ").Trim();
                    }

                    else if (line.StartsWith("    GENRE           : "))
                    {
                        temp.Genre = line.RemoveLeft("    GENRE           : ").Trim();
                    }
                    else if (line.StartsWith("    genre           :"))
                    {
                        temp.Genre = line.RemoveLeft("    genre           :").Trim();
                    }

                    else if (line.StartsWith("    COMMENT         : "))
                    {
                        temp.Comment = line.RemoveLeft("    COMMENT         : ").Trim();
                    }
                    else if (line.StartsWith("    track           : "))
                    {
                        temp.track = line.RemoveLeft("    track           : ").Trim();
                    }
                    else if (line.StartsWith("    ENSEMBLE        : "))
                    {
                        temp.Ensemble = line.RemoveLeft("    ENSEMBLE        : ").Trim();
                    }
                    else if (line.StartsWith("  Duration:"))
                    {
                        String[] sss = line.Split(',');
                        if (sss.Length == 3)
                        {
                            temp.MediaMetadata.Duration = sss[0].RemoveLeft("  Duration: ").Trim();
                            temp.MediaMetadata.start = sss[1].RemoveLeft(" start: ").Trim();
                            temp.MediaMetadata.bitrate = sss[2].RemoveLeft(" bitrate: ").Trim();
                        }
                    }
                    else if (line.StartsWith("    Stream"))
                    {
                        String[] sss = line.Split(':');
                        if (sss.Length == 4 && sss[2].Contains("Audio"))
                        {

                            sss = sss[3].Split(',');
                            if(sss.Length>1)
                            {
                                if(sss[0].Contains("flac"))
                                {
                                    temp.MediaMetadata = new FFMpegMediaMetadataFlac(temp.MediaMetadata);

                                    try
                                    {
                                        (temp.MediaMetadata  as FFMpegMediaMetadataFlac).SamplingRate= (SamplingRateInfo) Enum.Parse(typeof(SamplingRateInfo), "_" + sss[1].RemoveRight("Hz", " ").Trim());

                                        if (sss[3].Contains("("))
                                        {
                                            string bittemp = sss[3].Substring("(", ")").RemoveRight("bit", " ").Trim();

                                            (temp.MediaMetadata as FFMpegMediaMetadataFlac).Bit = (BitInfo)Enum.Parse(typeof(BitInfo), "_" + bittemp);
                                        }

                                    }
                                    catch (Exception ex){

                                        StreamWriter sw = File.AppendText("tetttmp.txt");
                                        sw.WriteLine(Input + " " + ex.Message );
                                        sw.Close();
                                    }

                                }
                                else if (sss[0].Contains("mp3"))
                                {
                                    temp.MediaMetadata = new FFMpegMediaMetadataMp3(temp.MediaMetadata);
                                    try
                                    {
                                        (temp.MediaMetadata as FFMpegMediaMetadataMp3).SamplingRate = (SamplingRateInfo)Enum.Parse(typeof(SamplingRateInfo), "_" + sss[1].RemoveRight("Hz", " ").Trim());

                                        string bitrate = sss[4].RemoveRight("kb/s", " ").Trim();
                                        int.TryParse(bitrate, out (temp.MediaMetadata as FFMpegMediaMetadataMp3).BitRateMp3);

                                    }
                                    catch (Exception ex) {
                                        //MessageBox.Show(ex.Message);
                                        StreamWriter sw = File.AppendText("tetttmp.txt");
                                        sw.WriteLine(Input + " " + ex.Message);
                                        sw.Close();
                                    }

                                }
                                else if (sss[0].Contains("pcm"))
                                {
                                    temp.MediaMetadata = new FFMpegMediaMetadataWav(temp.MediaMetadata);
                                    try
                                    {
                                        (temp.MediaMetadata as FFMpegMediaMetadataWav).SamplingRate = (SamplingRateInfo)Enum.Parse(typeof(SamplingRateInfo), "_" + sss[1].RemoveRight("Hz", " ").Trim());

                                    }
                                    catch (Exception ex) {
                                        StreamWriter sw = File.AppendText("tetttmp.txt");
                                        sw.WriteLine(Input + " " + ex.Message);
                                        sw.Close();
                                    }
                                }
                            }
                        }
                    }
                };

                p.UseShellExecute = false;
                p.RedirectStandardOutput = true;
                p.RedirectStandardError = true;
                p.CreateNoWindow = true;
                p.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

                p.Async = false;
                p.Start();

                return temp;
            }
            else
                return null;
        }
 public CountParameter(MyFileSystemPlus mfsp, FFmpegMetadata EndFormat)
 {
     this.mfsp = mfsp;
     this.EndFormat = EndFormat;
 }
Beispiel #4
0
 object ICloneablePlus.Clone()
 {
     FFmpegMetadata t = new FFmpegMetadata();
     t.Language = Language;
     t.Year = Year;
     t.Title = Title;
     t.Artist = Artist;
     t.Album = Album;
     t.Date = Date;
     t.Genre = Genre;
     t.Comment = Comment;
     t.track = track;
     t.Ensemble = Ensemble;
     if (MediaMetadata == null)
         t.MediaMetadata = null;
     else
         t.MediaMetadata = MediaMetadata.CloneClass();
     return t;
 }