如何直接从SQL Server高效地通过HTTP流式传输视频?

时间:2015-11-11 06:29:48

标签: asp.net sql-server video-streaming scalability

我正在尝试实施视频流服务。我使用ASP.NET Web API,正如我所搜索的,PushStreamContent正是我​​想要的,它工作得非常好,将HTTP响应206(部分内容)发送到客户端,保持连接活动并推送(写入)流输出的字节数。

然而,我无法扩展。因为我无法从数据库中检索部分二进制数据。例如,考虑我的SQL Server表(varbinary字段)中有300MB视频,我使用Entity Framework获取记录,然后使用PushStreamContent将其推送到客户端。

然而,这极大地影响了RAM。对于客户端执行的每个寻求操作,RAM使用另外600MB的空间。看看它的实际效果:

1)首先要求视频 enter image description here

2)第二个请求(寻找视频中间) enter image description here

3)第三个请求(寻求进入视频的最后一个季度) enter image description here

这根本无法扩展。观看这部电影的10位用户,我们的服务器已关闭。

我该怎么办?如何直接从SQL Server表流式传输视频,而无需将整个视频加载到具有Entity Framework的RAM中,然后通过PushStreamContent将其推送到客户端?

1 个答案:

答案 0 :(得分:0)

您可以将SUBSTRING功能与VARBINARY字段结合使用,以返回部分数据。但我怀疑你更喜欢不需要从一个块跳到下一个块的解决方案。

您可能还想查看此similar question