FFmpegArgsBuilder.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System.Collections.Generic;
  2. namespace Vinno.IUS.Common.Media.FFmpeg.ArgsBuilder
  3. {
  4. class FFmpegArgsBuilder
  5. {
  6. private readonly List<FFmpegInputArgs> _inputs = new List<FFmpegInputArgs>();
  7. private readonly List<FFmpegOutputArgs> _outputs = new List<FFmpegOutputArgs>();
  8. public FFmpegInputArgs AddInputFile(string fileName)
  9. {
  10. var input = new FFmpegInputArgs($"\"{fileName}\"");
  11. _inputs.Add(input);
  12. return input;
  13. }
  14. public FFmpegInputArgs AddStdIn()
  15. {
  16. var input = new FFmpegInputArgs("-");
  17. _inputs.Add(input);
  18. return input;
  19. }
  20. public FFmpegOutputArgs AddOutputFile(string fileName)
  21. {
  22. var output = new FFmpegOutputArgs($"\"{fileName}\"");
  23. _outputs.Add(output);
  24. return output;
  25. }
  26. public FFmpegOutputArgs AddStdOut()
  27. {
  28. var output = new FFmpegOutputArgs("-");
  29. _outputs.Add(output);
  30. return output;
  31. }
  32. public string GetArgs()
  33. {
  34. var args = new List<string>();
  35. foreach (var input in _inputs)
  36. {
  37. args.Add(input.GetArgs());
  38. }
  39. foreach (var output in _outputs)
  40. {
  41. args.Add(output.GetArgs());
  42. }
  43. return string.Join(" ", args);
  44. }
  45. }
  46. }