以特定时间间隔从视频(mpg,wmv等)捕获帧

时间:2010-07-26 19:39:39

标签: c# .net video image

有没有办法可以在视频中的特定点(例如5秒或25帧)从视频文件(mpg,wmv,flv等)中捕获单个帧?然后将其保存为图像?

[编辑] YouTube确实提供了一些链接。这不能全部手动完成吗? ;)

2 个答案:

答案 0 :(得分:3)

我使用DirectShow.NET,因为它会让你在托管代码中做很多工作,这比在本机代码中执行它更友好。

你必须构建一个过滤器图形来渲染你想要的文件,你还需要一个文件阅读器来获取文件的格式(即如果它是一个MP4文件,你需要一个MP4 demux) ,你需要一个视频格式的解码器(即如果它是H264,你需要一个H264解码器滤波器)。如果可能,我会使用Windows7,它有更好的媒体支持

您的图表应如下所示:

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

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

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

答案 1 :(得分:2)

FFMPEG.net是您的最佳选择