将视频流保存到数据库的表中

将视频流保存到数据库的表中

问题描述:

我想将流视频保存到我的数据库中,我想知道SQL-Server中的数据类型适合保存视频流吗?将视频流保存到数据库的表中

编辑:请注意,我使用EF4作为我的项目ORM。

任何建议将优雅。

谢谢。

+2

您希望将视频本身保存在数据库中的任何特定原因,而不仅仅是指向它的指针(如文件名)? – BrokenGlass

+1

这不是一个网络应用程序,原因是我不希望用户可以直接访问文件。这就是为什么我想将它们存储在数据库中。 – saber

+0

那么,有什么建议吗? – saber

对于存储BLOB(如视频数据),您可以在实体框架支持的SQL Server 2005中使用varbinary(MAX)数据类型。

请记住,每当您加载包含此列的实体时,EF会尝试将您的完整视频完全加载到内存中,EF中没有字节流模式 - 这意味着这不仅不能很好地扩展,而且会影响多个用户由于记忆要求也变得不可行,并且表现不佳。不要这样做 - 我会努力寻找更好的替代品。

+0

+1谢谢,你建议我做什么? – saber

+1

@ s.amani:基本上没有太多可以做的事情,因为这是一个桌面应用程序 - 无论您是否喜欢,用户已经可以访问您的视频。您唯一能做的就是让它变得更难,即您可以加密视频并在您将视频标题存储在单独位置时将其解密,并在运行时将其与视频的其余部分结合使用。根据视频文件格式的不同,这可能也可能不可行。 – BrokenGlass

+0

你提出了一个奇妙的提示,分离它的数据是一个好主意。 – saber

我们可以假设一个视频基本上是一个文件,您可以使用SQL 2008数据类型FILESTREAM

应该有大量的例子的时候,我发现这一点:

http://weblogs.asp.net/aghausman/archive/2009/03/16/saving-and-retrieving-file-using-filestream-sql-server-2008.aspx

+0

感谢您的回复,但我正在使用SQL-Server 2005. – saber

Download and Upload images from SQL Server via ASP.Net MVC。本文展示了如何为大型BLOB使用流语义(避免在内存中创建字节[]),并且您也可以在C#表单中使用实现,对于一般的ASP MVC或web来说,并不是特定的。

+0

谢谢Remus,这很有用。 – saber