【问题标题】:How to efficiently stream video over HTTP directly from SQL Server?如何直接从 SQL Server 通过 HTTP 有效地流式传输视频?
【发布时间】:2016-02-12 05:41:12
【问题描述】:

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

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

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

1) 首次请求视频

2) 第二次请求(寻找到视频中间)

3) 第三次请求(搜索视频的最后一个季度)

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

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

【问题讨论】:

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


    【解决方案1】:

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

    您可能还想查看此similar question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 2011-08-01
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 2017-09-04
      • 1970-01-01
      相关资源
      最近更新 更多