如何将video的第一帧保存为图像?

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

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

您可以将FFMPEG用作单独的进程(最简单的方法),并让它为您解码第一个IDR。 在这里你有一个具有GetThumbnail()方法的类FFMPEG,你传递video文件的地址,要制作的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包装器。

尝试使参数字符串格式如下:

 ffmpeg.StartInfo.Arguments =" -ic:\MyPath\MyVideo -vframes 1 c:\MyOutputPath\MyImage%d.jpg" 

代替

 ffmpeg.StartInfo.Arguments = " -i " + input+ (parametri != null? " "+parametri:"")+" "+output; 

在上面提供的答案代码中。

我不知道是什么原因,但第二个提到的参数行不能在我的机器上工作,而当我像第一个命令一样改变参数时,它工作正常。

FFMpeg可能是以编程方式处理video的最佳工具。 它支持多种格式,甚至是wmv。 我怀疑它甚至还有一个.net包装器 。