public MyAddittionalData() { Selezionato = false; Metadata = new FFmpegMetadata(); }
/// <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; }
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; }