예제 #1
0
        public static bool TryParse(FFprobeObject rawValue, out FFprobeFraction value)
        {
            try
            {
                if (rawValue == null)
                {
                    value = null;
                    return false;
                }

                var splitValues = rawValue.Value.ToString().Split(new string[] {"/"}, StringSplitOptions.RemoveEmptyEntries);

                var numerator = 0;
                var denominator = 0;
                if (!int.TryParse(splitValues[0], out numerator))
                {
                    value = null;
                    return false;
                }
                if (!int.TryParse(splitValues[1], out denominator))
                {
                    value = null;
                    return false;
                }

                value = new FFprobeFraction(numerator, denominator);

                return true;
            }
            catch (Exception err)
            {
                value = null;
                return false;
            }
        }
예제 #2
0
        public IFFprobeValue Get(FFprobeCodecTypes ffprobeCodecType, int streamIndex, string key)
        {
            var streamResultItems = Results.Where(r => r.Type == "STREAM").ToList();

            if (!streamResultItems.Any())
            {
                return(null);
            }

            var codecTypeObject  = FFprobeObject.Create(ffprobeCodecType.ToString().ToLower());
            var codecResultItems = Results.Where(r => r.ValuePairs.Any(vp => vp.Key == "codec_type" && vp.Value.Equals(codecTypeObject))).ToList();

            if (!codecResultItems.Any())
            {
                return(null);
            }

            if (codecResultItems.Count <= streamIndex)
            {
                return(null);
            }

            var streamData      = codecResultItems.ElementAt(streamIndex);
            var streamDataValue = streamData.ValuePairs.FirstOrDefault(vp => vp.Key == key);

            return(streamDataValue == null ? null : streamDataValue.Value);
        }
예제 #3
0
        public static FFprobeKeyValuePair SerializeAsFFprobeLong(List <FFprobeKeyValuePair> inputValuePairs, string key)
        {
            var inputValuePair = inputValuePairs.FirstOrDefault(ivp => ivp.Key == key);

            if (inputValuePair == null)
            {
                return(null);
            }

            var ffprobeObject = inputValuePair.Value as FFprobeObject;

            if (ffprobeObject == null)
            {
                return(null);
            }

            long value;

            if (!long.TryParse(ffprobeObject.Value.ToString(), out value))
            {
                return(null);
            }

            return(FFprobeKeyValuePair.Create(key, FFprobeObject.Create(value)));
        }
예제 #4
0
        public int GetCount(FFprobeCodecTypes ffprobeCodecType)
        {
            var streamResultItems = Results.Where(r => r.Type == "STREAM").ToList();

            if (!streamResultItems.Any())
            {
                return(0);
            }

            var codecTypeObject  = FFprobeObject.Create(ffprobeCodecType.ToString().ToLower());
            var codecResultItems = Results.Where(r => r.ValuePairs.Any(vp => vp.Key == "codec_type" && vp.Value.Equals(codecTypeObject))).ToList();

            return(codecResultItems.Count);
        }
예제 #5
0
        public static FFprobeKeyValuePair Create(string key, object value)
        {
            var rawObject = FFprobeObject.Create(value);

            return(new FFprobeKeyValuePair(key, rawObject));
        }