4

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

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

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

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

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

DirectShow 或 VLC 之类的建议几乎需要在视频渲染、过滤器、图形和其他方面拥有专业学位,除非有工作样本,否则这些建议是不可能的。

有任何想法吗?

谢谢你。

4

2 回答 2

2

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

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

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

于 2014-08-14T18:30:26.047 回答
0

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

于 2013-01-31T16:38:20.590 回答