前段时间看了一个5岁~90岁的人生焦虑,其实焦虑源于在这个快速的社会,对面临问题感觉到束手无措、对未知知识的焦虑。但解决完一个焦虑后,发现我们所谓的知识就是另一个领域的常识。
今天我理一下视频播放中,如何实现播放操作,解决视觉领域的一个常识问题。
一、推流
将录制视频进行采集、编码、美颜处理后推送给直播服务器进行处理。将视频推送到服务器的这一过程就叫做推流。
二、拉流
服务器对传送过来的视频进行处理例如转码、录制、截图、鉴黄后将视频分发给正在观看直播的客户(播放器)。服务器将视频分发给客户端的这一过程就叫做拉流咯。
三、推流和拉流的关系
推流端和拉流端是1->N的关系,对于每一路推流,可以同时存在多个拉流端,即推流可以复用。当多个用户请求同一资源(如同一摄像头)时,只需要推一路流即可,这时候每个用户的拉流地址rtmp相同。推流和拉流之间需要流媒体服务器作为桥梁,负责实时流的转发工作,例如使用的时Nginx+rtmp module。
image.png如果多个用户需要播放同一个实时流数据,那么理想情况下,推流端的数据应该可以复用,也就是说,推流端只需要推一路流,供多个播放终端使用。此时推流端和播放端是一对N的关系。
image.png如果播放用户很多,推流端和播放端数量大,只靠一台流媒体服务器转发数据肯定不行。这时候需要多台流媒体服务器协同工作,当有多个流媒体服务器时,就会出现一个问题:当用户请求实时流,该如何为它分配流媒体服务器呢?此时,就会引入另外一个概念:负载均衡。当有多台流媒体服务器时,我们需要通过某种策略去计算,得出最适合的流媒体服务器,比如找出当前负载量最小的服务器,给用户使用。
image.png
网友评论