获取ffmpeg png输出为流(不是png文件)

时间:2017-12-08 12:17:43

标签: image ffmpeg stream output

在VB.NET中,我用ffmpeg

创建声音文件波形
ffmpeg -i input -filter_complex "showwavespic=s=640x240:split_channels=1" -frames:v 1 output.png

这段代码很好用。但我根本没有在PC上的写权限,我无法在任何地方创建output.png。我必须将output.png作为流并将其作为背景图像放到图片框中。

请有人帮助我。

2 个答案:

答案 0 :(得分:0)

基本方法是

ffmpeg -i input -filter_complex "..." -frames:v 1 -c:v png -f image2pipe -

这会将结果传输到stdout。

答案 1 :(得分:0)

我试图从视频中获取缩略图。以下C#代码用于返回图像作为Web API的响应。

public IActionResult VideoThumbnail([FromBody] JObject jObject)
{
    dynamic obj = jObject;
    var url = obj.path.ToString();

    FileStream stream = GetThumbnail(url) as FileStream;

    return File(stream, "image/bmp");
}

public static Stream GetThumbnail(string url)
{
    var cmd = "ffmpeg  -itsoffset -1  -i " + '"' + video + '"' + " -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 -";

    using (Process process = new Process())
    {
        var startInfo = new ProcessStartInfo
        {
            WindowStyle = ProcessWindowStyle.Hidden,
            FileName = "cmd.exe",
            Arguments = "/C " + cmd,
            RedirectStandardOutput = true,
            RedirectStandardError = true
        };

        process.StartInfo = startInfo;
        process.Start();
        Stream stream = process.StandardOutput.BaseStream;
        process.WaitForExit(5000);

        return stream;
    }
}