1、音视频基本概念
1.1、编码(encode)
官方说法:通过特定的压缩技术,将某个视频的视频流格式转换成另一种视频格式的视频流方式。
通俗的说法:他就是一种算法,是一种减少字节的算法,编码的目的就是较少字节,数据在网络上传输,会受到贷带宽的限制,比如数据1000M,带宽只有100M,因此需要编码,将1000M的数据进行压缩,然后在100M的带宽上传输。
编码(encode)是一种减少字节的算法,它的输入是图片,图片是由像素点组成的,图片是像素的集合。
视频:YUV420/422(视频格式)--->H264(编码算法)
RGB888(视频格式)-->H264(编码算法)
YUV420(视频格式)--->h263(编码算法)
H264的I帧,P帧,B帧,GOP
GOP实际上就是一组数据,一组数据中的关键帧是I帧,还有PS,PPS的信息。
encode编码图片序列对应的就是H264视频流
音频:PCM(原始)(图片格式)---->AAC(编码算法)
PCM(原始)(图片格式)---->G726(编码算法)
PCM(原始)(图片格式)---->G711(编码算法)
1.2、解码(decode)
官方说法:通过特定的解压缩技术,将某个视频格式的视频流转换成另一种格式的视频流方式
通俗的说法:有encode就有decode,原来都是图片,但是经过encode以后,就不是一幅幅的图片,而是压缩后的数据,我们需要将压缩后的数据转化成encode之前的图片,核心就是还原
视频:H264(编码算法)--->YUV420/422(视频格式)
H264(编码算法)---> RGB888(视频格式)
h263(编码算法)--->YUV420(视频格式)
音频:AAC(编码算法)--->PCM(原始)(图片格式)
G726(编码算法)--->PCM(原始)(图片格式)
G711(编码算法)---> PCM(原始)(图片格式)
1.3、转码(transcode)
官方说法: 视频转码技术将视频信号从一种格式转换成另一种格式
通俗的说法:比如我有一个高清的视频源1080p的,但是由于带宽不够,就需要通过转码的方式转化成VGA640p*480p的,一般来讲通过修改分辨率
视频:改变分辨率(resolution) 分辨率就是像素的宽*高 1920p * 1080p
改变帧率(frame rate) 1秒钟会改变多少次,正常人眼的识别是15帧/秒,帧率越高动画月流畅
改变比特率 等编码参数 影响文件大小,影响带宽的传输
音频: 改变采样率(sample rate) 音频是一个连续的信号,需要量化,需要采用很多点,比如采样8000个点比采样1000个点播放肯定更好。采样率越高,音频播放质量越好。
改变通道数(channels) 音频双通道,单通道
改变位宽(sample format) ffpmeg中定义的位宽,16位,32位,8位,位宽越多越精确,但是传输的数据量就越大。
1.4、封装(mux)
复用,按一定的格式组织原始音视频流,其实就是在原始的音视频流加入了一些额外字段,例如头和尾部信息,用来表示音视频能够播放多长时间,音视频何时开始何时结束,音视频能够有多少个包
1.5、解封装(demux)
解复用,按一定的格式解析出原始音视频流,mux相当于穿衣服,demux相当于脱衣服。
1.6、ES流:
原始流,直接从编码器出来的数据流。
1.7、PES流:packet ES流
ES形成的分组称为PES分组,是用来传递ES的一种数据布局。就是ES流打成的包,一组ES流。这一组ES流里面会有时间戳信息。
分割打包的ES流,加入了PES头。PES包是可变长度的,PES头中最重要的部分是显示时间标记(Presentation Time Stamp, PTS)和解码时间标记(Decode Time Stamp, DTS),有了PTS和DTS,再加上节目时钟参考PCR,解码器就能从TS流中重建视频流;
1.8、TS流:
在MPEG-2标准中,有两种不同类型的码流输出到信道:一种是节目码流(Program Stream, PS),适用于没有误差产生的媒体存储,如DVD等存储介质;另一种是传送流(Transport stream, TS),适用于有信道噪声产生的传输,目前TS流广泛应用于广播电视中,如机顶盒等。
传送流(Transport stream, TS)每一个包是188个字节的TS流,TS流的好处就是可以被任意的截断,如果中间传输丢失了,不会影响后面的数据,顶多就是出现马赛克。
传输流。固定包长度为188B,TS流固定包长度的好处是便于找到帧的起始位置,易于从包丢失中恢复,适合于有误码的环境。
https://www.cnblogs.com/jiayayao/p/6832614.html
1.9、RTSP流:RTSP(Real Time Streaming Protocol)
RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议。其实是一个控制协议,源端有一个RTSP流,目的端想要接受这个RTSP流,目的端需要开启IP,PORT和请求数据。
1.10、RTMP流
Real Time Messaging Protocol(实时消息传输协议),是adobe公司的协议。本质上讲RTMP和RTSP流没有区别,控制有区别。很多直播网站都是RTMP的流。
1.11、HLS流:
HLS是Apple的动态码流自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u8索引文件,TS媒体分片文件。 好处就是播放器的兼容性很强。
1.12、 服务端:
服务端是为客户端服务的,像客户端提供资源,保存客户端数据。
1.13、客户端:
也可以成为用户端,与服务器相对应,为客户提供本地服务的程序。
1.14、流媒体:
采用流式传输方式在Internet播放的媒体格式。
1.15、推模式:
当通知消息来之时、把所有相关信息都通过参数的形式“推给”观察者。
1.16、拉模式:
当通知消息来之时,通知的函数不带任何相关的信息,而是要观察者主动去“拉”信息
1.17、实时流:
Real Time stream 实时传输的音视频流