![我可能需要什么样的服务器设置? - 学校 A/V 流媒体](https://linux22.com/image/535628/%E6%88%91%E5%8F%AF%E8%83%BD%E9%9C%80%E8%A6%81%E4%BB%80%E4%B9%88%E6%A0%B7%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E7%BD%AE%EF%BC%9F%20-%20%E5%AD%A6%E6%A0%A1%20A%2FV%20%E6%B5%81%E5%AA%92%E4%BD%93.png)
我之前使用服务器的经验通常仅限于家庭文件共享服务器、低流量网络服务器等。这使我拥有如何设置系统的技术知识,但在扩展该系统方面经验不足。
然而,我目前的项目让我担任在线音频和视频流学校的技术主管。我遇到的困难是,我没有足够的经验来猜测他们需要什么,他们也没有经验告诉我——所以我试着问尽可能多的相关问题,了解他们想要什么做与他们的服务器,以下是我发现的情况:
- 大约有 1000 个同时用户,并希望扩大(可能大幅扩大)
- 视频和音频流均能达到最高质量
- 支持直播和基于播放列表的流媒体。
- 可能只有一个频道,但因为这是一个教育机会,我想让他们多几个也不会有什么坏处。(删除这个 - 我以为频道是指流,这很奇怪,因为我原本是一个音频人!)
- 尚不清楚它们是否被锁定在 Windows 中或 Linux 是否可以接受。
- 大概预算 - 7000 美元。实际上可能比这个少 2000 美元左右,因为另一家科技公司出了问题(他们出于某种原因订购了一台价值 7000 美元的 DV 磁带录像机,现在公司要他们支付 30% 的补货费)。
我已经做出的初步决定:
- 我计划使用 Icecast 2 作为我的流媒体服务器,由 VLC Shoutcast 编码提供支持。
- 由于学校已经设置了 DMZ,我计划将 Icecast 服务器放置在那里,并通过他们的工作室中的一台简单的工作站计算机通过他们的内联网为其提供数据。
- 这个系统在任何方面都不是关键任务 - 它是一种教育工具(他们是一所媒体磁石学校),所以我认为从成本效益的角度来看冗余对他们来说是不值得的。
我不知道的是:
- 我需要多强大的服务器?
- 我的主要瓶颈是什么——带宽?我该如何缓解它?
- 除了专业的视频和音频捕获卡以及 VLC 副本之外,我还需要编码工作站的任何特殊功能吗?
- 我还有什么没有考虑到的吗?
非常感谢您的帮助 - 如果您需要更多信息,请告诉我,我会告诉您我所能做的一切。
编辑1:
我希望以 OGG 或 MP3 格式发布 - 可能是 MP3,因为它得到了更广泛的支持(并且为小学生家长所熟悉)。
内容将由直播/预录的标准清晰度视频包组成(后者可能采用 Quicktime)。纯音频广播可能由 MP3 组成,经过转码以达到更易于管理的质量。DRM 不是问题,版权也不是问题(至少,版权不是问题)我的问题)。只要学生想广播某些内容,就会生成内容,但这种媒体的存储不应该成为问题。他们不是在这里生成原始电影镜头 - 他们是制作小型电视包的孩子 - 我会将 4 个 Terrabyte 硬盘放在工作站的 RAID 10 中,然后就结束了。
其余大部分内容似乎不太适用。最相关的部分是网络固有的限制。当我试图询问这些限制可能是什么时,他们真的不知道——因为他们从未真正对其进行过压力测试。他们的互联网连接主要用于为学生和教师提供标准互联网服务,并为一个可能在 90 年代建立的网站提供服务。我怀疑他们会花大价钱重新改造他们的 NAT 和前端系统——孩子们只能忍受他们现有的系统。
我认为我的服务器不必担心大量缓存或大量数据存储 - 它们只需从内部工作站/源客户端接收准备好的流,然后必须将流复制并分发给客户端。我预计在发现自己需要更多内存之前会遇到带宽瓶颈。
关于多播 - 我认为整个互联网都不支持它 - 外部客户端占我们潜在订阅者的绝大部分。我最大的问题有点简单 - 什么是一个适合这种应用的“像样的服务器”/服务器系统?我很难想象我需要多少台机器,以及它们需要具备哪些功能。有什么想法吗?提前谢谢。
答案1
我建立了 IPTV 系统,你不会喜欢它,但你面临着一项非常艰巨的任务,尤其是考虑到你的预算。
让我们一步一步地进行下去(如果您不介意的话,我的目标是将这个答案提供给更广泛的受众);
任何构建此类系统的人要做的第一件事就是根据位置、操作系统、播放器来定义其客户,最好了解客户端和服务器之间的网络方面 - 您已经做了很多这方面的事情。这很重要,因为它定义了服务器代码、编解码器、比特率以及您是否可以使用多播。
第二件事是了解您的内容;内容来自哪里、格式是什么、发布频率如何、版权问题、DRM 要求、需要多快提供以及需要保留多长时间。我想您已经了解了其中的一些内容,但您可能还可以问一些类似的问题。
这绝非易事,但根据上述两组问题的结果,您可以开始设计您的系统,同样从摄取点开始 - 您将如何重新编码(如果需要)您的内容,是否需要 QA,在哪里获得 DRM 标记,以及如果这很重要,您将如何处理暂时拥有未加密视频的风险。这个摄取/暂存系统需要提前考虑,您根本不想“手动”这个过程,因为它很快就会变得重复。
搞清楚这个系统后,您需要知道您的内容分类是如何进行的,以及摄取系统如何将其输入其中,还有您将如何发布这个目录以及如何删除“过时”的内容。然后,这个发布系统将启动客户端播放,并可能需要某种形式的授权检查系统,这会带来一些问题,我们可以下次再解决。
现在我们讨论您直接感兴趣的部分,流媒体服务器。
此时,您将了解您的用户群数据(谁、什么、哪里、何时、如何等),这将帮助您计算峰值带宽需求(通常是“峰值用户”x“最高比特率”)。
“最佳质量”这个说法有点用词不当,因为我敢肯定你指的不是“48 位 8k HD @60fps”,而是更像标清质量之类的,作为指导,我以大约 1.5Mbps 的速度进行标清,以大约 6Mbps 的速度进行高清,但这将由你的编解码器和要求决定。因此,举个例子,1,000 个用户播放 1.5Mbps 的单播流量显然等于 1.5Gbps,这就是难点所在。首先,你的网络、实际的中继和交换机本身能否持续提供这种性质的数据?你需要坐下来弄清楚你的弱点在哪里。你能否对这些数据进行 QoS 保护,以防止有人下载大量数据并破坏整个网络段的视频?还有一个事实是,如果您的 NIC 速度超过 1Gbps,您需要确保以正确的方式将它们组合起来,以便第二个和后续的组员实际上能够承载其份额的流量,或者转到 10Gb NIC。
然后我们进入我擅长的领域,存储 - 现在你已经计算出在开始时需要多少存储空间、内容增长速度、最大容量以及“流失率”(在一段时期内有多少内容进入和离开内容存储)。这将告诉你需要多少存储空间,但如果有 1,000 名用户都在查看一个相当大的内容目录,那么你必须非常密切地关注存储的缓存和随机读取能力。
如果您非常幸运,您的服务器可以缓存 100% 的内容,那么您很幸运,您只需要一台不错的服务器、大量内存和一个 64 位操作系统。如果您希望用户能够访问比您缓存的更大的内容存储,那么您需要确保您的存储系统能够持续满足您的峰值流媒体需求,例如上例中的 1.5Gbps。如何做到这一点取决于内容存储的大小,以及您是否需要多个流媒体服务器(如果确实需要,您必须弄清楚是否要对视频进行分片或共享)。
例如,您可以查看 SSD,但不要只看 500MBps 这样的“标题”数字,您需要的是可以进行 RAID 的 SSD 或磁盘,以确保峰值传输速度。市面上有很多 SSD 和磁盘非常适合工作站或低并发服务器,但是当您要求它们跟上 1,000 名用户的速度时,这些用户都在文件的不同位置提取大文件的小块 - 基本上它们跟不上,大多数缓存算法也跟不上 - 您必须知道,如果有必要,您的存储可以自行完成工作。
如果有任何安慰的话,实时流式传输部分要容易得多,但可能值得拥有自己的机器来处理捕获/加密/流式传输,而不是基于主要内容存储的服务器。你很幸运,因为你可能对网络有更好的了解,因为它听起来像一个封闭的系统,如果可以的话,你想确保你可以对此进行多播,否则你会遇到我上面描述的相同带宽管理问题,但缓存命中机会更好。
我希望这会有所帮助,就像我说的那样,我针对的不仅仅是这个问题,我可能会回来添加/编辑(一旦我喝了当天的第一杯茶!)。
答案2
流带宽取决于质量和接收端计算能力。您可以将目标设定为每客户端 0.5 Mbit/秒。这大约相当于采用 DivX 压缩的 DVD。
您应该尝试寻找一种解决方案,使服务器无需进行任何编码或转码,并且流已经是正确格式。尤其是不以客户端为基础。
高端硬件的成本会更高,如果出现故障,您就会陷入困境。尝试使用低于 1000 美元的低端服务器,并在需要时使用备用服务器。为服务器使用相同的系统磁盘映像是一个好主意。
如果只有流数据(没有编码/转码),瓶颈就来自网络接口(也可能是网络基础设施)。您应该计算不超过接口指定带宽的 10%,否则连接速度会变慢。
我不确定您所在地区的网络是否能够处理 500 Mbit/s 的额外流量(容量不到 10%)。如果没有,您可以尝试为每个位置设置服务器或减少带宽。您可以使用五台带有千兆以太网的服务器,但它们无法连接到具有单个千兆上行链路的集线器。
希望这可以帮助。
答案3
联系来自吝啬鬼科技,这很符合他们的风格,希望我们能从中得到一个播客 :-)