public static FFprobeSerializerResult Serialize(ICommandProcessor processor) { if (processor.Status == CommandProcessorStatus.Faulted) { return(null); } var standardOutputString = processor.StdOut; var serializerResult = FFprobeSerializerResult.Create(); var serializers = new List <IFFprobeSerializer> { new FFprobeStreamSerializer(), new FFprobeFormatSerializer() }; serializers.ForEach(serializer => { var serializerStartIndex = 0; while (serializerStartIndex > -1) { var searchingStartTag = string.Format("[{0}]", serializer.Tag); var searchingEndTag = string.Format("[/{0}]", serializer.Tag); var startTagIndex = standardOutputString.IndexOf(searchingStartTag, serializerStartIndex, StringComparison.OrdinalIgnoreCase); if (startTagIndex == -1) { break; } var endTagIndex = standardOutputString.IndexOf(searchingEndTag, startTagIndex + 1, StringComparison.OrdinalIgnoreCase); if (endTagIndex == -1) { break; } var startAt = startTagIndex + searchingStartTag.Length; var lengthOf = endTagIndex - startAt; var unserializedValueString = standardOutputString.Substring(startAt, lengthOf); var rawSerializedValues = FFprobeGeneralSerializer.Serialize(unserializedValueString); var serializedValues = serializer.Serialize(rawSerializedValues); if (serializedValues != null) { var serializerResultItem = FFprobeSerializerResultItem.Create(serializer.Tag, serializedValues); serializerResult.Results.Add(serializerResultItem); } serializerStartIndex = endTagIndex; } }); return(serializerResult); }
public List <FFprobeKeyValuePair> Serialize(List <FFprobeKeyValuePair> rawSerializedValues) { var returnValues = new List <FFprobeKeyValuePair>(); //serialize the values that we want to capture var encodeApplication = FFprobeGeneralSerializer.SerializeAsFFprobeString(rawSerializedValues, "TAG:encoder"); if (encodeApplication != null) { returnValues.Add(encodeApplication); } return(returnValues); }
public List <FFprobeKeyValuePair> Serialize(List <FFprobeKeyValuePair> rawSerializedValues) { var returnValues = new List <FFprobeKeyValuePair>(); //serialize the values that we want to capture var codecType = FFprobeGeneralSerializer.SerializeAsFFprobeString(rawSerializedValues, "codec_type"); if (codecType != null) { returnValues.Add(codecType); } var timebase = FFprobeGeneralSerializer.SerializeAsFFprobeFraction(rawSerializedValues, "time_base"); if (timebase != null) { returnValues.Add(timebase); } var frameRate = FFprobeGeneralSerializer.SerializeAsFFprobeFraction(rawSerializedValues, "r_frame_rate"); if (frameRate != null) { returnValues.Add(frameRate); } var avgFrameRate = FFprobeGeneralSerializer.SerializeAsFFprobeFraction(rawSerializedValues, "avg_frame_rate"); if (avgFrameRate != null) { returnValues.Add(avgFrameRate); } var duration = FFprobeGeneralSerializer.SerializeAsFFprobeDouble(rawSerializedValues, "duration"); if (duration != null) { returnValues.Add(duration); } var bitrate = FFprobeGeneralSerializer.SerializeAsFFprobeLong(rawSerializedValues, "bit_rate"); if (bitrate != null) { returnValues.Add(bitrate); } var width = FFprobeGeneralSerializer.SerializeAsFFprobeInt(rawSerializedValues, "width"); if (width != null) { returnValues.Add(width); } var height = FFprobeGeneralSerializer.SerializeAsFFprobeInt(rawSerializedValues, "height"); if (height != null) { returnValues.Add(height); } return(returnValues); }