Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }
Ejemplo n.º 3
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 = 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);
            }
        }
Ejemplo n.º 4
0
        public int GetPropertyInt(string name)
        {
            string data = GetProperty(name);

            return((int)Globals.FloatParse(data));
        }
Ejemplo n.º 5
0
        public float GetPropertyFloat(string name)
        {
            string data = GetProperty(name);

            return(Globals.FloatParse(data));
        }