音视频开发基础知识笔记

更多音视频开发文章,请看:音视频开发专栏
介绍一个自己刚出炉的音视频播放录制开源项目

以下是我最学习音视频基础的笔记,写的比较乱,不太详细,主要是自己方便以后查阅~

  1. 播放器基础原理:

在这里插入图片描述

封装格式:
将音频视频合在一起

播放网上音视频:
解协议–解封装–音视频解码–音视频同步

流媒体协议:客户端和服务器通信的协议
封装格式:将视频码流和音频码流按照一定格式存储在一个文件中
视频编码:将视频像素数据压缩为视频码流,以降低视频数据量
音频编码:将音频采样数据压缩为音频码流
音视频同步:根据解封装得到的信息,将音视频分别用声卡和显卡播放

CDN网络:
为了解决用户访问网络资源慢的技术

网络慢的原因:
1. 链路太长

解决方案:
1. 用户访问边缘节点(最近的可获取资源的节点)
2. 二级节点:缓存主干节点数据
3. 源站:

音频编码:

  1. 采样(采样率:AAC一般是44.1k)
    1. 码率=采样率采样大小声道数
  2. 量化(y轴(声音振幅),量化大小:可以表达的y轴的高度,一般16bit表示)

音频压缩:

1. 消除冗余数据:
1. 人无法识别的数据:
a. 超过人可以识别的声音频率
b. 被遮蔽的声音:
i. 频域遮蔽:高频大声音可以将附近的低频声音遮蔽(注意是附近频率,即如果频率相差远反而不会被遮蔽)
ii. 视域遮蔽:
1) 同一时间大声音(前后会多加有几十毫秒的区间)遮蔽小声音
2. 有损压缩 :删除人不能识别的数据,无法恢复
3. 无损压缩:删除人不能识别的数据,可以恢复

音频编码器:
AAC:实时性不高,但是高保真。最适合泛娱乐化
OPUS:效果最好,但是还未推广。最适合实时互动

AAC:

  1. 应用范围很广,市面百分之90都是使用AAC
  2. 高保真
  3. rtmp协议不支持OPUS
  4. AAC取代了MP3
    1. 使用MPEG4 BRS PS使得压缩率高,损失却小
  5. AAC格式
    1. ADIF:将格式数据放在文件头部,每一帧都是用头部数据来处理。所以只能从头部解码
    2. ADTS:每一帧都有格式信息,所以可以从任何一帧开始解析,但是占用空间大

视频基础:
1. H264基础:
1. I帧:关键帧,帧内压缩技术
a. 为了压缩视频,第一帧作为I帧完整保存
2. P帧:向前参考镇,帧间压缩技术,压缩参考前一帧
3. B帧:前后参考帧,压缩参考前后帧(好处是压缩率高,坏处是在实时互动时会延迟(要参考后一帧),时间不可控)
4. GOP:一组帧,指的是两个I帧之间的帧,即变化很小的一组帧(包括第一个I帧)。一组帧包含SPS,pps的解码信息

2. 视频问题:
1. 花屏:一般是P帧丢失
2. 解决花屏就是如果遇到P帧丢失则丢掉该组帧所有帧。但是会导致卡顿

3. H264压缩:
1. 帧内预测压缩
a. 空域冗余数据
i. 人眼睛不能识别的信息
2. 帧间预测压缩
a. 时域冗余数据:
i. 去除帧间重复数据
3. 整数离散余弦变换(DCT):将空间的相关性转化为时间的无关性然后进行量化?
4. CABAC压缩
4. H264宏块划分?
1. 每一帧划分为多块区域?

5. 帧间压缩:
1. 运动估算:
a. 一组类似的帧,只留下运动矢量和剩余图片信息

6. 帧内压缩:
1. 通过算法计算出一帧的预测模式,然后传输预测模式和残差值?
2. 预测模式+残差值可以恢复原图?

7. H264结构码流:
1. 一帧包含多个片,一片包含多个宏块,一个宏块包含多个子块
a. 分层:
i. NAL层(视频数据网络抽象层):拆包组包
1) NAL单元(NALU):
a) NAL头部:
b) 切片:
i) 切片头
ii) 切片数据
ii. VCL:视频编码层

8. YUV:
1. Y:亮度
2. UV:色彩
3. 最常使用:YUV4:2:0(不是说没有V分量,而是每一个扫描行,只有一种色度分量,即一行Y:U=2:1,相邻行Y:V=2:1)
4. 存储格式所以不同的平台因为存储格式不同会出现不兼容问题):
a. 平面:I420,YV12
b. 打包:NV12,NV21

9. 行业痛点:
1. 视频秒开
2. 音频降噪
3. 回音消除
4. 视频卡顿花屏绿边
5. 手机发烫
6. 音视频同步

发布了69 篇原创文章 · 获赞 76 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/sinat_23092639/article/details/89391147