音视频相关的一些重要概念

2020-10-12  本文已影响0人  深圳_你要的昵称

1.常见的视频文件格式

我们常见的文件格式则有:.mov、.avi、.mpg、.vob、.mkv、.rm、.rmvb等等。为什么会有这么多种不同的文件格式?那是因为它们通过不同的方式实现了视频这件事情,至于这个不同在哪里,那就需要了解一下接下来要说的「视频封装格式」这个概念了。

2.视频封装格式

视频封装格式,简称视频格式,相当于一种存放视频信息的容器,它里面包含了视频信息、音频信息和相关的配置信息(例如:视频和音频的关联信息、如何解码等)。视频封装格式最直接的反映就是视频文件格式,如下表:

视频文件格式 视频封装格式 释义
.avi AVI(Audio Video Interleave) 图像质量好,但体积过于庞大,压缩标准不统一,存在高低版本兼容问题。
.wmv WMV(Windows Media Video) 可边下载边播放,很适合网上播放和传输
.mpg .mpeg .mpe .dat .vob .asf .3gp .mp4 MPEG(Moving Picture Experts Group) 由运动图像专家组制定的视频格式,有三个压缩标准,分别是 MPEG-1、MPEG-2、和 MPEG-4,它为了播放流式媒体的高质量视频而专门设计的,以求使用最少的数据获得最佳的图像质量。
.mkv Matroska 一种新的视频封装格式,它可将多种不同编码的视频及 16 条以上不同格式的音频和不同语言的字幕流封装到一个 Matroska Media 文件当中。
.rm、.rmvb Real Video Real Networks 公司所制定的音频视频压缩规范称为 Real Media。用户可以使用 RealPlayer 根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。
.mov QuickTime File Format Apple 公司开发的一种视频格式,默认的播放器是苹果的 QuickTime。这种封装格式具有较高的压缩比率和较完美的视频清晰度等特点,并可以保存 alpha 通道。
.flv Flash Video 由 Adobe Flash 延伸出来的一种网络视频封装格式。这种格式被很多视频网站所采用。

3.容器

将已经编码压缩好的视频数据和音频数据按照一定的格式放到一个文件中,这个文件可以称为容器。当然可以理解为这只是一个外壳。

通常,除了音频数据和视频数据外,还会存放一些视频同步的元数据:例如字幕,这种多数据会给不同的程序来处理,但是在传输和存储的时候,又是被绑定在一起的。

4.视频编解码相关概念

4.1 视频编解码

视频编解码的过程-->对数字视频进行压缩或解压缩的过程。

4.2 常见的视频编解码方式

「视频封装格式」= 视频 + 音频 +「视频编解码方式」 等信息的容器。

一种「视频封装格式」可以支持多种「视频编解码方式」。比如:QuickTime File Format(.MOV) 支持几乎所有的「视频编解码方式」,MPEG(.MP4) 也支持相当广的「视频编解码方式」。

5.音频编解码方式

经常使用的音频编码方式有

5.1 直播/小视频中的编码格式

6.H264相关的一些概念

H264结构图.png
H264结构中,一个视频图像编码后的数据叫做一帧,一帧由一个片(slice)或多个片组成,一个片又由一个或多个宏块(MB)组成,一个宏块由多个子块组成,子块即16x16的yuv数据。宏块是作为H264编码的基本单位

6.1 颜色模型

通常我们采用RGB模型来表示颜色,RGB模型中,每种颜色需要3个数字分别表示R、G、B,每个数字占用1个bit字节,这样总共需要24bits,那么有没有更高效的颜色模型用更少的bit来表示颜色呢?-->YUV,Y表示亮度,也是灰阶值,U和V表示色度分量。

YUV家族中,有一员YCbCr,

Y = kr * R + kg * G + kb * B

Cr = R – Y

Cg = G – Y

Cb = B – Y

Cr、Cg、Cb 分别表示在 R、G、B 上的色度分量。上述模型就是 YCbCr 颜色模型基本原理。

6.2 GOF

Group of Frame,一组帧。什么是一组帧-->就是一个I帧到下一个I帧,这一组的数据,包括B帧/P帧。也称作GOP,Group of Pictures。

6.3 SPS/PPS

SPS: (Sequence Parameter Set,序列参数集)存放帧数,参考帧数目,解码图像尺寸,帧场编码模式选择标识等.

PPS:(Picture Parameter Set,图像参数集).存放熵编码模式选择标识,片组数目,初始量化参数和去方块滤波系数调整标识等.(与图像相关的信息)

在一组帧之前我们首先收到的是SPS/PPS数据.如果没有这组参数的话,我们是无法解码.

SPS/PPS数据,我们也把其归类到I帧.这2组数据是绝对不能丢的.

7. H264编码相关概念

7.1 编码分层

H264编码分为2层:

  1. NAL层(Network Abstraction Layer,视频数据网络抽象层)

    • 它的作用是H264只要在网络上传输,在传输的过程每个包以太网是1500字节. 而H264的帧往往会大于1500字节的.所以就要进行拆包. 将一个帧拆成多个包进行传输.所有的拆包或者组包都是通过NAL层去处理的.
  2. VCL层:(Video Coding Layer,视频数据编码层) 它的作用就是对视频原始数据进行压缩.

7.2 码流

有以下几种码流:

7.3 NALU详解

NALU详解结构图如下:


NALU.png

7.4 H264码流分层结构图

[图片上传失败...(image-6c074d-1602490909755)]

参考:
CC老师_HelloCoder
音视频学习从零到整

上一篇下一篇

猜你喜欢

热点阅读