如何在 .Net 中获取视频缩略图

本文关键字:视频 略图 获取 Net | 更新日期: 2023-09-27 17:47:22

我希望实现一个从输入视频中检索单个帧的功能,以便我可以将其用作缩略图。

沿着这些思路应该可以工作:

// filename examples: "test.avi", "test.dvr-ms"
// position is from 0 to 100 percent (0.0 to 1.0)
// returns a bitmap
byte[] GetVideoThumbnail(string filename, float position)
{
}

有谁知道如何在.Net 3.0中做到这一点?

正确的解决方案将是此函数的"最佳"实现。避免选择空白帧的奖励积分。

如何在 .Net 中获取视频缩略图

我最终推出了自己的独立类(使用我描述的单一方法),源代码可以在这里查看。媒体浏览器是GPL,但我很高兴我为该文件编写的代码是公共领域的。请记住,它使用 directshow.net 项目中的互操作,因此您必须使用它们清除该部分代码。

此类不适用于DVR-MS文件,您需要为这些文件注入直接显示过滤器。

这个项目将为 AVI 做一个技巧:http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx

任何其他格式,您可能会考虑直接显示。 有几个项目可能会有所帮助:

http://sourceforge.net/projects/directshownet/http://code.google.com/p/slimdx/

1- 获取最新版本的 ffmpeg.exe 来自 : http://ffmpeg.arrozcru.org/builds/

2-解压缩文件并将ffmpeg.exe复制到您的网站

3-使用此代码:

Process ffmpeg;
string video;
string thumb;
video = Server.MapPath("first.avi");
thumb = Server.MapPath("frame.jpg");
ffmpeg = new Process();
ffmpeg.StartInfo.Arguments = " -i "+video+" -ss 00:00:07 -vframes 1 -f image2 -vcodec mjpeg "+thumb;
ffmpeg.StartInfo.FileName = Server.MapPath("ffmpeg.exe");
ffmpeg.Start();

www.mitov.com 有一些库可能会有所帮助。它是 Directshow 功能的通用包装器,我认为其中一个演示展示了如何从视频文件中获取帧。

这也值得一看:

http://www.codeproject.com/Articles/13237/Extract-Frames-from-Video-Files