播放内存流中的video

到目前为止在任何地方找不到任何满意的答案……

我正在开发一个C#WinForms .NET3.5应用程序,它需要从数据库BLOB加载video文件并在应用程序窗口中播放它。 数据库是本地文件(不涉及服务器)。

我不认为将文件保存到硬盘驱动器是一个很好的解决方案,因为它可能很耗时,而且我已经将文件放在内存流中了。

我需要能够播放尽可能多的video格式(编解码器?)。 包括divX,XVid,mpeg,avi,3gp等。

我正在寻找易于使用的工作代码示例或现有的第三方组件。

像DirectShow或VLC这样的建议几乎不需要video渲染,filter,图形和什么不是主要学位,除非有一个工作样本,否则这些建议是不可能的。

有任何想法吗?

谢谢。

你是对的最流行的方法是使用DirectShow,但在这种情况下你必须建立图形等。如果你没有这方面的经验,开始使用DirectShow并不容易。

另一个相当丰富的想法(以及你写的“一般想法”)是挂钩文件调用,如ReadFile和SetFilePointer,并将这些调用转换为memorystream的方法(Read,Seek),因此调用代码会认为它适用于真正存在的文件。

例如,这篇文章展示了如何播放由块加密的块video,无需解密整个文件,并且不会将解密的块丢弃到磁盘: http : //boxedapp.com/encrypted_video_streaming.html

您应该能够通过在VLC上编写一个瘦包装器(我假设您使用托管代码)然后使用invmem和imem来完成此操作。 给出了一些传递输入的例子,可以在这里和这里找到