37.3 音视频直播
流程图
图片来源于《视频直播技术详解》系列之一:开篇
采集
- 音频采集
- 常见音频格式:
MP3
,AAC
,OGG
,WMA
,Opus
,FLAC
,APE
,m4a
和AMR
等 - 音频采集和编码的挑战: 延时敏感, 卡顿敏感, 噪声消除(Denoise), 回声消除(AEC), 静音检测(VAD)和其它混音算法等
- 采样率(samplerate): 采样就是把模拟信号数字化, 采样率越高, 音频信号所用的数据量越大, 音频质量越高
- 位宽: 采样数值大小, 包括: 4bit, 8bit, 16bit, 32bit等, 位数越大, 声音质量越好, 常用位宽8bit或者16bit
- 声道数(channels): 音频的采集和播放是可叠加, 声道数1和2分别成为单声道和双声道
- 音频帧(frame): 2.5ms~60ms为单位的数据量为一帧, “采样时间”没特别标准, 根据编码器需求决定
- 音频帧大小计算: 假设某音频信号的采样率为8kHz, 双通道, 位宽16bit, 20ms一帧, 则一帧音频大小为: size = 8000 * 2 * 16bit * 0.02s = 5120bit = 640 byte
- 常见音频格式:
- 图像采集
- 常见视频格式:
MP4
,3GP
,AVI
,MKV
,WMV
,MPG
,VOB
,FLV
,SWF
,MOV
,RMVB
和WebM
等 - 图像采集和编码的挑战: 设备兼容性差, 延时敏感, 卡顿敏感, 图像处理操作和美颜水印等
- 图像传输格式: 通用影像传输格式(Common Intermediate Format)是视讯会议常用格式
- 图像格式: 通常采用YUV格式存储原始数据信息
- 传输通道: 正常拍视频只需要1路通道
- 分辨率
- 采样频率: 采样频率反映了采集处理图像的速度和能力
- 常见视频格式:
预处理
图片来源于《视频直播技术详解》系列之三:处理
编解码
- 核心思想是去除冗余信息:
- 空间冗余: 图像相邻像素之间有较强的相关性
- 时间冗余: 视频序列的相邻图像之间的内容相似
- 编码冗余: 不同像素出现的概率不同
- 视觉冗余: 人的视觉系统对某些细节不敏感
- 知识冗余: 规律性的结构可由先验知识和背景得到
- 编码器的主要流程图(《视频直播技术详解》之(四):编码和封装)
- 封装
- 即把编码器生成的多媒体内容(视频, 音频, 字幕, 章节信息等)混合封装在一起的标准
推拉流
RTMP
- 优点: CDN支持良好, 主流的CDN厂商都支持; 协议简单, 平台实现容易 - 缺点: 基于TCP, 传输成本高, 在弱网环境丢包率高的情况下问题显著; 不支持浏览器推送; Adobe私有协议且已不更新WebRTC
- 优点: W3C标准, 主流浏览器支持程度高; Google支持且平台有参考实现; 底层基于SRTP和UDP, 弱网情况优化空间大; 可以实现点对点通信, 通信延时低 - 缺点: ICE, STUN, TURN传统CDN没有类似的服务提供
延迟优化
- 编码优化
- 传输协议优化
- 传输网络优化
- 推流、播放优化
直播性能测试模型
- 帧率, 即图像处理器每分钟刷新几次(FPS), FPS越高, 动作越流畅
- 码率,
- 分辨率
- 量化参数(压缩比)