c# - 以特定时间间隔从视频(mpg、wmv 等)中捕获帧

标签 c# .net video image

有没有一种方法可以在视频的特定点(例如 5 秒或第 25 帧)从视频文件(mpg、wmv、flv 等)中捕获单个帧?然后保存为图片?

[编辑] YouTube 做的一些链接。不能全部手动完成吗? ;)

最佳答案

我会使用 DirectShow.NET ,因为它可以让您在托管代码中完成大量工作,这比在 native 代码中更友好。

你必须构建一个过滤器图来呈现你想要的文件,你还需要一个文件格式的文件阅读器(即如果它是一个 MP4 文件,你将需要一个 MP4 解复用器) ,并且您需要视频格式的解码器(即,如果是 H264,则需要 H264 解码器过滤器)。如果可能,我会使用 Windows7,它有更好的媒体支持

您的图表应该类似于:

File Reader -> Video Decoder -> Sample Grabber -> Null Renderer

您将构建图表,然后调用 IMediaSeeking寻找你想要的样本的大概时间。然后运行图形。解压缩的帧将通过 Sample Grabber 回调接口(interface)进入。您可以检查时间戳并获得最接近您需要的时间戳。

从那里,您可以使用 .NET 将其保存为您喜欢的任何图像格式(JPEG 可能是最好的)。

关于c# - 以特定时间间隔从视频(mpg、wmv 等)中捕获帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3338354/

相关文章:

c# - 更新面板和 Javascript

c# - 在 ASP.NET session 之外使用 HttpApplicationState

c# - ASP.net MVC dateFormat 验证问题,客户端验证

javascript - 创建 HTML5 视频磁贴

c++ - 在 Opencv 中以 UYVY 编解码器录制视频

c# - Rhino-Etl 和 MySQL 的问题

c# - 从 .NET/C# 中的站点下载图像

.net - 有人真正使用代码访问安全性来保护他们的程序集和/或方法吗?

c# - 如何忽略二进制序列化的事件类成员?

video - 如何使用 JavaScript SDK 分享视频?