有没有办法可以在视频中的特定点(例如5秒或25帧)从视频文件(mpg,wmv,flv等)中捕获单个帧?然后将其保存为图像?
[编辑] YouTube确实提供了一些链接。这不能全部手动完成吗? ;)
答案 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)