public bool TryGetPropertyInt(string name, out int value) { value = 0; try { string data; int returnValue = InternalGetProperty(name, out data); if (returnValue < 0) { return(false); } value = (int)Globals.FloatParse(data); } catch { return(false); } return(true); }
public void Execute() { /* * Reads the values of the video (width, heigth, fps...) and stores them * into file_values. * * Returns (False,AUDIO) if the file is not a video (with AUDIO the number * of audio tracks) * * Returns (True,0) if the file is a right video file */ BackendPrograms mplayerLocation = new BackendPrograms(mplayerPath); int audio = 0; int video = 0; int nframes = 1; int minimum_audio = 10000; _AudioList = new List <int> (); _AudioTracks = new List <AudioTrackInfo> (); _SubtitleList = new List <SubtitlesInfo> (); // if CHECK_AUDIO is TRUE, we just check if it's an audio file //if check_audio: // nframes=0 //else: // nframes=1 using (var handle = new System.Diagnostics.Process()) { handle.StartInfo.UseShellExecute = false; handle.StartInfo.CreateNoWindow = true; handle.StartInfo.RedirectStandardOutput = true; handle.StartInfo.RedirectStandardError = true; handle.StartInfo.FileName = mplayerLocation.MPlayer; handle.StartInfo.Arguments = string.Format("-loop 1 -identify -ao null -vo null -frames 0 {0} \"{1}\"", nframes.ToString(), filePath); handle.Start(); string line = ""; StringReader strReader = new StringReader(handle.StandardOutput.ReadToEnd()); while ((line = strReader.ReadLine()) != null) //while (handle.HasExited == false) { if (line.Trim() == "") { continue; } int position = line.IndexOf("ID_"); if (position == -1) { continue; } line = line.Substring(position); if (line.StartsWith("ID_VIDEO_BITRATE")) { _VideoBitrate = Globals.IntParse(line.Substring(17)) / 1000; // kilobits per second } else if (line.StartsWith("ID_VIDEO_WIDTH")) { _Width = Globals.IntParse(line.Substring(15)); } else if (line.StartsWith("ID_VIDEO_HEIGHT")) { _Height = Globals.IntParse(line.Substring(16)); } else if (line.StartsWith("ID_VIDEO_ASPECT")) { _AspectRatio = Globals.FloatParse(line.Substring(16)); } else if (line.StartsWith("ID_VIDEO_FPS")) { _fps = (int)Globals.FloatParse(line.Substring(13)); } else if (line.StartsWith("ID_AUDIO_BITRATE")) { _AudioBitrate = Globals.IntParse(line.Substring(17)) / 1000; // kilobits per second } else if (line.StartsWith("ID_AUDIO_RATE")) { _AudioRate = Globals.IntParse(line.Substring(14)); } else if (line.StartsWith("ID_LENGTH")) { _Length = (int)Globals.FloatParse(line.Substring(10)); } else if (line.StartsWith("ID_VIDEO_ID")) { video += 1; _Video = true; } else if (line.StartsWith("ID_AUDIO_ID")) { audio += 1; _Audio = true; int audio_track = Globals.IntParse(line.Substring(12)); if (minimum_audio > audio_track) { minimum_audio = audio_track; } _AudioList.Add(audio_track); AudioTrackInfo info = new AudioTrackInfo(); info.ID = audio_track; _AudioTracks.Add(info); } else if (line.StartsWith("ID_AID_") && line.Substring(9, 4) == "LANG") { if (_AudioTracks.Count > 0) { string value = line.Substring(14); _AudioTracks [_AudioTracks.Count - 1].Language = value; } } else if (line.StartsWith("ID_AID_") && line.Substring(9, 4) == "NAME") { if (_AudioTracks.Count > 0) { string value = line.Substring(14); _AudioTracks [_AudioTracks.Count - 1].Name = value; } } else if (line.StartsWith("ID_SUBTITLE_ID")) { int value = Globals.IntParse(line.Substring(15)); SubtitlesInfo info = new SubtitlesInfo(); info.ID = value; _SubtitleList.Add(info); } else if (line.StartsWith("ID_SID_") && line.Substring(9, 4) == "LANG") { if (_SubtitleList.Count > 0) { string value = line.Substring(14); _SubtitleList [_SubtitleList.Count - 1].Language = value; } } else if (line.StartsWith("ID_SID_") && line.Substring(9, 4) == "NAME") { if (_SubtitleList.Count > 0) { string value = line.Substring(14); _SubtitleList [_SubtitleList.Count - 1].Name = value; } } } handle.WaitForExit(); handle.Close(); } if (_AspectRatio == 0.0) { _AspectRatio = ((float)_Width / (float)_Height); if (_AspectRatio <= 1.5) { _AspectRatio = (ScreenAspectRatio.FourThree); } } }
/// <summary> /// All mplayer standard output is read through this function. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void HandleMediaPlayerOutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e) { if (e.Data != null) { string line = e.Data.ToString(); if (line.StartsWith("EOF code:", StringComparison.Ordinal)) { this._finalfilecode = line.Substring("EOF code:".Length); if (this._finalfilecode != null) { this.Finalfile?.Invoke(this, new MplayerEvent(this._finalfilecode)); } } else if (line.Contains("Scanning file") || line.Contains("get_path")) { this._scanning = line; if (this._scanning != null) { this.Scanfonts?.Invoke(this, new MplayerEvent(this._scanning)); } } else if (line.StartsWith("ID_FILE_SUB_FILENAME=", StringComparison.Ordinal)) { this._filesub = line.Substring("ID_FILE_SUB_FILENAME=".Length); if (this._filesub != null) { this.Filesub?.Invoke(this, new MplayerEvent(this._filesub)); } } else if (line.StartsWith("ID_AID_", StringComparison.Ordinal)) { this._audiochannel = line.Substring("ID_AID_".Length); if (this._audiochannel != null) { this.Audiochannel?.Invoke(this, new MplayerEvent(this._audiochannel)); } } else if (line.StartsWith("ID_SID_", StringComparison.Ordinal)) { this._setaudiolang = line.Substring("ID_SID_".Length); if (this._setaudiolang != null) { this.Setaudiolang?.Invoke(this, new MplayerEvent(this._setaudiolang)); } } else if (line.StartsWith("ANS_PERCENT_POSITION=", StringComparison.Ordinal)) { this._percentpos = line.Substring("ANS_PERCENT_POSITION=".Length); } else if (line.StartsWith("Cache fill:", StringComparison.Ordinal)) { this._cache = line.Substring("Cache fill:".Length); if (this._cache != null) { this.Cache?.Invoke(this, new MplayerEvent(this._cache)); } } else if (line.StartsWith("ANS_AUDIO_BITRATE=", StringComparison.Ordinal)) //audio bitrate { this._getfileinfofilename = line.Substring("ANS_AUDIO_BITRATE=".Length); } else if (line.StartsWith("ANS_AUDIO_CODEC=", StringComparison.Ordinal)) //audio codec { this._getfileinfofilename = line.Substring("ANS_AUDIO_CODEC=".Length); } else if (line.StartsWith("ANS_AUDIO_SAMPLES=", StringComparison.Ordinal)) //audio sample { this._getfileinfofilename = line.Substring("ANS_AUDIO_SAMPLES=".Length); } else if (line.StartsWith("ANS_FILENAME=")) //audio filename { this._getfileinfofilename = line.Substring("ANS_FILENAME=".Length); } else if (line.StartsWith("ANS_META_ALBUM=")) //album { this._getfileinfofilename = line.Substring("ANS_META_ALBUM=".Length); } else if (line.StartsWith("ANS_META_ARTIST=", StringComparison.Ordinal)) //artista { this._getfileinfofilename = line.Substring("ANS_META_ARTIST=".Length); } else if (line.StartsWith("ANS_META_COMMENT=", StringComparison.Ordinal)) //comentarios { this._getfileinfofilename = line.Substring("ANS_META_COMMENT=".Length); } else if (line.StartsWith("ANS_META_GENRE=", StringComparison.Ordinal)) //genero { this._getfileinfofilename = line.Substring("ANS_META_GENRE=".Length); } else if (line.StartsWith("ANS_META_TITLE=", StringComparison.Ordinal)) //titulo { this._getinfotitle = line.Substring("ANS_META_TITLE=".Length); } else if (line.StartsWith("ANS_META_TRACK=", StringComparison.Ordinal)) //track { this._getfileinfofilename = line.Substring("ANS_META_TRACK=".Length); } else if (line.StartsWith("ANS_META_YEAR=", StringComparison.Ordinal)) //ano { this._getfileinfofilename = line.Substring("ANS_META_YEAR=".Length); } else if (line.StartsWith("ANS_VIDEO_BITRATE=", StringComparison.Ordinal)) //video bitrate { this._getfileinfofilename = line.Substring("ANS_VIDEO_BITRATE=".Length); } else if (line.StartsWith("ANS_VIDEO_RESOLUTION=", StringComparison.Ordinal)) //video resoluçao { this._getfileinfofilename = line.Substring("ANS_VIDEO_RESOLUTION=".Length); } else if (line.StartsWith("ANS_TIME_POSITION=", StringComparison.Ordinal)) { this._currentPosition = Globals.FloatParse(line.Substring("ANS_TIME_POSITION=".Length)); this.CurrentPosition?.Invoke(this, new MplayerEvent(this._currentPosition)); } else if (line.StartsWith("ANS_length=", StringComparison.Ordinal)) { this._totalTime = (int)Globals.FloatParse(line.Substring("ANS_length=".Length)); } else if (line.StartsWith("Exiting", StringComparison.Ordinal) || line.ToLower().StartsWith("eof code", StringComparison.Ordinal)) { this.VideoExited?.Invoke(this, new MplayerEvent("Exiting File")); } //System.Console.WriteLine(line); } }
public int GetPropertyInt(string name) { string data = GetProperty(name); return((int)Globals.FloatParse(data)); }
public float GetPropertyFloat(string name) { string data = GetProperty(name); return(Globals.FloatParse(data)); }