一个完整的直播过程,包括采集、处理、编码、封包、推流、传输、转码、分发、解码、播放等,这一过程所采用的技术,我们也称之为“流媒体技术”。其中推流是指使用推流工具等内容抓取软件把直播内容传输到服务器的过程。
用摄像机采集视频
视频采集后的处理、编码。这就涉及到编码器的选择了,目前市面上直播编码器有无线、有线等非常多选择,根据不同场合选择即可。
对视频进行压缩(视频编码)或者解压缩(视频解码)的编码技术,比如MPEG,H.264,这些视频编码技术是压缩编码视频的
主要作用:是将视频像素数据压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。
注意:最影响视频质量的是其视频编码数据和音频编码数据,跟封装格式没有多大关系
一种视频压缩方式,它采用了帧间压缩,仅存储连续帧之间有差别的地方 ,从而达到较大的压缩比
H.265 是一种更为高效的编码标准,采用事先预测和与MPEG中的P-B帧一样的帧预测方法压缩,它可以根据需要产生适合网络情况传输的视频流,还有更高的压缩比,有更好的图象质量。
这些属于音频编码技术,压缩音频用。
观众所处的网络情况是非常复杂的,有可能是WiFi,有可能4G、3G、甚至2G,那么怎么满足多方需求呢?
多搞几条线路,根据当前网络环境自定义码率。列如:常常看见视频播放软件中的1024,720,高清,标清,流畅等,指的就是各种码率。
TS : 一种流媒体封装格式,流媒体封装有一个好处,就是不需要加载索引再播放,大大减少了首次载入的延迟,如果片子比较长,mp4文件的索引相当大,影响用户体验;
FLV: 一种流媒体封装格式,由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,因此FLV格式成为了当今主流视频格式。
推流可以理解为利用编码器将视频内容进行编码后推到服务器的过程。
经过H.264编码压缩之后,1080P 的 7 s 视频大小只有708K,10Mbps的带宽仅仅需要500ms,可以满足实时传输的需求,所以原始视频势必要经过视频编码。
直播“推流”需要推流协议,对音视频数据使用传输协议进行封装,变成流数据,这是直播背后原理最重要的部分,下面介绍目前主流的推送协议以及它们在直播领域的优缺点。
对应的直播地址格式:rtmp://*
RTMP是Real Time Messaging Protocol(实时消息传输协议)的缩写,是Adobe公司为Flash/AIR平台和服务器之间音、视频及数据传输开发的实时消息传送协议。RTMP协议基于TCP,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。
RTMP协议中,视频必须是H264编码,音频必须是AAC或MP3编码,且多以flv格式封包。RTMP是目前最主流的流媒体传输协议,对CDN支持良好,实现难度较低,是大多数的直播平台的选择。
不过RTMP有着一个最大的不足——不支持浏览器,且Adobe已不再更新。因此直播服务要支持浏览器的话,需要另外的推送协议支持。
对应的直播地址格式:https://*.m3u8
Http Live Streaming是由Apple公司定义的基于HTTP的流媒体实时传输协议。它的原理是将整个流分为多个小的文件来下载,每次只下载若干个。服务器端会将最新的直播数据生成新的小文件,客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。基本上,HLS是以点播的技术实现了直播的体验。因为每个小文件的时长很短,客户端可以很快地切换码率,以适应不同带宽条件下的播放。
分段推送的技术特点,决定了HLS的延迟一般会高于普通的流媒体直播协议。
传输内容包括两部分:一是M3U8描述文件,二是TS媒体文件。TS媒体文件中的视频必须是H264编码,音频必须是AAC或MP3编码。
VOD (Video On Demand)即视频点播技术的简称,也称为交互式电视点播系统。视频点播是计算机技术、网络技术、多媒体技术发展的产物,是一项全新的信息服务。
WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的 API。目前主要应用于视频会议和连麦中。
对应的直播地址格式:https://*.flv
从地址的前缀可以看出,HLS和HTTP-FLV都是基于HTTP的协议。RTMP是基于TCP。
HLS与RTMP对比:
HLS主要是延时比较大,RTMP主要优势在于延时低。
所以:
通常是rtmp协议推流、hls协议拉流
demuxing(分离):
从视频流、音频流,字幕流合成的文件(容器格式(FLV,TS))中, 分解出视频、音频或字幕,各自进行解码。
就是拉流的过程,把流媒体从服务器拉到本地的播放器