探索一个简单的视频流服务架构
- 视频流服务是指实时传输视频数据的服务。 由于这些服务实时传输视频数据,因此需要技术来实时压缩和传输数据。这些技术包括视频捕获、压缩、编码、解码和播放。
- Netflix、Disney+、YouTube 和 Twitch 等服务是提供视频流服务的服务。这些服务被世界各地的许多用户使用并处理大量数据。由于网络的发展,流媒体服务越来越先进,提供4K、8K等高清视频的服务也不断涌现。
- 我对这些服务的结构很好奇,所以让我们看一下一个简单的视频流服务架构。根据服务的不同,它有不同的结构,但这次我们将看看一个简单的视频流服务架构。
- 实际服务要复杂得多,并且使用多种技术,因此仅供参考。
视频流服务架构
- 下面是一个简单的视频流服务架构。
- 视频流服务主要由发送视频数据的SendDevice、在服务器上处理视频数据的Server和接收视频数据的WatchDevice组成。
- 每个角色都执行以下角色。
- SendDevice:负责捕获和压缩视频数据。
- 服务器:负责处理和传输视频数据。
- WatchDevice:负责从服务器接收并播放视频数据。
视频流服务架构图
发送设备
- 在 Youtube 或 Twitch 等服务上进行广播时,SendDevice 可以是广播用户的计算机或移动设备。
- SendDevice负责捕获和压缩视频数据。 在这种结构中,捕获和压缩视频数据的过程就是实时处理视频数据的过程,因此需要高速和稳定。
- 视频数据在发送到服务器之前进行压缩的原因是为了节省网络带宽。 网络成本是一个需要大量资金的问题。由于视频数据是图像数据的延续,因此压缩图像数据可以节省带宽。
- 使用H.264、H.265等视频压缩编解码器和AAC、MP3等音频压缩编解码器压缩视频数据。
- 在SendDevice中,压缩视频数据被发送到服务器。
- 但是,在某些情况下,SendDevice 会在不压缩的情况下将视频数据传输到服务器。在这种情况下,需要在服务器上进行额外的视频数据压缩处理。
服务器
- 服务器负责处理和传输视频数据。 服务器接收视频数据,处理它,并将其传输给WatchDevice。
- 服务器可能由一台服务器或多台服务器组成。大规模服务由多台服务器组成。
- 预先准备540p、720p、1080p、4K等各种分辨率的视频数据,并根据用户请求传输适当分辨率的视频数据。
- 必须根据用户的网络条件传输适当分辨率的视频数据。
- 如果根据用户的请求传输适当分辨率的视频数据,用户可以快速观看视频。
- 根据用户请求传输适当分辨率的视频数据的过程称为自适应比特率流。
- 服务器接收并处理视频数据如下。
- 执行接收视频数据并将其分成片段的过程。
- 段是划分和传输视频数据的单位。 Segment被分成一定的长度并发送,WatchDevice接收并播放这些Segment。
- 将最初输入的视频数据划分为片段的过程称为分段。
- 分段使用 HTTP Live Streaming (HLS) 或 MPEG-DASH 等协议进行传输。
- 如果不分割视频数据,用户将无法快速播放视频。分段传输可以让用户快速播放视频。
- 将片段发送到 CDN。
- CDN 代表内容分发网络。
- CDN由分布在世界各地的服务器组成,可以快速地将内容传送给用户。
手表设备
- WatchDevice 负责从服务器接收并播放视频数据。 WatchDevice 可以是用户观看视频的电脑或移动设备。
- WatchDevice 从 CDN 接收片段并播放它们。片段是分成一定长度的视频数据。片段使用 HTTP Live Streaming (HLS) 或 MPEG-DASH 等协议进行传输。
- WatchDevice 接收该片段,对其进行解码并播放。解码是指对视频数据进行解码的过程,播放是指将视频数据显示在屏幕上的过程。