public string GetConversionString(MediaFile input, MediaFile output, ConversionOptions options) { var parameters = new FFmpegParameters { Task = FFmpegTask.Convert, InputFile = input, OutputFile = output, ConversionOptions = options }; var argumentBuilder = new FFmpegArgumentBuilder(); var arguments = argumentBuilder.Build(parameters); return(arguments); }
private static StringBuilder AppendVideoFormat(StringBuilder commandBuilder, ConversionOptions conversionOptions) { if (conversionOptions.VideoFormat != VideoFormat.Default) { var format = conversionOptions.VideoFormat.ToString().ToLowerInvariant(); if (format.StartsWith("_")) { format = format.Replace("_", ""); } commandBuilder.AppendFormat(" -f {0} ", format); } return(commandBuilder); }
private static StringBuilder AppendVideoSize(StringBuilder commandBuilder, ConversionOptions conversionOptions) { if (conversionOptions.VideoSize == VideoSize.Custom) { commandBuilder.AppendFormat(" -vf \"scale={0}:{1}\" ", conversionOptions.CustomWidth ?? -2, conversionOptions.CustomHeight ?? -2); } else if (conversionOptions.VideoSize != VideoSize.Default) { var size = conversionOptions.VideoSize.ToString().ToLowerInvariant(); if (size.StartsWith("_")) { size = size.Replace("_", ""); } if (size.Contains("_")) { size = size.Replace("_", "-"); } commandBuilder.AppendFormat(" -s {0} ", size); } return(commandBuilder); }
private static string Convert(MediaFile inputFile, MediaFile outputFile, ConversionOptions conversionOptions) { var commandBuilder = new StringBuilder(); // Default conversion if (conversionOptions == null) { return(commandBuilder.AppendFormat(" -i \"{0}\" \"{1}\" ", inputFile.FileInfo.FullName, outputFile.FileInfo.FullName).ToString()); } if (conversionOptions.PreArgs != null) { commandBuilder.AppendFormat(" {0} ", conversionOptions.PreArgs); } //if (conversionOptions.PreArgs.Count > 0) //{ // string preargs = ""; // for (int i = 0; i < conversionOptions.PreArgs.Count; i++) // { // preargs += $" {conversionOptions.PreArgs[i]} "; // } // commandBuilder.AppendFormat(preargs); //} // Input frame rate if (conversionOptions.InputFps != null) { commandBuilder.AppendFormat(CultureInfo.InvariantCulture, " -framerate {0} ", conversionOptions.InputFps.ToString()); } // Media seek position if (conversionOptions.Seek != null) { commandBuilder.AppendFormat(CultureInfo.InvariantCulture, " -ss {0} ", conversionOptions.Seek.Value.TotalSeconds); } commandBuilder.AppendFormat(" -i \"{0}\" ", inputFile.FileInfo.FullName); if (conversionOptions.SecondInput != null) { if (conversionOptions.Seek != null) { commandBuilder.AppendFormat(CultureInfo.InvariantCulture, " -ss {0} ", conversionOptions.Seek.Value.TotalSeconds); } commandBuilder.AppendFormat(" -i \"{0}\" ", conversionOptions.SecondInput.FileInfo.FullName); } foreach (var mapping in conversionOptions.Mappings) { commandBuilder.AppendFormat(" -{0} ", mapping.ToString()); } // Physical media conversion (DVD etc) if (conversionOptions.Target != Target.Default) { commandBuilder.Append(" -target "); if (conversionOptions.TargetStandard != TargetStandard.Default) { commandBuilder.AppendFormat(" {0}-{1} \"{2}\" ", conversionOptions.TargetStandard.ToString().ToLowerInvariant(), conversionOptions.Target.ToString().ToLowerInvariant(), outputFile.FileInfo.FullName); return(commandBuilder.ToString()); } commandBuilder.AppendFormat(" {0} \"{1}\" ", conversionOptions.Target.ToString().ToLowerInvariant(), outputFile.FileInfo.FullName); return(commandBuilder.ToString()); } if (conversionOptions.TimeCode != null) { commandBuilder.AppendFormat(" -timecode {0} ", conversionOptions.TimeCode); } // Video Encoder if (conversionOptions.VideoEncoder != null) { if (conversionOptions.VideoEncoder.Encoder == VideoCodec.None) { commandBuilder.AppendFormat(" -vn"); } else { var encoderDefaults = conversionOptions.VideoEncoder; commandBuilder.AppendFormat(" -c:v {0} {1}", encoderDefaults.Encoder, encoderDefaults.OutputArgs); if (encoderDefaults.QualityMode != null) { if (conversionOptions.QualityVideo >= encoderDefaults.QualityMin && conversionOptions.QualityVideo <= encoderDefaults.QualityMax) { commandBuilder.AppendFormat(" -{0} {1}{2}", encoderDefaults.QualityMode, conversionOptions.QualityVideo.ToString(), encoderDefaults.QualityPostfix); } else { commandBuilder.AppendFormat(" -{0} {1}{2}", encoderDefaults.QualityMode, encoderDefaults.QualityDefault.ToString(), encoderDefaults.QualityPostfix); } if (conversionOptions.VideoMinBitRate != null) { commandBuilder.AppendFormat(" -minrate {0}{1}", conversionOptions.VideoMinBitRate.ToString(), encoderDefaults.QualityPostfix); } if (conversionOptions.VideoMaxBitRate != null) { commandBuilder.AppendFormat(" -maxrate {0}{1}", conversionOptions.VideoMaxBitRate.ToString(), encoderDefaults.QualityPostfix); } if (conversionOptions.VideoBufferBitRate != null) { commandBuilder.AppendFormat(" -bufsize {0}{1}", conversionOptions.VideoBufferBitRate.ToString(), encoderDefaults.QualityPostfix); } } if (conversionOptions.PixFmt != "") { commandBuilder.AppendFormat(" -pix_fmt {0}", conversionOptions.PixFmt); } else if (encoderDefaults.PixFmt != "") { commandBuilder.AppendFormat(" -pix_fmt {0}", encoderDefaults.PixFmt); } } } // Audio Encoder if (conversionOptions.AudioEncoder != null) { if (conversionOptions.AudioEncoder.Encoder == AudioCodec.None) { commandBuilder.AppendFormat(" -an"); } else { var encoderDefaults = conversionOptions.AudioEncoder; commandBuilder.AppendFormat(" -c:a {0} {1}", encoderDefaults.Encoder, encoderDefaults.OutputArgs); if (encoderDefaults.QualityMode != null) { if (conversionOptions.QualityAudio >= encoderDefaults.QualityMin && conversionOptions.QualityAudio <= encoderDefaults.QualityMax) { commandBuilder.AppendFormat(" -{0} {1}{2}", encoderDefaults.QualityMode, conversionOptions.QualityAudio.ToString(), encoderDefaults.QualityPostfix); } else { commandBuilder.AppendFormat(" -{0} {1}{2}", encoderDefaults.QualityMode, encoderDefaults.QualityDefault.ToString(), encoderDefaults.QualityPostfix); } } } } // Audio bit rate if (conversionOptions.AudioBitRate != null) { commandBuilder.AppendFormat(" -ab {0}k", conversionOptions.AudioBitRate); } // Audio sample rate if (conversionOptions.AudioSampleRate != AudioSampleRate.Default) { commandBuilder.AppendFormat(" -ar {0} ", conversionOptions.AudioSampleRate.ToString().Replace("Hz", "")); } // Maximum video duration if (conversionOptions.MaxVideoDuration != null) { commandBuilder.AppendFormat(" -t {0} ", conversionOptions.MaxVideoDuration); } // Video bit rate if (conversionOptions.VideoBitRate != null) { commandBuilder.AppendFormat(" -b {0}k ", conversionOptions.VideoBitRate); } // Video frame rate if (conversionOptions.VideoFps != null) { commandBuilder.AppendFormat(" -r {0} ", conversionOptions.VideoFps); } // Video size / resolution if (conversionOptions.VideoSize == VideoSize.Custom) { commandBuilder.AppendFormat(" -vf \"scale={0}:{1}\" ", conversionOptions.CustomWidth ?? -2, conversionOptions.CustomHeight ?? -2); } else if (conversionOptions.VideoSize != VideoSize.Default) { var size = conversionOptions.VideoSize.ToString().ToLowerInvariant(); if (size.StartsWith("_")) { size = size.Replace("_", ""); } if (size.Contains("_")) { size = size.Replace("_", "-"); } commandBuilder.AppendFormat(" -s {0} ", size); } // Video Filters if (conversionOptions.VideoFilters.Count > 0) { string vf = " -vf \""; for (int i = 0; i < conversionOptions.VideoFilters.Count; i++) { vf += conversionOptions.VideoFilters[i]; if (i < conversionOptions.VideoFilters.Count - 1) { vf += ","; } } vf += "\" "; commandBuilder.AppendFormat(vf); } // Video aspect ratio if (conversionOptions.VideoAspectRatio != VideoAspectRatio.Default) { var ratio = conversionOptions.VideoAspectRatio.ToString(); ratio = ratio.Substring(1); ratio = ratio.Replace("_", ":"); commandBuilder.AppendFormat(" -aspect {0} ", ratio); } // Video cropping if (conversionOptions.SourceCrop != null) { var crop = conversionOptions.SourceCrop; commandBuilder.AppendFormat(" -filter:v \"crop={0}:{1}:{2}:{3}\" ", crop.Width, crop.Height, crop.X, crop.Y); } if (conversionOptions.BaselineProfile) { commandBuilder.Append(" -profile:v baseline "); } return(commandBuilder.AppendFormat(" \"{0}\" ", outputFile.FileInfo.FullName).ToString()); }
private static string GetThumbnail(MediaFile inputFile, MediaFile outputFile, ConversionOptions conversionOptions) { var defaultTimeSpan = TimeSpan.FromSeconds(1); var commandBuilder = new StringBuilder(); commandBuilder.AppendFormat(CultureInfo.InvariantCulture, " -ss {0} ", conversionOptions?.Seek.GetValueOrDefault(defaultTimeSpan).TotalSeconds ?? defaultTimeSpan.TotalSeconds); commandBuilder.AppendFormat(" -i \"{0}\" ", inputFile.FileInfo.FullName); commandBuilder.AppendFormat(" -vframes {0} ", 1); return(commandBuilder.AppendFormat(" \"{0}\" ", outputFile.FileInfo.FullName).ToString()); }
private static string Convert(MediaFile inputFile, MediaFile outputFile, ConversionOptions conversionOptions) { var commandBuilder = new StringBuilder(); // Default conversion if (conversionOptions == null) { return(commandBuilder.AppendFormat(" -i \"{0}\" \"{1}\" ", inputFile.FileInfo.FullName, outputFile.FileInfo.FullName).ToString()); } // Media seek position if (conversionOptions.Seek != null) { commandBuilder.AppendFormat(CultureInfo.InvariantCulture, " -ss {0} ", conversionOptions.Seek.Value.TotalSeconds); } commandBuilder.AppendFormat(" -i \"{0}\" ", inputFile.FileInfo.FullName); // Physical media conversion (DVD etc) if (conversionOptions.Target != Target.Default) { commandBuilder.Append(" -target "); if (conversionOptions.TargetStandard != TargetStandard.Default) { commandBuilder.AppendFormat(" {0}-{1} \"{2}\" ", conversionOptions.TargetStandard.ToString().ToLowerInvariant(), conversionOptions.Target.ToString().ToLowerInvariant(), outputFile.FileInfo.FullName); return(commandBuilder.ToString()); } commandBuilder.AppendFormat("{0} \"{1}\" ", conversionOptions.Target.ToString().ToLowerInvariant(), outputFile.FileInfo.FullName); return(commandBuilder.ToString()); } // Audio bit rate if (conversionOptions.AudioBitRate != null) { commandBuilder.AppendFormat(" -ab {0}k", conversionOptions.AudioBitRate); } // Audio sample rate if (conversionOptions.AudioSampleRate != AudioSampleRate.Default) { commandBuilder.AppendFormat(" -ar {0} ", conversionOptions.AudioSampleRate.ToString().Replace("Hz", "")); } // Maximum video duration if (conversionOptions.MaxVideoDuration != null) { commandBuilder.AppendFormat(" -t {0} ", conversionOptions.MaxVideoDuration); } // Video bit rate if (conversionOptions.VideoBitRate != null) { commandBuilder.AppendFormat(" -b {0}k ", conversionOptions.VideoBitRate); } // AudioChannel if (conversionOptions.AudioChannel != null) { commandBuilder.AppendFormat(" -ac {0} ", conversionOptions.AudioChannel); } // Video frame rate if (conversionOptions.VideoFps != null) { commandBuilder.AppendFormat(" -r {0} ", conversionOptions.VideoFps); } // Video size / resolution commandBuilder = AppendVideoSize(commandBuilder, conversionOptions); // Video aspect ratio commandBuilder = AppendVideoAspectRatio(commandBuilder, conversionOptions); // Video cropping commandBuilder = AppendVideoCropping(commandBuilder, conversionOptions); if (conversionOptions.BaselineProfile) { commandBuilder.Append(" -profile:v baseline "); } return(commandBuilder.AppendFormat(" \"{0}\" ", outputFile.FileInfo.FullName).ToString()); }
private static StringBuilder AppendVideoAspectRatio(StringBuilder commandBuilder, ConversionOptions conversionOptions) { if (conversionOptions.VideoAspectRatio != VideoAspectRatio.Default) { var ratio = conversionOptions.VideoAspectRatio.ToString(); ratio = ratio.Substring(1); ratio = ratio.Replace("_", ":"); commandBuilder.AppendFormat(" -aspect {0} ", ratio); } return(commandBuilder); }
private static StringBuilder AppendVideoCropping(StringBuilder commandBuilder, ConversionOptions conversionOptions) { if (conversionOptions.SourceCrop != null) { var crop = conversionOptions.SourceCrop; commandBuilder.AppendFormat(" -filter:v \"crop={0}:{1}:{2}:{3}\" ", crop.Width, crop.Height, crop.X, crop.Y); } return(commandBuilder); }
private static string Convert(MediaFile inputFile, MediaFile outputFile, ConversionOptions conversionOptions) { var commandBuilder = new StringBuilder(); // Default conversion if (conversionOptions == null) { return(commandBuilder.AppendFormat(" -i \"{0}\" \"{1}\" ", inputFile.FileInfo.FullName, outputFile.FileInfo.FullName).ToString()); } if (conversionOptions.HideBanner) { commandBuilder.Append(" -hide_banner "); } if (conversionOptions.Threads != 0) { commandBuilder.AppendFormat(" -threads {0} ", conversionOptions.Threads); } // HW Accel if (conversionOptions.HWAccel != HWAccel.None) { commandBuilder.AppendFormat(" -hwaccel {0} ", conversionOptions.HWAccel); AppendHWAccelOutputFormat(commandBuilder, conversionOptions); } // Media seek position if (conversionOptions.Seek != null) { commandBuilder.AppendFormat(CultureInfo.InvariantCulture, " -ss {0} ", conversionOptions.Seek.Value.TotalSeconds); } commandBuilder.AppendFormat(" -i \"{0}\" ", inputFile.FileInfo.FullName); // Physical media conversion (DVD etc) if (conversionOptions.Target != Target.Default) { commandBuilder.Append(" -target "); if (conversionOptions.TargetStandard != TargetStandard.Default) { commandBuilder.AppendFormat(" {0}-{1} \"{2}\" ", conversionOptions.TargetStandard.ToString().ToLowerInvariant(), conversionOptions.Target.ToString().ToLowerInvariant(), outputFile.FileInfo.FullName); return(commandBuilder.ToString()); } commandBuilder.AppendFormat("{0} \"{1}\" ", conversionOptions.Target.ToString().ToLowerInvariant(), outputFile.FileInfo.FullName); return(commandBuilder.ToString()); } // Video Format commandBuilder = AppendVideoFormat(commandBuilder, conversionOptions); // Video Codec commandBuilder = AppendVideoCodec(commandBuilder, conversionOptions); // Video Codec Preset if (conversionOptions.VideoCodecPreset != VideoCodecPreset.Default) { commandBuilder.AppendFormat(" -preset {0} ", conversionOptions.VideoCodecPreset); } // Video Codec Profile if (conversionOptions.VideoCodecProfile != VideoCodecProfile.Default) { commandBuilder.AppendFormat(" -profile:v {0} ", conversionOptions.VideoCodecProfile); } // Video Time Scale if (conversionOptions.VideoTimeScale != null && conversionOptions.VideoTimeScale != 1) { commandBuilder.AppendFormat(" -filter:v \"setpts = {0} * PTS\" ", conversionOptions.VideoTimeScale.ToString().Replace(",", ".")); } // Maximum video duration if (conversionOptions.MaxVideoDuration != null) { commandBuilder.AppendFormat(" -t {0} ", conversionOptions.MaxVideoDuration); } // Video bit rate if (conversionOptions.VideoBitRate != null) { commandBuilder.AppendFormat(" -b:v {0}k ", conversionOptions.VideoBitRate); } // Video frame rate if (conversionOptions.VideoFps != null) { commandBuilder.AppendFormat(" -r {0} ", conversionOptions.VideoFps); } // Video pixel format if (conversionOptions.PixelFormat != null) { commandBuilder.AppendFormat(" -pix_fmt {0} ", conversionOptions.PixelFormat); } // Video size / resolution commandBuilder = AppendVideoSize(commandBuilder, conversionOptions); // Video aspect ratio commandBuilder = AppendVideoAspectRatio(commandBuilder, conversionOptions); // Video cropping commandBuilder = AppendVideoCropping(commandBuilder, conversionOptions); #region Audio // Audio bit rate if (conversionOptions.AudioBitRate != null) { commandBuilder.AppendFormat(" -ab {0}k", conversionOptions.AudioBitRate); } // Audio sample rate if (conversionOptions.AudioSampleRate != AudioSampleRate.Default) { commandBuilder.AppendFormat(" -ar {0} ", conversionOptions.AudioSampleRate.ToString().Replace("Hz", "")); } // AudioChannel if (conversionOptions.AudioChanel != null) { commandBuilder.AppendFormat(" -ac {0} ", conversionOptions.AudioChanel); } // Remove Audio if (conversionOptions.RemoveAudio) { commandBuilder.Append(" -an "); } #endregion if (conversionOptions.MapMetadata) { commandBuilder.Append(" -map_metadata 0 "); } // Extra arguments if (conversionOptions.ExtraArguments != null) { commandBuilder.AppendFormat(" {0} ", conversionOptions.ExtraArguments); } return(commandBuilder.AppendFormat(" \"{0}\" ", outputFile.FileInfo.FullName).ToString()); }
private static string Convert(MediaFile inputFile, MediaFile outputFile, ConversionOptions conversionOptions) { var commandBuilder = new StringBuilder(); // Default conversion if (conversionOptions == null) { return(commandBuilder.AppendFormat(" -i \"{0}\" \"{1}\" ", inputFile.FileInfo.FullName, outputFile.FileInfo.FullName).ToString()); } // Media seek position if (conversionOptions.Seek != null) { commandBuilder.AppendFormat(CultureInfo.InvariantCulture, " -ss {0} ", conversionOptions.Seek.Value.TotalSeconds); } commandBuilder.AppendFormat(" -i \"{0}\" ", inputFile.FileInfo.FullName); // Physical media conversion (DVD etc) if (conversionOptions.Target != Target.Default) { commandBuilder.Append(" -target "); if (conversionOptions.TargetStandard != TargetStandard.Default) { commandBuilder.AppendFormat(" {0}-{1} \"{2}\" ", conversionOptions.TargetStandard.ToString().ToLowerInvariant(), conversionOptions.Target.ToString().ToLowerInvariant(), outputFile.FileInfo.FullName); return(commandBuilder.ToString()); } commandBuilder.AppendFormat("{0} \"{1}\" ", conversionOptions.Target.ToString().ToLowerInvariant(), outputFile.FileInfo.FullName); return(commandBuilder.ToString()); } // Audio bit rate if (conversionOptions.AudioBitRate != null) { commandBuilder.AppendFormat(" -ab {0}k", conversionOptions.AudioBitRate); } // Audio sample rate if (conversionOptions.AudioSampleRate != AudioSampleRate.Default) { commandBuilder.AppendFormat(" -ar {0} ", conversionOptions.AudioSampleRate.ToString().Replace("Hz", "")); } // Maximum video duration if (conversionOptions.MaxVideoDuration != null) { commandBuilder.AppendFormat(" -t {0} ", conversionOptions.MaxVideoDuration); } // Video bit rate if (conversionOptions.VideoBitRate != null) { commandBuilder.AppendFormat(" -b {0}k ", conversionOptions.VideoBitRate); } // Video frame rate if (conversionOptions.VideoFps != null) { commandBuilder.AppendFormat(" -r {0} ", conversionOptions.VideoFps); } // Video size / resolution if (conversionOptions.VideoSize == VideoSize.Custom) { commandBuilder.AppendFormat(" -vf \"scale={0}:{1}\" ", conversionOptions.CustomWidth ?? -2, conversionOptions.CustomHeight ?? -2); } else if (conversionOptions.VideoSize != VideoSize.Default) { var size = conversionOptions.VideoSize.ToString().ToLowerInvariant(); if (size.StartsWith("_")) { size = size.Replace("_", ""); } if (size.Contains("_")) { size = size.Replace("_", "-"); } commandBuilder.AppendFormat(" -s {0} ", size); } // Video aspect ratio if (conversionOptions.VideoAspectRatio != VideoAspectRatio.Default) { var ratio = conversionOptions.VideoAspectRatio.ToString(); ratio = ratio.Substring(1); ratio = ratio.Replace("_", ":"); commandBuilder.AppendFormat(" -aspect {0} ", ratio); } // Video cropping if (conversionOptions.SourceCrop != null) { var crop = conversionOptions.SourceCrop; commandBuilder.AppendFormat(" -filter:v \"crop={0}:{1}:{2}:{3}\" ", crop.Width, crop.Height, crop.X, crop.Y); } if (conversionOptions.BaselineProfile) { commandBuilder.Append(" -profile:v baseline "); } if (!string.IsNullOrEmpty(conversionOptions.FFmpegDrawTextArgs)) { commandBuilder.AppendFormat(" -vf drawtext=\"{0}\" ", conversionOptions.FFmpegDrawTextArgs); } if (!string.IsNullOrEmpty(conversionOptions.ExtraFFmpegArgs)) { commandBuilder.AppendFormat(" {0} ", conversionOptions.ExtraFFmpegArgs); } return(commandBuilder.AppendFormat(" \"{0}\" ", outputFile.FileInfo.FullName).ToString()); }
private static string GetThumbnail(MediaFile inputFile, MediaFile outputFile, ConversionOptions conversionOptions) { var defaultTimeSpan = TimeSpan.FromSeconds(1); var commandBuilder = new StringBuilder(); commandBuilder.AppendFormat(CultureInfo.InvariantCulture, " -ss {0} ", conversionOptions?.Seek.GetValueOrDefault(defaultTimeSpan).TotalSeconds ?? defaultTimeSpan.TotalSeconds); commandBuilder.AppendFormat(" -i \"{0}\" ", inputFile.FileInfo.FullName); commandBuilder.AppendFormat(" -vframes {0} ", 1); // Video size / resolution if (conversionOptions.VideoSize == VideoSize.Custom) { commandBuilder.AppendFormat(" -s {0}:{1} ", conversionOptions.CustomWidth ?? 100, conversionOptions.CustomHeight ?? 100); } if (!string.IsNullOrEmpty(conversionOptions.FFmpegDrawTextArgs)) { commandBuilder.AppendFormat(" -vf drawtext=\"{0}\" ", conversionOptions.FFmpegDrawTextArgs); } if (!string.IsNullOrEmpty(conversionOptions.ExtraFFmpegArgs)) { commandBuilder.AppendFormat(" {0} ", conversionOptions.ExtraFFmpegArgs); } return(commandBuilder.AppendFormat(" \"{0}\" ", outputFile.FileInfo.FullName).ToString()); }
public async Task <MediaFile> ConvertAsync(MediaFile input, MediaFile output, ConversionOptions options, CancellationToken?cancellationToken = null) { var parameters = new FFmpegParameters { Task = FFmpegTask.Convert, InputFile = input, OutputFile = output, ConversionOptions = options }; await ExecuteAsync(parameters, cancellationToken); return(parameters.OutputFile); }
public async Task <MediaFile> GetThumbnailAsync(MediaFile input, MediaFile output, ConversionOptions options, CancellationToken cancellationToken = default) { var parameters = new FFmpegParameters { Task = FFmpegTask.GetThumbnail, InputFile = input, OutputFile = output, ConversionOptions = options }; await ExecuteAsync(parameters, cancellationToken); return(parameters.OutputFile); }
public async Task <MediaFile> ConvertAsync(InputFile input, OutputFile output, ConversionOptions options, CancellationToken cancellationToken) { var parameters = new FFmpegParameters { Task = FFmpegTask.Convert, Input = input, Output = output, ConversionOptions = options }; await ExecuteAsync(parameters, cancellationToken).ConfigureAwait(false); return(output); }