如何从使用directx c# visual studio播放的视频中获取和处理每一帧(位图图像​​)

Posted

技术标签:

【中文标题】如何从使用directx c# visual studio播放的视频中获取和处理每一帧(位图图像​​)【英文标题】:how to get and handle each frame (bitmap images)from a video played using directx c# visual studio 【发布时间】:2014-12-30 07:57:09 【问题描述】:

我设计了一个 winform 应用程序 (c#) 来在图片框中使用 microsoft.directx.audiovideoplayback 播放视频。现在我想在播放视频时提取视频的每个帧或位图图像。有没有怎么实现呢?

【问题讨论】:

【参考方案1】:

视频播放(尤其是基于 AudioVideoPlayback)不使用位图流式传输和呈现视频。为了提取单个帧,您需要更强大的视频 API 来流式传输和解压缩视频。一种典型的方法是使用 DirectShow.NET 库(它和 AudioVideoPlayback 都在后端使用 DirectShow API)和 Sample Grabber 使用 SampleCB 回调获取单个帧。您在那里获得的数据可以转换为位图。

见:

Efficiently grabbing pixels from video

【讨论】:

感谢您的建议。我尝试使用 directshow.netlibrary 进行相同操作,但它需要使用名为“interop.quartztypelib.dll”或“quartztypelib.dll”的 dll 文件。这在 VISUAL STUDIO 中不可用2012 年,我在互联网上搜索,但找不到任何网站可以免费下载此 dll 文件。而且似乎这个特定的 dll 文件使用不安全或通常不推荐使用。是否有任何与使用此相关的风险因素dll 文件?请帮助我摆脱这种困惑,并提供一种安全下载此 dll 文件的方法。提前感谢您的帮助和时间。 标准 Windows API + DirectShow.NET 应该有你需要的一切。您可以开始检查其中包含的示例。

以上是关于如何从使用directx c# visual studio播放的视频中获取和处理每一帧(位图图像​​)的主要内容,如果未能解决你的问题,请参考以下文章

带有 Visual Studio 2012 Express 的 Directx 9

如何从 Visual Studio C# 使用 Office?

如何在 Visual Studio 中从数据库中获取数据(使用 C#)时使 HTML 行可点击

Visual c# 中的 _stat 替代方案

c# using Microsoft.DirectX.AudioVideoPlayback 如何在一个视频完成后播放下一个视频

如何在 Visual C# 中使用设置