视频业务学习
1.视频:连续的画面。连续的图像变化每秒超过24帧以上的。
(1)码率:数据单位时间传送的数据位数。就是需要多少带宽。每秒传输的数据的大小。码率=帧率(如:24fps)*平均每帧的数据大小(一张图片的大小,如:6M)
(2)帧:数据传输的基本单位。一段数据的组合
(3)帧率:每秒显示的帧数
2.直播和点播:
视频点播:可以快进和回退
直播:不能快进回退。直播的回看功能也属于点播
直播就是每一帧数据打上时序标签后进行流式传输的过程。发送端源源不断的采集音视频过程
推流与转码:在数据传输的整个过程中从主播端到服务数据,经过编码、封包、推流与转码、在经过分发网络进行扩散传播,播放端再源源不断的下载数据并按时序进行解码播放。如此就产生了边生产、边传输、边消费的直播器端,再到边缘节点,以及从边缘节点到播放段。为了让采集端的流适配到各个平台端的不同协议,一般都会在服务端进行转码处理,将视频文件转成不同的格式,支持RTMP/HLS和FLV等不同的协议。
3.网络延时:从主播端采集,到观众端播放,之间存在时间差。
4.网络丢包:CDN直播用到的协议是基于TCP基础之上的,丢包会自动重传丢失的包,一直到超时。当网络丢包率升高时,重传会导致延时不断增大
解决方案:抛弃传统的基于TCP的解决方案。使用基于UDP的SD-RTN方案
CDN与SD-RTN的区别:
CDN是存储转发结构
SD-RTN:本质上是一个实时传输网络,用户的数据在网络单元内部和传输线路上都以实时交换方式传送。延时可以从CDN方案的数秒,降低到数百毫秒
SD-RTN适用于要求低延时的实时互动场景,例如网络电话、视频会议、有主播与观众交互需求的互动直播等。CDN适用于对延时要求不高的场景,例如电视的单点直播、网站加速等
为什么m3u8格式的文件会和视频网站扯上关系:
是为了更流畅的播放。
索引文件里面存储着ts文件的网络url链接,网站需要拿到索引文件,去按照url链接下载在http服务器中的ts文件,类似于爬虫。
索引文件就是m3u8文件。
现在大部分视频网站传输都是采用这种方法,如果你在观看网页视屏的时候,能够弄到加载该视频的m3u8文件,那么在配合一些工具,就能下载该视频了
该工具的作用就类似于视频网站,能够根据索引文件去下载ts文件。
如何拿到m3u8文件:
视频流:
编码流:经过压缩算法压缩的流数据,也称为H264码流
原始流:未压缩的流数据,也称为YUV流
视频帧通常是YUV格式的
视频传输协议:
视频图像传输有以下特点:要求传输延时小,实时性高;传输流量大、要求传输效率高;在一定程度上允许传输错误或数据丢失。根据以上特点,使用UDP协议来传输视频相对TCP协议更理想。
UDP:中文名是用户数据报协议。是一种无连接的传输层协议。
RTP和RTsP是一种应用型的传输层协议,它并不提供任何可靠性的保证和流量的拥塞控制机制。它是由IETP为视音频的实时传输而设计的传输协议。RTP协议位于UDP协议之上,在功能上独立于下面的传输层
RTSP:倍速播放功能是RTSP协议独有的,其他视频协议都无法支持。
OSI七层模型:
物理层:定义物理设备的=标准,如网线、光纤的接口类型,它的主要作用是传输比特流。
数据链路层:由于各种干扰的存在,物理链路是不可靠的。该层的作用是通过各种控制协议,将物理信道变成无差错的、能可靠传输数据帧的数据链路。它可以接收来自物理层的位流形式的数据,并封装成帧,传送到上一层。也可以将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层的数据叫做帧。
网络层:通过路由算法为报文通过通信子网选择最适当的路径,这一层定义的是IP地址,通过IP地址寻址,所以产生了IP协议。
传输层:监控数据传输服务的质量,保证报文的正确传输。防止丢包现象。
会话层:自动收发包,自动根据IP寻址的功能。它的作用就是建立和管理应用程序之间的通信。
表示层:负责数据格式的转换,将应用处理信息转换为适合网络传输的格式。或者将来自下一层的数据转换为上层能处理的格式。
应用层:计算机用户以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。
横向对比TCP/IP4层模型、5层模型和OSI七层模型的差别:
HLS:http Live streaming
PC端的m3u8格式:即HLS流式媒体资源格式
HLS:它的工作原理是把整个流切分成一片片小的基于HTTP的文件来下载
优点:允许用户从不同的备用源以不同的速率下载同样的资源片段。允许流媒体会话适应不同的数据速率
HLS协议规定:
视频的封装格式是TS
视频的编码格式为H265,音频编码格式为MP3或AAC
除了TS视频文件本身,还定义了用来控制播放的m3u8文件
OTT:即Over The Top
视频协议:
点播一般采用http协议,http-mp4文件或者切片ts文件,或者其他形式的切片。
比如短视频:客户端去请求这个mp4网址,就可以直接播放,关于拖放进度,可以用http-range或者自定义时间戳。
监控安防:一般采用RTSP协议
直播:一般采用RTMP、RTSP或http-flv方案
视频直播要解决三个问题:视频源、视频流转发、视频播放。
直播的模块:
视频采集模块:采集直播人的音视频信息,编码音视频流
CDN系统:是整个直播系统的核心,对视频流进行实时传输、调度分发、维护系统安全
直播网站:是直播系统的门户,能够整合主讲人信息,后台读取、存储、管理用户数据
视频播放模块:实现用户对数据流的管理
一张1080P,RGB888采样的图片占用的存储大小3(字节)*1920*1080=6220800字节,约6MB
不考虑音频的情况下,一段一小时1080P的纯视频未编码原始数据(RGB888)大小为:500G
如何识别冗余信息:分组、分块(将视频相邻的几帧变化小的几帧进行分组、分组后切成小块,识别每一小块的变化情况)
视频帧的类型:
I帧:自带全部信息的独立帧
P帧:只记录与上一帧的区别
B帧:记录与上一帧和下一帧的区别。不适用于直播,永远不知道下一帧。可以用于点播视频文件
图片分组:有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内的一组称为GOP(包括一份帧和多份P/B帧)
视频封装格式:
视频编码后的码流(GOP格式)可以通过特定的播放器或代码来进行播放。但是通常我们需要一些封装的格式来进行封装。就像饭需要用碗来装着吃。
封装格式(索引信息+文件块):MKV、MP4、AVI、FLV
m3u8文件:索引信息+ts文件块。
视频业务总结
1.阿里云视频点播:
视频点播是集音视频采集、编辑、上传(将视频传到阿里云视频点播服务,本质上是用OSS存储)、自动化转码处理(转高清、超清、蓝光)、媒体资源管理(对视频进行修改删除等)、分发加速(CDN加速)于一体的一站式音视频点播解决方案。
视频点播里面所存储的所有内容本是上会在oss开辟一块存储空间进行存储。
我们可以进行视频转码处理:
域名加速配置:
2.视频业务学习,掌握业务流程、传输协议、封装格式、编码格式
业务流程:采集---编码---封装---播放
封装格式:MP4、MKV、FLV、AVI、M3U8+ts(MPEG2-TS)
编码格式:
传输协议:
下面这些协议是基于TCP/HTTP之上的一些协议。
自己做的客户端可以直接播放码流。单浏览器不支持直接播放码流。只能播放封装好的码流
3.直播系统: