Beispiel #1
0
 private FFMpegArguments(IInputArgument inputArgument)
 {
     _inputArgument = inputArgument;
     _arguments     = new List <IArgument> {
         inputArgument
     };
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        private FFMpegArguments WithInput(IInputArgument inputArgument, Action <FFMpegArgumentOptions>?addArguments)
        {
            var arguments = new FFMpegArgumentOptions();

            addArguments?.Invoke(arguments);
            Arguments.AddRange(arguments.Arguments);
            Arguments.Add(inputArgument);
            return(this);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
 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;
 }
Beispiel #7
0
 public ConversionCompleteEventArgs(IInputArgument input, IOutputArgument output)
 {
     Input  = input;
     Output = output;
 }
 public ConversionErrorEventArgs(FFmpegException exception, IInputArgument input, IOutputArgument output)
 {
     Exception = exception;
     Input     = input;
     Output    = output;
 }