使用带有 FFMpeg 的管道作为输入

use*_*862 2 .net c# ffmpeg

我正在使用 FFMPEG 库来操作用户上传的视频。

public async Task ManageVide(IFormFile file)
{   
   ... process file
   string command = $"-i inputFile.mp4 -vf -s 800x600 outFile.mp4";
   ...
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用内存流作为 ffmpeg 命令的输入和输出?我在某处读到可以使用 ffmpeg 管道。但我不知道如何构造命令

public async Task ManageVide(MemoryStream stream)
{   
    string command = $"-i pipe:{stream} -vf -s 800x600 test.mp4";
    ...
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*h K 5

我一直在使用CliWrap库来处理 FFMPEG。一个从内存流读取和写入的简单示例:

await Cli.Wrap("Path/to/exe")
         .WithArguments(arguments)
         .WithStandardInputPipe(PipeSource.FromStream(source))
         .WithStandardOutputPipe(PipeTarget.ToStream(destinationStream))
         .ExecuteAsync(cancellationToken);

destinationStream.Position = 0;
Run Code Online (Sandbox Code Playgroud)