当前位置: 首页> 教育> 高考 > 永久免费的软件_微信小程序工具类排行_百度seo外链推广教程_视频网站搭建

永久免费的软件_微信小程序工具类排行_百度seo外链推广教程_视频网站搭建

时间:2025/7/11 15:10:42来源:https://blog.csdn.net/Zhouzi_heng/article/details/146033009 浏览次数:0次
永久免费的软件_微信小程序工具类排行_百度seo外链推广教程_视频网站搭建

1 简介

H264、H265、VP8、VP9、AVS、AVS2 都是常见的视频编码格式,它们在不同的应用场景和设备上发挥着重要作用,各有其特点和优势。

H264 编码格式

  • 特点:H264(或称为 AVC)是目前最广泛使用的视频编码格式之一,提供了高效的压缩比,使得视频文件在保持较高质量的同时占用较小的存储空间。

  • 应用场景:广泛应用于网络视频流、高清电视广播以及各种移动设备上,在前端开发中,H264 编码的视频通常具有良好的兼容性和性能表现。

  • 设备兼容性:H264 编码格式的设备兼容性非常好,几乎所有支持视频播放的设备都支持 H264 编码。

H265 编码格式

  • 特点:H265(或称为 HEVC)是 H264 的继任者,提供了更高的压缩效率,能够在相同质量下实现更小的文件大小,或在相同文件大小下提供更高的视频质量。

  • 应用场景:H265 逐渐在高清和超高清视频领域得到应用,尤其是 4K 和 8K 视频内容。

  • 设备兼容性:与 H264 相比,H265 的硬件和软件支持可能仍然有限。

VP8 编码格式

  • 特点:VP8 是由 Google 开发的开源视频编码格式,旨在提供高效的压缩性能和良好的网络适应性,特别适用于 Web 视频流和实时通信场景。

  • 应用场景:常用于 WebM 容器格式,适合网页视频和移动设备。

  • 设备兼容性:在 Google 的推动下,VP8 在 Android 设备和 Chrome 浏览器上具有较好的支持。

VP9 编码格式

  • 特点:VP9 是 Google 推出的另一种开源视频编码格式,在压缩效率上相较于 VP8 有所提升,并支持更高的分辨率和帧率。

  • 应用场景:YouTube 大量使用 VP9 来降低高清视频带宽需求。

  • 设备兼容性:VP9 在 Android 设备和 Chrome 浏览器上具有良好的支持,但在其他设备上的支持可能不如 VP8 广泛。

AVS 编码格式

  • 特点:AVS 是中国自主知识产权的视频编码标准,具有高压缩率和良好的视频质量。

  • 应用场景:在标准清晰度和高清视频编码方面具有一定的优势,适用于视频存储和传输。

  • 设备兼容性:AVS 编码格式在中国的设备上具有较好的支持,但在国际上的设备兼容性可能有限。

AVS2 编码格式

  • 特点:AVS2 是 AVS 的升级版,进一步提高了压缩效率和视频质量。

  • 应用场景:适用于超高清视频的编码和传输,如 4K 和 8K 视频内容。

  • 设备兼容性:AVS2 编码格式的设备兼容性正在逐步提高,但在一些老旧设备上可能无法正常解码。

2 H264 编码格式相关概念

  • SPS(Sequence Parameter Set,序列参数集)

    • profile它定义了编码工具集和算法的特定组合,以满足不同的应用需求和兼容性要求。例如,Baseline Profile 主要用于低复杂度的应用场景,如视频通话等;High Profile 则适用于高清和超高清视频,提供更好的压缩效率和质量。

    • 视频宽度 :即视频帧的宽度,以像素为单位,它与视频的高度共同决定了视频的分辨率,如1920×1080 表示视频宽度为 1920 像素,高度为 1080 像素。

  • PPS(Picture Parameter Set,图像参数集) :它包含了一些针对具体图像的编码参数,如宏块的编码方式等。宏块是 H264 编码中的基本单元,PPS 可以指定宏块的大小、编码模式等信息,以优化编码效率和质量。

  • I 帧(Intra-coded picture,内部编码帧)I 帧是一种不依赖于其他帧的视频帧,它通过自己和自己压缩来编码,包含了完整的图像信息,因此在解码时可以直接解码并显示,而不需要参考其他帧。在直播场景中,I 帧通常作为关键帧周期性地出现,用于快速同步和恢复视频画面,减少累积误差。

  • P 帧(Predictive-coded picture,预测编码帧)P 帧是根据前面的 n 帧,通过前面的帧进行差值得到当前帧。它利用了视频在时间上的相关性,即相邻帧之间存在一定的相似性,通过预测前面帧的运动信息来编码当前帧,从而减少数据量。在直播场景中,P 帧的使用可以有效提高编码效率,降低带宽占用。

  • B 帧(Bidirectionally predictive-coded picture,双向预测编码帧)B 帧是根据前后帧来得到当前帧,它不仅可以参考前面的帧,还可以参考后面的帧进行预测编码。这种双向预测的方式可以使 B 帧的编码效率更高,因为它能够更准确地捕捉到视频中的运动信息,进一步减少数据量。不过,B 帧的解码顺序和显示顺序可能会不同,需要根据 DTS 和 PTS 进行正确的排序。

