美文网首页Android开发经验谈Android开发
深入讲解音视频编码原理,H264码流详解——切片

深入讲解音视频编码原理,H264码流详解——切片

作者: Android进阶架构 | 来源:发表于2020-08-04 21:26 被阅读0次

    视频流H264的组装

    1 H264介绍

    我们了解了什么是宏快,宏快作为压缩视频的最小的一部分,需要被组织,然后在网络之间做相互传输。

    H264更深层次 ---》宏块 太浅了

    ​ 如果单纯的用宏快来发送数据是杂乱无章的,就好像在没有集装箱 出现之前,货物总是随意被堆放到船上。

    上货(编码),下货是非常痛苦的。 当集装箱出现之后,一切都发生了改变,传输效率大大增高。

    ​ 集装箱可以理解成H264编码标准,他制定了相互传输的格式,将宏快 有组织,有结构,有顺序的形成一系列的码流。这种码流既可 通过 InputStream 网络流的数据进行传输,也可以封装成一个文件进行保存

    H264: H264/AVC是广泛采用的一种编码方式 。 主要作用是为了传输

    1.1 H264码流组成

    组成H264码流的结构中 包含以下几部分 ,从大到小排序依次是

    H264视频序列,图像,片组,片,NALU,宏块 ,像素。

    类似 地球 国家 城市 镇 村落

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

    H264是一种码流 类似与一种不见头,也不见尾的一条河流。如何从和流中取到自己想要的数据呢,

    在H264的标砖中有这样的一个封装格式叫做"Annex-B"的字节流格式。 它是H264编码的主要字节流格式。

    几乎市面上的编码器是以这种格式进行输出的。起始码0x 00 00 00 01 或者 0x 00 00 01 作为分隔符

    两个 0x 00 00 00 01之间的字节数据 是表示一个NAL Unit

    1.1.3 编码结构

    切片头:包含了一组片的信息,比如片的数量,顺序等等

    1.1.4 H264码流分层结构图

    后续:

    相关文章

      网友评论

        本文标题:深入讲解音视频编码原理,H264码流详解——切片

        本文链接:https://www.haomeiwen.com/subject/eglgrktx.html