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

有没有一种方法可以在视频的特定点(例如 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 可能是最好的)。

https://stackoverflow.com/questions/3338354/

相关文章:

file - 如果文件长度相同,哈希冲突的可能性有多大?

PHP - 如何将页面标题添加到 URL?以及如何使用 PHP 创建干净的 url

python - python 中的 Rfc 1123

apache - 在 ReverseProxy 上下文中切换 SSLVerifyClient

orm - Eclipselink - 坚持后的ID仍然为空

git - 如何使用 ssh 将 repo 克隆到远程服务器

sql - 对于每个唯一的 A 列,什么 SQL 查询返回具有最新日期和时间(B 列和 C 列)的行

ejabberd - 如何阻止 ejabberd 使用 mnesia

open-source - 用于检测运行笔迹的开源

asp.net-mvc - ASP.Net MVC 2.0 : unescaping URL que