c# - 如何将视频的第一帧保存为图像?

标签 c# asp.net video image-extraction

我想提取上传视频的第一帧并将其保存为图像文件。
可能的视频格式有 mpeg、avi 和 wmv。

还需要考虑的一件事是我们正在创建一个 ASP.NET 网站。

最佳答案

您可以将 FFMPEG 用作单独的进程(最简单的方法)并让它首先为您解码 IDR。在这里,您有一个具有 GetThumbnail() 方法的 FFMPEG 类,您可以将视频文件的地址、要制作的 JPEG 图像的地址以及您希望图像的分辨率传递给它:

using System.Diagnostics;
using System.Threading; 

public class FFMPEG
{
    Process ffmpeg;

    public void exec(string input, string output, string parametri)
    {
        ffmpeg = new Process();

        ffmpeg.StartInfo.Arguments = " -i " + input+ (parametri != null? " "+parametri:"")+" "+output; 
        ffmpeg.StartInfo.FileName = "utils/ffmpeg.exe";
        ffmpeg.StartInfo.UseShellExecute = false;
        ffmpeg.StartInfo.RedirectStandardOutput = true;
        ffmpeg.StartInfo.RedirectStandardError = true;
        ffmpeg.StartInfo.CreateNoWindow = true;

        ffmpeg.Start();
        ffmpeg.WaitForExit();
        ffmpeg.Close();     
    }


    public void GetThumbnail(string video, string jpg, string velicina)
    {
        if (velicina == null) velicina = "640x480";
        exec(video, jpg, "-s "+velicina);
    }
}

像这样使用:

FFMPEG f = new FFMPEG();
f.GetThumbnail("videos/myvid.wmv", "images/thumb.jpg", "1200x223");

为此,您必须在文件夹/utils 中有 ffmpeg.exe,或更改代码以找到 ffmpeg.exe。

还有其他方法可以在 .NET 中使用 FFMPEG,例如 .NET 包装器,您可以通过谷歌搜索它们。他们基本上在这里做同样的事情,只是更好。因此,如果 FFMPEG 可以完成您的工作,我建议您使用 .NET 包装器。

关于c# - 如何将视频的第一帧保存为图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3575311/

相关文章:

java - 为什么最佳实践因 OOP 中的静态类而异?

从另一个项目复制文件后 ASP.NET 解析器错误消息 : Could not load type 'search' .

batch-file - 按长度对视频进行排序,需要效率,如果可能的话还需要可靠性

c - 流搜索顺序对 ffmpeg av_seek_frame() 有影响吗?

c# - Linq Sum 与 group by

c# - Visual Studio 2015 添加发布版本号

jquery - 返回 Json 会导致 asp.net mvc 中的保存文件对话框

c# - 如何在不使用响应过滤器的情况下修改 ASP.NET 中的标记

javascript - 强制浏览器更新缓存的 HTML5 视频对象

c# - EPPlus 的通用 Excel 生成器函数