我想提取上传视频的第一帧并将其保存为图像文件 可能的视频格式是mpeg,avi和wmv。
还有一件事要考虑我们正在创建一个ASP.NET网站。
答案 0 :(得分:6)
您可以将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包装器。
答案 1 :(得分:3)
尝试将参数字符串格式设为:
ffmpeg.StartInfo.Arguments =" -i c:\MyPath\MyVideo -vframes 1 c:\MyOutputPath\MyImage%d.jpg"
而不是
ffmpeg.StartInfo.Arguments = " -i " + input+ (parametri != null? " "+parametri:"")+" "+output;
在上面提供的答案代码中。
我不知道是什么原因,但第二次提到的参数行不能在我的机器上工作,而当我像第一个命令一样改变参数时,它工作正常。
答案 2 :(得分:0)
以编程方式处理视频的最佳工具可能是FFMpeg。它支持多种格式,甚至是wmv。我怀疑它甚至有.net wrapper。