音视频基本概念

容器/文件

  1. 封装格式(也叫做容器)就是将已经编码压缩好的视频流,音频流及字幕按照一定的方案放到一个文件中,便于播放软件播放。
  2. 一般来说,视频文件的后缀名就是它的封装格式,封装的格式不一样,,后缀名也就不一样。

媒体流

  1. 指时间轴上的一段连续数据,比如一段音频数据,一段视频数据,一段字幕数据。
  2. 可以是压缩的,也可以是未压缩的。

数据帧/数据包

  1. 数据包存储的是编码后的多媒体数据,一段媒体流是由大量数据包组成的。
  2. 数据帧存储的编码前的多媒体数据,帧对应着编解码器的最小处理单元。
  3. 编码前(解码后)的数据为数据帧,编码后(解码前)的数据为数据包。
  4. 视频帧与音频帧理解方式不一样

编解码器

  1. 编解码器的作用是转换数据包与数据帧,比如libx264,fdk-aac等
    h264/AVC/AAC是压缩算法
    mp4是封装格式

常用视频压缩算法

压缩算法 阵营
MPEG2 MPEG
H264 MPEG
H265 MPEG
AVS China
VP8 Google
VP9 Google

常见音频压缩算法

名称
OPUS
MP3
AAC
AC3/EAC3

音频

声波三要素

  1. 频率(过零率):音阶的高低,频率越高,波长越短。越容易穿过障碍物,能量衰减越低,传得更远。
  2. 振幅:声音的响度,反映能量的大小。
  3. 波形:比如正弦波、方波、锯齿波等,波的形状决定了其所能代表的音色,比如钢琴和小提琴的音色差异

数字音频

  1. 采样:时间轴上对信号进行数字化。
  2. 量化:振幅轴上对信号进行数字化。
  3. 编码:按照一定格式记录采样并量化后的数字数据。

PCM描述

PCM(Pulse Code Modulation,脉冲编码调制)音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准数字音频数据。

  1. 量化格式:表示来声音的有效范围,高音与低音的可容忍性,比如8位,16位,32位等

  2. 采样率:每秒从连续信号中提取并组成离散信号的采样个数,比如44100,48000等
    采样率的倒数为采样周期,采样间隔,即每个样本的持续时间

    44.1kHz 采样周期为1 / 44100 * 1000 ≈ 0.0226757ms(每个样本的持续时长)
    44.1kHz 单声道每帧1024个样本 = 1 / 44100 * 1000 * 1024 ≈ 24.219954ms(每帧样本的持续时长)
    

    常见采样率

    频率 质量
    22kHz 无线广播
    44.1kHz CD音质
    48kHz 数字电视,DVD
    96kHz 蓝光,高清DVD
    192kHz 蓝光,高清DVD
  3. 通道个数:表示声音的立体效果,即录制时的音源数量或者播放时的扬声器数量,单声道(mono),双声道(stereo),5.1声道等

  4. 比特率:1s内的数据比特数量,体现媒体数据的质量

    • 没有压缩的音频数据的比特率 = 采样频率 * 采样精度 * 通道数。比如44100 x 16 x 2 = 1378.125kbps
    2M = 2 * 1024 byte
    1Byte = 8bit
    2M带宽的网速 = 2 * 1024 / 8 = 256KB/s
    
  5. 码率:压缩后的音频数据的比特率

    • 码率越大,压缩效率越低,音质越好,压缩后数据越大。
    • 码率 = 音频文件大小/时长。

    常用的码率

    码率 质量
    96kbps FM质量
    128-169kbps 一般质量的音频
    192kbps CD质量
    256-320kbps 高质量音频
  6. 整形或浮点型:大多数的pcm数据使用整型表示,对于精度要求较高的场景使用浮点类型标示pcm样本数据[-1.0, 1.0]

  7. 帧:每次编码的采样单元数。

    • 比如MP3通常是1152个采样点作为一个编码单元
    • AAC通常是1024个采样点作为一个编码单元。
  8. 帧率:每秒播放样本的数量,单位为fps(frame per second),比如1024

  9. 帧长:讲到帧的时候要注意他适用的场合

    • 可以指每帧播放持续的时间:每帧持续时间(秒) = 每帧采样点数 / 采样频率(HZ),如MP3 48k, 1152个采样点,每帧则为 24毫秒 => 1152/48000= 0.024 秒 = 24毫秒;
    • 也可以指压缩后每帧的数据长度

视频

1. 分辨率

分辨率就是我们常说的640x480分辨率、1920x1080分辨率,分辨率影响视频图像的大小。
每个方向上的像素数量,分辨率越高,可显示的点越多,画面就越精细。比如1920x1080

2. 码率:kb/s

是指视频文件在单位时间内使用的数据流量,也叫码流率。码率越大,说明单位时间内取样率越大,数据流精度就越高。
同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越高。
1KB/s = 8Kbps

3. 帧率:fps

通常说一个视频的25帧,指的就是这个视频帧率,即1秒中会显示25帧。帧率越高,给人的视觉就越流畅。
每秒传输图像的数量,表示是实时性的还原度
25fps:每秒显示25帧数据 => 每帧数据显示时长为1000 / 25 = 40ms
60fps:每秒显示60帧数据 => 每帧数据显示时长为1000 / 60 = 16.667ms

帧率是每秒图像的数量,分辨率表示每幅图像的尺寸即像素数量,码流是经过视频压缩后每秒产生的数据量,而压缩是去掉图像的空间冗余和视频的时间冗余,所以,对于静止的场景,可以用很低的码流获得较好的图像质量,而对于剧烈运动的场景,可能用很高的码流也达不到好的图像质量,所以结论是设置帧率表示您要的实时性,设置分辨率是您要看的图像尺寸大小,而码率的设置取决于摄像机及场景的情况,通过现场调试,直到取得一个可以接受的图像质量,就可以确定码流大小。
一帧就是一副静止的画面,连续的帧就形成动画,如电视图象等。我们通常说帧数,简单地说,就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,通常用fps(Frames Per Second)表示。每一帧都是静止的图象,快速连续地显示帧便形成了运动的假象。高的帧率可以得到更流畅、更逼真的动画。每秒钟帧数 (fps) 愈多,所显示的动作就会愈流畅。
帧率,码率,分辨率关系

4. IPB帧

I帧(Intra coded frames):I帧不需要参考其他画面而生成,解码时仅靠自己就能够重构完成图像

  • I帧图像采用帧内编码方式
  • I帧所占据的信息量比较大
  • I帧图像是周期性出现在图像序列中的,出现频率可由编码器选择
  • I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量)
  • I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧
  • I帧不需要参考运动矢量

P帧(Predicted frames):根据本帧与相邻的前一帧(I帧或者P帧)的不同点来压缩本帧数据,同时利用了空间和时间上的相关性

  • P帧属于前向预测的帧间编码。它需要参考前面最靠近它的I帧或者P帧来解码

B帧(Bi-directional predicted frames):B帧图像采用双向时间预测,可以大大提高压缩倍数

image

音视频同步

  1. DTS(Decoding Time Stamp):解码时间戳,这个时间戳的意义是告诉播放器应该什么时候解码这一帧的数据。
  2. PTS(Presentation Time Stamp):显示时间戳,这个时间戳用来告诉播放器应该在什么时候显示这一帧的数据。
  3. 同步方式
    • Audio Master:同步视频到音频
    • Video Master:同步音频到视频
    • External Clock Master:同步音频和视频到外部时钟。
      一般情况下:Audio Master > External Clock Master > Video Master
posted @ 2021-11-30 23:55  flxx  阅读(480)  评论(0编辑  收藏  举报