private FFMpegArguments(IInputArgument inputArgument) { _inputArgument = inputArgument; _arguments = new List <IArgument> { inputArgument }; }
public async Task ConvertAsync(IInputArgument input, Stream output, ConversionOptions options, CancellationToken cancellationToken) { var pipeName = $"{_pipePrefix}{Guid.NewGuid()}"; var parameters = new FFmpegParameters { Task = FFmpegTask.Convert, Input = input, Output = new OutputPipe(GetPipePath(pipeName)), ConversionOptions = options }; var process = CreateProcess(parameters); var pipe = new NamedPipeServerStream(pipeName, PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous); await pipe.WaitForConnectionAsync(cancellationToken); await Task.WhenAll( pipe.CopyToAsync(output, cancellationToken), process.ExecuteAsync(cancellationToken).ContinueWith(x => { pipe.Disconnect(); pipe.Dispose(); }, cancellationToken) ).ConfigureAwait(false); Cleanup(process); }
private FFMpegArguments WithInput(IInputArgument inputArgument, Action <FFMpegArgumentOptions>?addArguments) { var arguments = new FFMpegArgumentOptions(); addArguments?.Invoke(arguments); Arguments.AddRange(arguments.Arguments); Arguments.Add(inputArgument); return(this); }
public async Task <Stream> ConvertAsync(IInputArgument input, ConversionOptions options, CancellationToken cancellationToken) { var ms = new MemoryStream(); await ConvertAsync(input, ms, options, cancellationToken).ConfigureAwait(false); ms.Position = 0; return(ms); }
internal ConversionProgressEventArgs(ProgressData progressData, IInputArgument input, IOutputArgument output, MediaInfo mediaInfo) { Input = input; Output = output; TotalDuration = progressData.TotalDuration; ProcessedDuration = progressData.ProcessedDuration; Frame = progressData.Frame; Fps = progressData.Fps; SizeKb = progressData.SizeKb; Bitrate = progressData.Bitrate; MediaInfo = mediaInfo; }
public ConversionDataEventArgs(string data, IInputArgument input, IOutputArgument output) { Data = data; Input = input; Output = output; }
public ConversionCompleteEventArgs(IInputArgument input, IOutputArgument output) { Input = input; Output = output; }
public ConversionErrorEventArgs(FFmpegException exception, IInputArgument input, IOutputArgument output) { Exception = exception; Input = input; Output = output; }