将FFMPEG PNG输出作为流(而不是PNG文件)



在vb.net中,我正在使用ffmpeg

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

此代码效果很好。但是我根本没有PC上的写入权,也无法在任何地方创建output.png。我必须获取输出。

有人可以帮我。

基本方法是

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

这将通过Stdout流传输结果。

我试图从视频中获得缩略图。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;
    }
}

最新更新