我正在尝试实施视频流服务。我使用ASP.NET Web API,正如我所搜索的,PushStreamContent正是我想要的,它工作得非常好,将HTTP响应206(部分内容)发送到客户端,保持连接活动并推送(写入)流输出的字节数。
然而,我无法扩展。因为我无法从数据库中检索部分二进制数据。例如,考虑我的SQL Server表(varbinary字段)中有300MB视频,我使用Entity Framework获取记录,然后使用PushStreamContent将其推送到客户端。
然而,这极大地影响了RAM。对于客户端执行的每个寻求操作,RAM使用另外600MB的空间。看看它的实际效果:
这根本无法扩展。观看这部电影的10位用户,我们的服务器已关闭。
我该怎么办?如何直接从SQL Server表流式传输视频,而无需将整个视频加载到具有Entity Framework的RAM中,然后通过PushStreamContent
将其推送到客户端?
答案 0 :(得分:0)
您可以将SUBSTRING功能与VARBINARY字段结合使用,以返回部分数据。但我怀疑你更喜欢不需要从一个块跳到下一个块的解决方案。
您可能还想查看此similar question。