Exemplo n.º 1
0
        /// <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 = (int)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);
            }
        }