37.3 音视频直播

流程图

图片来源于《视频直播技术详解》系列之一:开篇 图片来源于《视频直播技术详解》系列之一:开篇

采集

  1. 音频采集
    • 常见音频格式: MP3, AAC, OGG, WMA, Opus, FLAC, APE, m4aAMR
    • 音频采集和编码的挑战: 延时敏感, 卡顿敏感, 噪声消除(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
  2. 图像采集
    • 常见视频格式: MP4, 3GP, AVI, MKV, WMV, MPG, VOB, FLV, SWF, MOV, RMVBWebM
    • 图像采集和编码的挑战: 设备兼容性差, 延时敏感, 卡顿敏感, 图像处理操作和美颜水印等
    • 图像传输格式: 通用影像传输格式(Common Intermediate Format)是视讯会议常用格式
    • 图像格式: 通常采用YUV格式存储原始数据信息
    • 传输通道: 正常拍视频只需要1路通道
    • 分辨率
    • 采样频率: 采样频率反映了采集处理图像的速度和能力

预处理

图片来源于《视频直播技术详解》系列之三:处理 图片来源于《视频直播技术详解》系列之三:处理

编解码

  • 核心思想是去除冗余信息:
    • 空间冗余: 图像相邻像素之间有较强的相关性
    • 时间冗余: 视频序列的相邻图像之间的内容相似
    • 编码冗余: 不同像素出现的概率不同
    • 视觉冗余: 人的视觉系统对某些细节不敏感
    • 知识冗余: 规律性的结构可由先验知识和背景得到
  • 编码器的主要流程图(《视频直播技术详解》之(四):编码和封装)

图片来源于《视频直播技术详解》之(四):编码和封装

  • 封装
    • 即把编码器生成的多媒体内容(视频, 音频, 字幕, 章节信息等)混合封装在一起的标准

推拉流

  1. RTMP - 优点: CDN支持良好, 主流的CDN厂商都支持; 协议简单, 平台实现容易 - 缺点: 基于TCP, 传输成本高, 在弱网环境丢包率高的情况下问题显著; 不支持浏览器推送; Adobe私有协议且已不更新
  2. WebRTC - 优点: W3C标准, 主流浏览器支持程度高; Google支持且平台有参考实现; 底层基于SRTP和UDP, 弱网情况优化空间大; 可以实现点对点通信, 通信延时低 - 缺点: ICE, STUN, TURN传统CDN没有类似的服务提供

延迟优化

  1. 编码优化
  2. 传输协议优化
  3. 传输网络优化
  4. 推流、播放优化

直播性能测试模型

  1. 帧率, 即图像处理器每分钟刷新几次(FPS), FPS越高, 动作越流畅
  2. 码率,
  3. 分辨率
  4. 量化参数(压缩比)

参考