视频编解码:
H264(AVC,MPEG-4 Part 10)
高压缩率,支持多种分辨率和帧率,用于在线流媒体、会议、数字电视
编码过程:
- 分块处理,将视频帧划分为宏块(16x16)
- 使用帧预测和帧间预测来减少冗余信息,帧前预测利用当前帧种的相邻像素,帧间预测则利用前后帧之间的相似性。
- 变换和量化,对预测残差进行离散余弦变换,然后进行量化以减少数据量
- 熵编码,使用熵编码(cabac或cavlc)进一步压缩数据
解码过程:
解码器上面执行的你操作,熵解码,反量化,逆变换,重建图像。
数据帧格式:
I帧:
独立帧,不依赖其他帧进行解码
包含完整的图像信息,用于随机访问和错误回复
p帧:
前向预测帧,基于前面的I帧,P帧进行预测编码
数据量小,依赖参考帧
B帧
双向预测帧,基于前面和后面的参考帧,进行预测编码
数据量最小,但是解码需要很多资源
数据组织方式:
数据帧时通过一系列的宏块和片组织起来的
- 宏块
- 基本编码单元,通常为16x16
- 每个宏块可以进一步划分为更小的块,用于运动估计和变换编码
- 片
- 多个连续的宏块组成的一个独立单元
- 独立解码,御用错误恢复和并行处理
- I,P,B片
- 帧结构
组成部分:
NAL单元:
H.264的网络抽象层,用于将视频数据封装成适合传输的单元
每个nal单元包含一个头部和有效载荷
头部包含单元类型和标志位
片头:
包含片的类型,参考帧信息,运动矢量范围等
宏块头:
包含宏块编码模式,运动矢量,量化参数等
宏块数据
宏块数据包含残差数据(经过变换和量化后的系数)
- 数据流格式:h.264的数据流通常以nal单元的形式组织,每个nal单元含一下部分
禁止位:防止nal单元被勿用
Nal单元类型:表示nal单元的类型(i帧,p帧,sei等)
冗余位:保留位,通常设置为固定值
有效载荷:包含实际的视频数据
- 参数集
使用参数集来存储编码的所需的全局信息
序列参数集:包含序列级别的信息,图像尺寸,帧率,色度格式等
图像参数集:包含图像级别的信息,量化参数,熵编码模式等
H265(HEVC)
编码过程:类似上一个,引入了一些改进
更大的分块结构:使用编码树单元CTU,可以是64x64像素,宏块更大,提高了压缩效率
更多的预测模式:提供了更多的帧内和帧间预测模式,提高压缩效率
高级熵编码技术:采用更高效的熵编码方法,如CABAC
解码过程:
同上
特点:
更高的压缩效率,相同图像质量,数据量比264减少百分之五十
支持超高清分辨率,4k 8k
应用于,超高清视频流媒体,蓝光光盘,高效存储等
- 编码单元 cu
- Ctu 基本编码单元,通常为64x64
- Cu是ctu的子单元,大小可变,用于编码决策,提供更高的灵活性
- 预测单元pu
- 用于帧内预测和帧间预测的单元,是cu的一部分或者整个cu
- Pu的大小和形状可以根据预测模式进行调整,提高编码效率
- 变换单元TU
- 用于变换和量化的单元,通常为4X4,8x8,16x16或者32x32
- Tu的大小可以根据残差数据的特性进行调整,以实现更高效的变换和量化
。。。。。。。。大多数和264相同。。。。。。。。。。。
- 滤波技术
- Sao 样本自适应偏移,用于补偿编码过程中误差,提高解码后的图片质量
- Alf 自适应环路滤波器,用于进一步减少编码噪声,提高图像质量
AV1
开源,免税版的视频编码格式,替代现有的编码标准---H264,H265
开源且免税,避免了使用专利编码格式所需要支付的费用
高压缩效率,相比vp9和hevc , av1 提供了更高的压缩效率
用于在线视频流媒体,webrtc 实时通信等
编码过程:
分块结构灵活,支持4x4到128x128不同大小的分块,提高了对不同内容类型的适应性
复杂的运动补偿与矢量场,提供更多运动补偿模式,减少时间冗余
高级变换和量化技术,多种变换核和自适应量化策略,提高压缩效率
解码过程:
解码器执行上述工作的逆过程,包括熵解码,反量化,逆变换和重建图像
AAC
高级音频编码格式,由mpeg组织开发,是mp3格式的继承者,被认为是最好的有损音频编码格式之一。
高音质,相同比特率下,aac比mp3音质更好
被许多设备和平台支持,ios android 流媒体服务。
用于音乐流媒体服务,数字广播,多媒体应用
编码过程:
- 时域到频域的转换,使用mdct将音频信号从时域转换到频域,以便处理不同频率成分
- 心理声学模型,根据人耳听觉特性,去除不易察觉的信息,从而减少数据量
- 比特率控制与量化,根据目标比特率,多频域系数进行量化处理,并用噪声声整形技术以优化音质。
- 熵编码与打包传输流生成
G711
窄带语言编码标准,用于电话系统中的语音传输,有两种变体,μ-law 和 a-law 用于不同地区的电话系统。
简单且低延迟,适合实时通信
固定比特率,每秒64kbps的数据速率,使其适用于传统电话网络中的语音传输
应用场景,传统pstn 电话系统,volp电话服务等
编码过程:
将模拟语音信号转换为数字信号,然后通过μ-law或a-law算法进行非线性压扩,减少动态范围并提高信噪比,每个采样点用8位表示,因此固定比特率为64kbps
解码过程:
将数字信号通过μ-law或者a-law算法还原为线性pcm格式,在经过数模转换输出模拟语音信号
视频传输协议和网络传输技术:
SIP
应用层协议,用于创建,修改和终止多媒体绘画
工作原理
- 注册,用户设备向sip服务器注册,以便其他用户可以找到它
- 会话建立,通过发送invite请求来发绘画,包含绘画描述信息(sdp)
- 会话管理,在绘画期间,可以发送update或reinvite请求来修改会话参数
LlVOIP
通过互联网传输语音数据,实现语音通信
工作原理:
- 信令协议,使用sip或h323等协议进行呼叫建立和管理
- 编解码器,使用G711 G729等编码器对语言信号进行编解码压缩
- 传输协议,通常使用rtp/udp进行实时语音数据传输
RTSP
网络应用协议,用于控制音视频流的传输,类似于http但专门向用于多媒体数据的传输控制
工作原理:
客户端发送describe请求获取媒体描述信息
客户发送setup请求建立,流媒体分传输通道
客户端发送play请求开始开始播放媒体流,pause请求暂停播放,treardown请求结束后播放并释放资源。
RTP
网络协议,用于互联网上传输实时音频和视频,提供了时间戳,序列号等机制,确保数据包按顺序到达并能同步播放;
工作原理:
Rtp头部包含时间戳和序列号,用于同步和冲排序接收到的数据包,通常与rtcp一起用,rtcp提供质量反馈和统计信息,帮助调整传输参数
UDP
无连接,不可靠传输层协议,提供简单快速的数据报文服务。
工作原理:
数据报文直接从源地址发送到目标地址,不需要建立链接,没有确定机制,丢包补充发
实时通信viop,流媒体服务,dns查询
TCP
面向连接的可靠传输层协议,提供可靠的数据流服务
工作原理:
三次握手建立链接,数据分段并编号,接收方确认收到的数据段,丢包重发,保证数据完整性。
四次挥手断开连接。
文件传输FTP,web浏览http/https
HTTP
无状态的应用层协议,用于分布式超文本信息系统
工作原理:
客户端向服务器发送http请求(get/post等)
服务器处理请求并返回响应(状态码+内容)
每次请求相应都是独立的
Web浏览器方位网站,restful api接口