播放内存流中的视频

时间:2012-09-13 11:52:34

标签: c# winforms video .net-3.5 memorystream

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

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

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

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

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

除非有工作样本,否则像DirectShow或VLC这样的建议几乎不需要视频渲染,过滤器,图形以及什么样的东西都是不可能的。

有什么想法吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

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

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

例如,这里有一篇文章,展示了如何播放由块加密的块视频,在不解密整个文件的情况下播放,并且不将解密的块丢弃到磁盘: http://boxedapp.com/encrypted_video_streaming.html

答案 1 :(得分:0)

你应该能够通过在VLC上编写一个瘦包装器(我假设你在托管代码中)然后使用invmem和imem来做到这一点。给出一些传递输入的例子可以在以下位置找到: herehere

相关问题