【问题标题】:Play videos from memory stream从内存流中播放视频
【发布时间】:2012-09-06 12:05:46
【问题描述】:

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

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

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

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

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

DirectShow 或 VLC 之类的建议几乎不需要视频渲染、过滤器、图表等方面的专业学位,除非有工作示例。

有什么想法吗?

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2015-07-01
        • 1970-01-01
        • 2014-04-09
        • 2014-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多