如何正确计算实时视频流所需的带宽?

How to properly calculate bandwidth needed for a live video stream?

比如说,我有一项实时视频流 运行 的服务。 例如,我的仓库中有一台高清彩色摄像机,我想将所有工作过程流式传输到一个站点,供 24/7 全天候观看者使用。

现在,相机将其流发送到我的服务器,服务器将其转换为 HTML 页面上的 canvas。如果服务器是本地的,我不关心摄像机向它发送多少数据,但我想知道有多少数据发送给观众。

那么,如果此时没有观众,就不会使用带宽,对吧?如果有 1000 个观众,那么它需要的带宽是 1 个观众的 1000 倍?如果有2个摄像头,那我应该乘以2?

我如何才能正确计算这些不同条件下的带宽需求,才能知道我要花多少钱?

a canvas on a HTML page

Canvas?考虑使用 <video> 标签,除非您有自己解码视频的奇怪要求。

So, if there are no viewers at the moment, no bandwidth is used, right?

摄像头仍会向服务器发送单个带宽流,但是,不会使用来自服务器的带宽。

If there are 1000 viewers, then it's 1000 times more bandwidth needed than for 1 viewer?

正确。

If there are 2 cameras, then I should multiply it by 2?

正确。

How can I properly calculate the bandwidth requirements for these different conditions to know how much it will cost me?

你的基础数学是正确的,但还有其他你没有考虑到的事情。如果您真的有 1,000 人,您可能还希望您的视频能够在各种浏览器和不同比特率下播放。如今,通常要对具有不同分辨率的 3 到 8 种不同比特率的视频进行编码。然后客户可以选择所需的比特率。对于编解码器,您通常可以在大多数设备上使用 H.264 和 AAC 音频。

如果这是一个 public 流,我建议只流式传输到 YouTube,让 Google 承担所有这些费用。如您所知,这会很快变得昂贵。