PTS 和 DTS

  • PTS(Presentation Time Stamp,显示时间戳)它表示解码后的帧应该在何时显示给用户,是按照视频的播放顺序来排列的。解码后的视频帧需要根据 PTS 的顺序进行显示,以保证视频的正确播放和同步。

  • DTS(Decoding Time Stamp,解码时间戳)它表示将视频帧送入解码器的顺序,解码器根据 DTS 的顺序对视频帧进行解码处理。由于 B 帧的存在,DTS 的顺序可能与 PTS 的顺序不同,解码器需要按照 DTS 的顺序对视频帧进行解码,然后再按照 PTS 的顺序进行显示。

例如,在一个视频序列中,I、P、B、B

   帧的显示顺序(PTS)是 1、4、2、3,(播放顺序)

       而解码顺序(DTS)是 1、2、3、4。

这是因为 B 帧需要参考后面的 P 帧进行解码,所以在解码时需要先解码 P 帧,然后再解码 B 帧,但显示时则需要按照正确的时间顺序来呈现画面。

3 H264存储的两种形态

H264 编码的视频数据在存储和传输过程中有两种常见的形态:Annex B 和 AVCC(AVC File Format)。这两种形态主要区别在于对 NALU(Network Abstract Layer Unit)的处理方式。

Annex B

  • Start Code(NALU) :在 Annex B 格式中,每个 NALU 都以一个起始码(Start Code)开头。起始码通常是 3 字节或 4 字节的特殊字节序列,如 0x000001 或 0x00000001。起始码的作用是标识一个 NALU 的开始,便于解码器正确地分割和识别 NALU。

  • 防竞争字节 :为了防止起始码与视频数据中的某些字节序列冲突,Annex B 格式中会插入防竞争字节。防竞争字节通常是在起始码之前插入一个 0x00 字节,以确保起始码的唯一性和可识别性。

  • 多用于网络流媒体中 :Annex B 格式适用于网络流媒体传输,因为它通过起始码来标识 NALU 的边界,这种方式在网络传输中具有较好的鲁棒性和兼容性,能够适应不同的网络环境和协议。

AVCC

  • 表示 NALU 长度的前缀,不定长 :在 AVCC 格式中,每个 NALU 前面会有一个长度前缀,用于表示该 NALU 的字节长度。这个长度前缀的长度可以是 1 字节、2 字节或 4 字节,具体长度取决于视频数据的大小和存储需求。长度前缀的作用是告诉解码器当前 NALU 的长度,以便正确地读取和处理 NALU。

  • 防竞争字节 :与 Annex B 类似,AVCC 格式中也会使用防竞争字节来避免起始码与视频数据中的字节序列冲突。防竞争字节的插入方式与 Annex B 相同,通常是在起始码之前插入一个 0x00 字节。

  • 多用于文件存储中 :AVCC 格式适用于文件存储,因为它通过长度前缀来标识 NALU 的边界,这种方式在文件存储中具有更好的结构化和可管理性,便于文件的解析和处理。

NALU(Network Abstract Layer Unit)

NALU 是 H264 编码中的基本单元,它包含了视频数据和相关的控制信息。每个 NALU 都有一个头部,其中包含了一些重要的字段,如 NALU 类型(NALU Type)等。

  • 记住 1/5/7/8 :在 H264 中,NALU 类型是一个重要的概念,不同的 NALU 类型代表了不同的视频数据或控制信息。以下是一些常见的 NALU 类型:

    • NALU 类型 1(Coded slice of a non-IDR picture) :表示一个普通的视频帧切片,通常是 P 帧或 B 帧的切片。

    • NALU 类型 5(Coded slice of an IDR picture) :表示一个 IDR 帧切片,IDR 帧是一种特殊的 I 帧,它不允许参考之前的任何帧,用于随机访问和关键帧。

    • NALU 类型 7(Sequence parameter set) :即 SPS,包含了序列参数集,定义了视频的全局编码参数,如视频分辨率、帧率等。

    • NALU 类型 8(Picture parameter set) :即 PPS,包含了图像参数集,定义了图像级别的编码参数,如宏块的编码方式等。

NALU 的 VCL 和 NAL 对应的 nal_unit_type 类型

nal_unit_type描述归属层级备注
0未定义-保留,不使用。
1非 IDR 帧(编码后的片数据)VCL普通帧,如 P 帧、B 帧等。
2数据分片 AVCL用于分片传输的 A 类数据片。
3数据分片 BVCL用于分片传输的 B 类数据片。
4数据分片 CVCL用于分片传输的 C 类数据片。
5IDR 帧(关键帧)VCLI 帧,随机访问点,重置解码器参考帧。
6补充增强信息(SEI)NAL包含附加信息(如时间戳、场景切换标记等)。
7序列参数集(SPS)NAL定义视频序列的全局参数(如分辨率、帧率等)。
8图像参数集(PPS)NAL定义单个图像的参数(如熵编码模式、分片信息等)。
9边界符(Access Unit Delimiter)NAL标记访问单元边界,辅助解析器解析视频流。
10结束序列(End of Sequence)NAL指示序列结束。
11结束流(End of Stream)NAL指示整个码流结束。
12填充数据(Filler Data)NAL占位符,用于填充码率或对齐数据流。
13保留NAL当前未使用,保留以备未来扩展。
14-23未定义-预留类型,具体使用取决于扩展协议。
关键字:永久免费的软件_微信小程序工具类排行_百度seo外链推广教程_视频网站搭建

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: