我希望能够从上传的视频中提取第一帧并保存为图像文件。
可能的视频格式包括mpeg,avi和wmv。
还有一点需要考虑,那就是我们正在创建一个ASP.NET网站。
我希望能够从上传的视频中提取第一帧并保存为图像文件。
可能的视频格式包括mpeg,avi和wmv。
还有一点需要考虑,那就是我们正在创建一个ASP.NET网站。
您可以将FFMPEG作为单独的进程(最简单的方法)使用,并让它先为您解码第一个IDR。这里有一个名为FFMPEG的类,它具有GetThumbnail()方法,您可以向其中传递视频文件地址、要生成的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");
尝试将参数字符串格式化为以下形式:
ffmpeg.StartInfo.Arguments =" -i c:\MyPath\MyVideo -vframes 1 c:\MyOutputPath\MyImage%d.jpg"
与其
ffmpeg.StartInfo.Arguments = " -i " + input+ (parametri != null? " "+parametri:"")+" "+output;
在上面提供的答案代码中。
我不知道原因是什么,但是第二个提到的参数行在我的机器上不起作用,而当我像第一个命令一样更改参数时,它就可以正常工作。