【问题标题】:Capture a frame from a video (mpg, wmv, etc) at a specific time interval以特定时间间隔从视频(mpg、wmv 等)中捕获帧
【发布时间】:2010-07-30 00:42:21
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net video image


    【解决方案1】:

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

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

    您的图表应如下所示:

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

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

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

    【讨论】:

      【解决方案2】:

      FFMPEG.net是您的最佳选择

      【讨论】:

      • 这些都不是很好的选择; .NET 太笼统了,无法构成任何合理的答案。
      • 您是否按照他的链接看到他指的是 FFMPEGdotnet 项目,即 FFMPEG 的 .net 版本。
      • @kidjan .. 我在我的视频托管网站中使用 FFMPEG 和 .net 来生成缩略图。请在投票前检查内容:)
      猜你喜欢
      • 2019-03-29
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多