音视频及H264/H256编码相关原理

一、音视频封装格式原理:

          我们播放的视频文件一般都是用一种封装格式封装起来的,封装格式的作用是什么呢?一般视频文件里不光有视频,还有音频,封装格式的作用就是把视频和音频打包起来。 所以我们先要解封装格式,看有哪些视频流和哪些音频流,此时的音频流和视频流都还是压缩数据,不能直接用于显示的,这就需要解码。

        音视频及H264/H256编码相关原理_第1张图片

        如FFmpeg 视频文件就是一个容器 (视频流(H264) 音频流(aac))。

      1、视频文件封装格式:

          封装格式(也叫容器),就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,也就是说仅仅是一个外壳,或者大家把它当成一个放视频轨和音频轨的文件夹也可以。

      2、音视频编码方式:

  • 视频编码方式:将视频像素数据(RGB,YUV 等)压缩成视频码流,从而降低视频的数据量。包含有HEVC(H265)、H264、MPEG4、MPEG2、VP9等;
  • 音频编码方式:将音频采样数据(PCM 等)压缩成音频码流,从而降低音频的数据量。包含有AAC、MP3、WMV、AC-3。

       3、编解码方式和封装格式的关系:

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

       4、RGB/YUV概念:

        通常我们采用RGB模型来表示颜色,RGB模型中,每种颜色需要3个数字分别表示R、G、B,每个数字占用1个bit字节,这样总共需要24bits

        YUV能更高效颜色模型用更少的bit来表示颜色,Y——表示亮度,也就是灰阶值,U和V表示色度分量。

  •  YCbCr颜色模型基本原理:

        假设我们定义一个 「亮度(Luminance)」 的概念来表示颜色的亮度,那它就可以用含 R、G、B 的表达式表示为:

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

        Y 即「亮度」,kr、kg、kb 即 R、G、B 的权重值。

        可以定义一个 「色度(Chrominance)」 的概念来表示颜色的差异

    Cr = R – Y
    Cg = G – Y
    Cb = B – Y

        Cr、Cg、Cb 分别表示在 R、G、B 上的色度分量.。

  • YUV:关键是在于它的亮度信号 Y 和色度信号 U、V 是分离的,那就是说即使只有 Y 信号分量而没有 U、V 分量,我们仍然可以表示出图像,只不过图像是黑白灰度图像。在YCbCr 中 Y 是指亮度分量,Cb 指蓝色色度分量,而 Cr 指红色色度分量。
  • YCbCr 与 RGB 相互转换的公式:
    Y = 0.299R + 0.587G + 0.114B
    Cb = 0.564(B - Y)
    Cr = 0.713(R - Y)
    R = Y + 1.402Cr
    G = Y - 0.344Cb - 0.714Cr
    B = Y + 1.772Cb

        

二、H264编解码框架:

         视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式的文件的方式。H.264和H265编码是目前视频格式中用得最广泛的编码方式,H.264创造了多参考帧、多块类型、整数变换、帧内预测等新的压缩技术,使用了更精细的分像素运动矢量(1/4、1/8)和新一代的环路滤波器,使得压缩性能大大提高,系统更加完善。H.265是ITUTVCEG继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关技术加以改进。H.265旨在在有限的带宽下传输更高质量的网络视频,仅需要原先的一半带宽即可播放相同质量的视频。

        1、H264码流文件分层:

  • VCL(Video Coding Layer,视频编码层):负责高效的视频内容表示,VCL数据即编码处理的输出,它表示被压缩编码后的视频数据序列。
  • NAL(Network AbstractionLayer,网络提取层):负责以网络所要求的恰当的方式对数据进行打包和传送,是传输层。不管是在本地播放还是在网络上播放,都要通过这一层来传输。

        2、H264编码原理:

  •  H.264/AVC并未明确表述一个编解码器如何实现,而是规定了一个编码的视频比特流的句法和该比特流的解码方法,因此在实现上有较大的灵活性。H264和以前的H261、H.263、MPEG-1、MPEG-4 等的编解码器功能模块的组成类似,不同的部分是其内部各功能模块的细节部分,H.264编解码器的功能组成如下:

        音视频及H264/H256编码相关原理_第2张图片

  •  H.264/AVC 编解码器的工作原理。H.264编码器采用变换和预测混合编码方式。编码时,首先输入的帧或场Fn以宏块为单位被编码器处理。宏块有帧内和帧间两种模式。帧内模式使用当前帧内已编码的宏块进行预测。帧间模式使用以往一个或多个帧作为参考进行运动预测。然后,对预测值和原始值的差值进行变换、量化、重新排序和编码,对量化系统X进行逆

你可能感兴趣的:(音视频开发,音视频,视频编解码,H264编码,H265编码,音视频编解码)