C#过程从ffmpeg stdout获取图像

时间:2019-04-12 18:28:51

标签: c# ffmpeg process stdout

我们需要使用ffmpeg读取C#中的一些RTSP流,并将标准输出通过管道传递到MemoryStream。我们需要从每个流中获取快照。到目前为止,这是我的代码:

var arguments =
    $@" -y -i {imageUri.AbsoluteUri} -vframes 1 -pix_fmt yuvj420p -vf select='eq(pict_type\,I)' -q:v 1 pipe:1";

var processStartInfo = new ProcessStartInfo
{
    Arguments = arguments,
    FileName = AppDomain.CurrentDomain.BaseDirectory + @"\lib\ffmpeg.exe",
    CreateNoWindow = true,
    UseShellExecute = false,
    RedirectStandardOutput = true,
    RedirectStandardError = true
};
var process = new Process
{
    StartInfo = processStartInfo,
    EnableRaisingEvents = true
};

process.Start();
var output = process.StandardError.Read();
process.StandardOutput.BaseStream.CopyTo(memoryStream);

但在memoryStream.Length以上时,总是0。这是怎么回事?我已经看过了:How to get output from ffmpeg process in c#,但是我正在从stdout中读取二进制文件。这个答案几乎没有提供实施细节:https://stackoverflow.com/a/4535927/177416

不确定如何使用此答案:.NET Process - Redirect stdin and stdout without causing deadlock

0 个答案:

没有答案