音频
一、声音的三个要素:
1、音调:音频
2、音量:声音震动的浮动
3、音色:本质是谐波
人类听觉范围:
20HZ --- 20KHZ 之间
二、音频的量化和编码:
下图就可以清除的看出,就是将模拟信号转化为数字信号存储
采样大小:一个采样用多少bit保存,一般为16个比特
采样率:采样的频率
声道数:单声道、双声道和多声道
PCM音频流的码率:采样大小采样率声道数
三、音频压缩
1、消除冗余数据,人类可以听到的频率
2、哈夫曼无损编码
四、音频编解码器
常见的音频编码器有:OPUS、AAC、Vorbis、Speex、iLBC、AMR、G.711等
性能:OPUS>AAC>Vorbis
AAC介绍
- 目的:为了取代MP3格式,MP3格式是有损压缩
- MPEG-4标准出现后,AAC加入了SBR技术和PS技术
- 目前常用的规格有AAC LC、AAC HE V1、AAC HE V2
AAC LC:低复杂度,码流128K
AAC HE V1:AAC LC + SBR技术(高低频率单独编码,减少低频采样率,高频增加采样率)
AAC HE V2:AAC HE V1 + PS(只存一个声道的完整声音,另一个声道的差异声音)
AAC规格:
AAC格式:
- ADIF:
这种格式只能从头开始解码,常用于磁盘文件中 - ADTS:
这种格式每一帧都有一个同步字,可以在音频流的任何位置开始解码,它类似数据流格式
AAC的常见编解码库:Libfdk_AAC 、ffmpeg AAC 、libfaac
视频:
一、基本概念
H246:
- I帧:关键帧,采用帧内压缩技术
- P帧:向前参考帧,压缩时只参考前一个帧,属于帧间压缩技术
- B帧:双向参考帧,压缩时参考前一个帧和后一个帧,属于帧间压缩技术
GOF:
SPS和PPS:
视频花屏、卡顿原因:
- 如果GOP分组中的P帧丢失会造成解码端的图像发生错误
- 为了避免花屏的问题出现,一般如果发现P帧或者I帧丢失,就不显示本次GOP内的所有帧,直到下一个I帧来后重新刷新图像
视频编码器:
- x264/x265(占用的CPU比较高,一般点播可以用)
- openH264(性能低于x264,但支持SVC)
- vp8/vp9
H264压缩技术:
二、H264宏块划分和分组
- 1、宏块(Macro Block):一个编码图像首先要划分成多个块(4x4 像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块大小为16x16个像素。宏块分为I、P、B宏块,I宏块只能利用当前片中已解码的像素作为参考进行帧内预测;P宏块可以利用前面已解码的图像作为参考图像进行帧内预测;B宏块则是利用前后向的参考图形进行帧内预测;
- 2、帧分组:将变化很小的有规律的一组帧分为一组,利用算法可以推算出其它的
压缩技术:
- 帧内压缩是生成I帧的算法(空间上的压缩)
- 帧间压缩是生成B帧和P帧的算法(时间上的压缩)。
- DCT压缩 数学压缩
- VLC压缩,类似哈夫曼编码
H264结构:
结构图:
H264编码分层:
- NAL 视频数据网络抽象层
- VCL 视频数据编码层
码流
基本概念:
- SODB: 原始数据比特流,长度不一定是8的倍数,处理起来比较麻烦,它是由VCL层产生的
- RBSP: 在SODB基础上,在SODB最后一位补1,不按字节对齐则补零
- EBSP: 插入起始位
- NALU: EBSP+一字节的头
NAL单元
Header格式:一个字节大小,如下图所示
- F位 必须为0
- NRI 暂无意义
- Type 指定了NALU单元的类型,如5位IDR图像的片
NAL类型:
- 单一类型 一个RTP包只包含一个NALU
- 组合类型 一个RTP包包含多NALU单元,类型是24 — 27
- 分片类型 一个NALU单元分成多个RTP包,类型是28和29
YUV:图像的存储格式
它是电视系统使用的一种颜色编码方法
- Y : 表示明亮度,同灰阶值,它是基础信号,黑白电视使用
- U和V:表示的是色彩,UV的作用描述影像色彩以及饱和度,他们用于指定像素的颜色
目前用的多的是YUV 4:2:0格式,第一行是4:2:0,下一行为4:0:2,以此交替更换