计算机 · 2021年7月16日 0

音视频技术要点梳理

业务类型

  • 直播
  • 点播
  • rtc实时通信

编解码器

基础知识

https://zhuanlan.zhihu.com/p/61747783

I帧和IDR帧的区别:
https://forums.xilinx.com/t5/%E5%B5%8C%E5%85%A5%E5%BC%8F-%E5%B7%A5%E5%85%B7-%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/%E5%88%86%E4%BA%AB-I%E5%B8%A7%E5%92%8CIDR%E5%B8%A7%E7%9A%84%E5%8C%BA%E5%88%AB/td-p/1173230

IDR帧带有SPS和PPS,所以我们一般说的I帧是IDR帧。

采样率:

  • YUV444
  • YUV422
  • YUV420

YUV420的存储格式:
YV12、YU12、NV12、NV21。以及三种布局方式planar,packed,semi-planar。

编解码器

  • h264
  • aac
  • opus
  • speex

几种编解码器辨析

  • https://telecom.altanai.com/2019/09/16/video-codecs-h264-h265-av1/
  • https://bloggeek.me/av1-vs-hevc-webrtc-codec/
  • H.264(aka AVC)
    H.264是视频编码标准,又被称为MPEG-4 Part 10 或者 Advanced Video Coding (MPEG-4 AVC)。
    https://www.huaweicloud.com/articles/d2f8a3b0f254cc56e1962f194da5fc2a.html
  • x264
    实现了H264编码标准的开源编码器。
  • VP8
    Google推出的没有专利限制的对标H.264的编码标准。
  • H.265(aka HEVC)
  • x265
    实现了H.265编码标准的编码器。
  • VP9
    Google推出的没有专利限制的对表HEVC的编码标准。
  • AV1
    众多厂商联合推出的没有专利限制的编码标准。

h264

https://zhuanlan.zhihu.com/p/71928833

H.264与MPEG-4的关系:可以理解为H.264等同于MPEG-4,只是H.264是由ITU-T定制的H.26x标准的一部分,MPEG-4是ISO/IEC制定的MPEG系列标准的一部分,但是这两个组织又是合作定制了H.264和MPEG-4标准,只是各自取的名字不同。
有MPEG-1、MPEG-2、MPEG-4,但是没有MPEG-3,因为MPEG-2已经达成了预期让MPEG-3实现的需求。

H264标准:

  • VCL(Video Coding Layer)
    视频编码层,负责将视频数据编码
  • NAL(Network Abstraction Layer)
    网络抽象层,负责传输编码后的视频数据

分别对应H264的两个目标:

  • 高压缩比
  • 良好的网络亲和性

VCL编码出来的数据最终被封装成NALU进行传输。

sei

向h264码流中添加sei信息:
http://bbs.chinaffmpeg.com/forum.php?mod=viewthread&tid=590

视频码流分析工具

  • Elecard Stream Analyzer
  • 264VISA
  • https://sourceforge.net/projects/h264bitstream/
  • https://sourceforge.net/projects/h264streamanalysis/

视频质量评估

https://superuser.com/a/338734/879851
https://ottverse.com/calculate-psnr-vmaf-ssim-using-ffmpeg/

  • psnr
  • vmaf
  • ssim

容器封装格式

封装格式介绍文章https://www.bgteach.com/article/134 。

  • flv
  • mp4
  • mkv
  • rmvb
  • avi
  • webm

flv

http://lazybing.github.io/blog/2016/07/24/flv-parse/

  • 由FLV header加FLV body组成,其中FLV body由audio/video/script tag构成.每种tag类型都由一个单独的流构成,同一个FLV文件中,最多有一个音频流和一个视频流.使用大端字节序进行存储.

mp4

http://lazybing.github.io/blog/2016/07/26/mp4-parse-format/

AVI

http://lazybing.github.io/blog/2016/07/24/avi-parse-format/

流媒体传输协议

  • dash
  • hls
  • rtmp

rtmp

  • rtmp协议 http://lazybing.github.io/blog/2016/07/17/rtmp-protocol-standard/
  • rtmp库,rtmpdump http://lazybing.github.io/blog/2016/07/20/lib-trmp-source-code-study/

播放器

  • 音视频同步
  • seeking
  • 网络播放器
  • 渲染

QOS

QOE

  • jitter
  • adaptive streaming
  • 选档算法
  • 转码

信号处理

AI算法

opengl/vulkan