C#从wmv文件中获取帧

时间:2009-03-16 19:10:21

标签: c# directx wmv

有没有人知道是否可以使用C#从位置X上的视频(.wmv)中获取帧/图像,而无需安装DirectX并在Windows 2008上工作(我希望尽可能少地安装网络服务器)。

甚至使用directx的简单解决方案也可能很好。

亨克

3 个答案:

答案 0 :(得分:6)

您真正需要研究的是DirectShow,Windows的通用媒体(音频和视频)库。它曾经是DirectX的一部分,但几年前它已经分支并成为Windows(平台)SDK的一部分。我还应该在这里指出,自Windows Vista以来,它已被弃用,而不是Media Foundation。从我所看到的它是一个更好的库(DirectShow是复杂的任务的地狱),但不幸的是,由于缺乏对XP及更早版本的支持,目前仅针对媒体基金会并不可行......

我能做的最好的事情是指向DirectShow.NET,这是一个适用于DirectShow的.NET包装程序库,它目前相当稳定且经过良好测试。它包括各种样本,可以帮助您开始,但绝不是一个简单的解决方案。另外,我强烈建议您查看this CodeProject article /示例应用程序。它处理网络摄像头视频捕获和文件(包括WMV)的视频播放。有点玩弄它,并学习如何进行帧搜索/单帧捕获(我认为项目可能甚至一些代码来做到这一点)应该可以满足您的需求。也许您甚至可以在CodeProject应用程序的DirectShow.NET示例中找到精确的解决方案。

当然,如果我可以在这里,我会建议一个更简单的解决方案,但是你现在几乎感觉到DirectShow的可怕性。祝你好运!

答案 1 :(得分:1)

您应该尝试FFmpeg

答案 2 :(得分:0)

查看Windows Media Format SDK,它旨在让您可以直接访问WMV(/ WMA / ASF)文件中的帧。

http://msdn.microsoft.com/en-us/library/dd757738(VS.85).aspx

特别是,您对用于读取这些文件的同步API感兴趣(IWMSyncReader是接口名称)。 WMFSDK中有一些相当不错的样本;我相信这里最有趣的是WMSyncReader,它将向您展示如何从位置X开始挖掘WMV文件并获取帧。