从内存流中播放视频

本文关键字:播放 视频 内存 | 更新日期: 2025-05-08 15:07:09

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

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

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

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

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

像DirectShow或VLC这样要求几乎拥有视频渲染、过滤器、图形等专业学位的建议是不可能的,除非有工作样本。

有什么想法吗?

谢谢。

从内存流中播放视频

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

另一个非常丰富的想法(也是您所写的"一般想法")是挂接ReadFile和SetFilePointer等文件调用,并将这些调用转换为内存流的方法(Read,Seek),因此调用代码会认为它可以与真正现有的文件一起工作。

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

您应该能够通过在VLC上编写一个瘦包装器(我假设您在托管代码中)来实现这一点,然后使用invmem和imem。以下是传递输入的一些示例:此处和此处