捕获每个WPF MediaElement框架

有没有办法捕获每个WPF MediaElement框架? 就像在每个渲染帧中触发的事件一样,允许我访问它。 如果MediaElement没有提供这样的function,那么它如何实现或者我可以使用什么其他控件? 另外,是否有这样的控制或方法可以通过帧捕获实现媒体剪辑的屏幕外快速渲染? (所以我可以尽快处理帧)

试试我的WPF MediaKit项目。 允许您使用Media在WPF中执行几乎任何操作。 试用MediaDetector.cs,它允许您随时从媒体中提取帧。 这是一个小小的马车,因为我从来没有花很多时间,但应该为你需要的东西工作。

没有内置的WPF方式:

  • MediaElement没有此function。
  • BitmapDecoder有API来请求它,但是没有实现使用BitmapDecoder从任意媒体中提取帧:它只能从几个动画位图格式中提取帧,如.gif。

我能够使用DirectShow从.mpg,.wmv,.mov,.flv,.avi和其他电影格式中获取帧图像。 我使用DirectShow的COM图形构建器接口构建了一个filter图形。 生成的filter图形解码了电影并将其连接到用C#编写的自定义渲染器filter。 我的自定义filter接收到帧数据并将其转换为BitmapSource对象,以便使用BitmapSource.Create进行显示。

DirectShow解决方案表现相当不错,管理到非托管转换并不是什么大不了的事,但需要一段时间才能弄清楚DirectShow图形构建的细节。