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

问题描述 投票:1回答:2

在VB.NET中,我用ffmpeg创建声音文件波形

ffmpeg -i input -filter_complex "showwavespic=s=640x240:split_channels=1" -frames:v 1 output.png

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

有谁可以帮助我吗。

image ffmpeg stream output
2个回答
0
投票

基本方法是

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

这将通过stdout传输结果。


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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.