【发布时间】:2010-07-30 00:42:21
【问题描述】:
有没有一种方法可以在视频的特定点(例如 5 秒或第 25 帧)从视频文件(mpg、wmv、flv 等)捕获单个帧?然后保存为图片?
[编辑] YouTube 所做的一些链接。这不能全部手动完成吗? ;)
【问题讨论】:
有没有一种方法可以在视频的特定点(例如 5 秒或第 25 帧)从视频文件(mpg、wmv、flv 等)捕获单个帧?然后保存为图片?
[编辑] YouTube 所做的一些链接。这不能全部手动完成吗? ;)
【问题讨论】:
我会使用DirectShow.NET,因为它可以让您在托管代码中完成大量工作,这比在本机代码中更友好。
您必须构建一个过滤器图来呈现您想要的文件,并且您还需要一个文件阅读器来了解文件的格式(即,如果它是一个 MP4 文件,您将需要一个 MP4 解复用器) ,并且您需要一个视频格式的解码器(即,如果它是 H264,您将需要一个 H264 解码器过滤器)。如果可能,我会使用 Windows7,它有更好的媒体支持。
您的图表应如下所示:
File Reader -> Video Decoder -> Sample Grabber -> Null Renderer
您将构建图表,然后调用IMediaSeeking 以查找所需样本的大致时间。然后运行图表。解压缩的帧将通过 Sample Grabber 回调接口进入。您可以检查时间戳并获取最接近您需要的时间戳。
从那里,您可以使用 .NET 将其保存为您喜欢的任何图像格式(JPEG 可能是最好的)。
【讨论】: