第一章 音视频基础知识

第一章 音视频基础知识

此为该系列第一章
目录:https://heyanle.com/archives/androidyin-shi-pin-kai-fa

1.1 视频解码

两个系列:

  1. MPEG:由 ISO 下属的 MPEG (运动图像专家组)开发的一系列视频编码。有 MPEG1(VCD 使用),MPEG2(DVD使用),MPEG4(DVDRIP 使用其变种 DivX、XviD 等),MPEG4 AVC(正热门)。还有音频解码方面,如 MPEG Audio Layer 1/2,MPEG Audio Layer 3(MP3)、MPEG-2 ACC、MPEG-4 ACC 等。这里 DVD 的音频没采用 MPEG。
  2. H.26X 系列:由 ITU(国际电传视讯联盟)主导,侧重网络传输,只有视频编码,如:H.261,H.262,H.263,H.263+,H.263++,H.264(与 MPEG4 AVC 合作的结晶)

1.2 音频编码

常见有三个,AAC、MP3、AC3

  • AAC:一种专门为声音数据设计的文件压缩格式,采用全新算法进行编码,更高效,更加具有性价比。为有损压缩。同时随着 USB3.0 和 16 G 以上 大容量 MP3 的普及,AAC 小巧的优势正逐渐丧失。
  • MP3:是一种音频压缩技术。利用人耳对高频信号不敏感的特性,将不同频段使用不同的压缩率,能在做到 1:10 甚至 1:12 的压缩率的前提下最大限度的保证音乐播放的效果。
  • AC3:是 Dolby 实验室所发展的有损音频编码格式。被广泛应用于 5.1 声道。AC3 的普及率很高,284~448kb/s 的码率应用于激光唱片和 DVD,640kb/s 的码率广泛应用于电影院。

1.3 多媒体播放组件

Android 的多媒体播放组件包括 MediaPlayer、MediaCodec、OMX、StageFright、AudioTrack 等

  • MediaPlayer:播放控制
  • MediaCodec:音视频编解码
  • OMX:多媒体部分采用的编解码标准
  • StageFright:是一个框架,在 Android 中以共享库的形式存在(libstagefright.so),其中的 module NulPlayer/AwesomePlayer 可用来播放音视频。同时提供了许多 api 供上层(Java/JNI)调用
  • AudioTrack:音频播放

IOS 的 pass

1.4 常见的多媒体框架及解决方案

常见的多媒体框架及解决方案有 VLC、FFmpeg、GStreamer 等

  • VLC:Video LAN Client 是一款自由、开源的跨平台多媒体播放器及框架
  • FFmpeg:多媒体解决方案,广泛用于音视频开发中
  • GStreamer:一套构建流媒体应用的开源多媒体框架

1.5 相关知识点

1.5.1 帧率

Frame Rate 是用于测量显示帧数的亮度,单位为 fps 或 hz

一般来说 30fps 就可以接受,60fps 则可以显著提升交互感和逼真感,但是超过 75 fps 就不容易察觉有明显流畅度提升。如果 帧率 超过屏幕刷新率,则会浪费相关算力。

1.5.2 分辨率

视频分辨率是指视频成像产品所形成的的图像大小或尺寸

1.5.3 刷新率

分为垂直刷新率 与 水平刷新率。一般指垂直刷新率,表示屏幕上一秒钟重绘多少次,以赫兹为单位。刷新率越高,画面越稳定,图像显示越清晰,对眼镜影响小。刷新率越低,图像闪烁和抖动的就越厉害,眼睛疲劳的块。如果能达到 80hz 以上,基本上就可以完全消除闪烁和抖动。(就是有点贵)

1.5.4 编码格式

编码的目的是压缩数据量,采用编码算法压缩冗余数据

  • MPEG(MPEG-2、MPEG-4)
  • H.26X(H.263、H.264/AVC、H.265/HEVC)

1.5.5 封装格式

编码后的音视频数据封装到一个文件格式中,如 MKV、AVI、TS 等

1.5.6 码率

比特率,单位时间内播放连续的媒体的比特数量。

文件大小 = 码率 * 时长

这里可以看出码率单位为 b/s

1.5.7 画质与码率

码率越大,画质越好,视频越流畅?错误,与编码算法,视频质量有关

1.5.8 DTS 与 PTS

  • DTS:Decode Time Stamp,标示读入内存中的比特流在什么时候开始送入解码器中进行解码
  • PTS:Presentation Time Stamp,度量解码后的视频帧什么时候被显示出来

1.5.10 视频帧与音频帧

视频帧常见的分为 I、P、B 帧

  • I 帧 又叫关键帧,这一帧的画面数据完整保留
  • P 帧 单向差别帧,这一帧的数据表示为这一帧画面与前一个关键帧的差别,渲染时根据前一帧与差别综合渲染
  • B 帧 双向差别帧,记录本帧与前后帧的差别。这种帧压缩率较高,但解码时 GPU 压力较大,因为还需要提前渲染之后的帧。

音频帧的定义与编码格式有关

  • 对 PCM(未经编码的音频数据) 来说,不需要帧的概念,根据采样率和采样精度就可以播放
  • 对 AMR 帧来说,所有帧都是 I 帧,它规定每 20ms 为一帧,每一帧都是独立的,有可能采用不同的编码算法与不同的编码参数
  • MP3 帧比较复杂,每一帧的长度可能确定也可能不确定,由比特率决定,每一帧又分为帧头和数据两部分,帧头记录了比特率、采样率、版本等,每一帧相互独立。

1.5.11 量化精度

表示将模拟信号分成多少个等级,量化精度越高、音乐的压振幅越接近原音乐。量化精度单位是 比特,CD 标准量化精度是 16 比特,DVD 的标准量化精度是 24 比特。也可理解为一个采样点用多少 bit 表示。

1.5.12 采样率

指每秒采样点个数(8000/44100Hz),单位为 赫兹

1.5.13 声道、

常见的声道有 单声道、立体声道、4 声道、5.1 声道、7.1 声道

  • 单声道
  • 立体声道:左右两个单声道
  • 4 声道:前左、前右、后左、后右四个声道,听众在中间。如果再加一个低音音响,则为 4.1 声道
  • 5.1 声道:左右环绕、左右声道、中置声道加一个低音音响,则为 5.1 声道
  • 7.1 声道:前置左右、侧边环绕左右、后置环绕左右、中置声道再加一个低音音响,为 7.1 声道