【入门】视频直播概览

开发环境:CentOS7, nginx, docker
想入门直播行业,学习直播技术,创业做直播公司,需要哪些技术栈,需要做哪些事情,本文做一个框架整理,帮助大家学习探索.


什么是视频直播

视频直播是指用户进行远距离画面互动,实时性更高,互动性更强,同时对技术和内容审核要求性也较高.
视频直播服务是基于领先的内容接入与分发网络和大规模分布式实时转码技术打造的音视频直播平台,提供便捷接入、高清流畅、低延迟、高并发的音视频直播服务.

基础概念

推流:主播端使用手机摄像头采集画面,然后进行编码压缩,采用高效的网络协议进行传送数据到流媒体服务中心.
流媒体服务中心: 负责视频内容接入,转码/封装/录制/截图,分发等功能.
内容审核:基于流媒体服务的内容做政治/鉴黄等审核,一般包括人工审核,机器审核两类.
拉流:观众端使用特定的网络协议拉取流媒体服务中心内容,进行解码/渲染.
音视频技术:音视频处理技术 + 网络传输技术(详情见 即时通讯音视频开发)

编码/解码解决内容传输过大,进行压缩处理;
转码解决视频清晰度,高清/低清,进行视频分辨率/码率转换
封装将转码后的视频封装成MP4,FLV等格式

封装格式与编码具有紧密的联系,但是一个格式却可以有不同的编码。编码和素材的质量、空间、占地大小与功能有很大的关系。所以在输出视频时,除了要选择输出的格式还要选择相应的编码才行

流媒体系统搭建

流媒体系统搭建有两种方式,自研搭建,使用三方服务快速集成,目前市面上的服务出色的有:即构,阿里云视频直播,声网。他们都提供一整套快速解决方案,从主播采集推流到流媒体服务,到播放器拉流,滤镜,连麦应有尽有,如果快速搭建业务可以根据自己的需要从三方服务中选择一家合作。
这里我们学习讨论,选择自研搭建方式

  • 使用nginx-rtmp 框架快速搭建
  • 使用 srs框架 搭建

这里我们推荐使用srs搭建,原因是网络传输协议:

  • rtmp/HTTP-FLV 协议: 基于TCP的协议,因为TCP协议自身特性(ACK确认机制重传慢,拥塞判断不准确,灵活性差),所以不适合低延迟场景;
  • HLS协议:编解码,网络,CDN均产生延迟,一般延迟10秒以上;
  • WebRTC: 底层基于RTCP实现,目前除了自研外比较好的实时传输协议,可以做到100-300毫秒的延迟,也是推荐的音视频传输方案,当然也有缺点,这里不讨论;

RTP/RTCP: RTP负责传送数据,RTCP负责控制信令传输;
TCP负责数据和控制信令,可靠;
UDP只负责数据传输无控制信令,不可靠;
RTP/RTCP将控制信令和数据信息分开传输,所以快,且可靠;

内容审核

由于政策法律风险,所以直播视频内容,音视频内容需要做内容审核,目前技术发展快速,可以使用AI自动审核,审核原理:视频截图进行图像识别,音频转文字,进行关键字命中;也可以进行人工审核;
目前市场上的内容审核三方服务有:

  • 数美
  • 网易同盾
  • 百度
  • 腾讯
  • 阿里
    可以根据需要,进行选择,这里推荐数美

备注:流媒体服务部署中遇到一个坑,推流一直报防火墙问题,关闭了服务器防火墙还是有问题,后来发现问题出在了阿里云的外层防火墙,建议阿里云的防火墙设置不要在服务器上直接操作,请去阿里云控制台进行设置添加规则

参考:
SRS官方文档和学习路径

你可能感兴趣的:(【入门】视频直播概览)