Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于264中的startcode

关于264中的startcode

作者头像
lcyw
发布于 2022-06-10 11:37:26
发布于 2022-06-10 11:37:26
40200
代码可运行
举报
文章被收录于专栏:machh的专栏machh的专栏
运行总次数:0
代码可运行

startcode的两种形式

3字节的0x000001和4字节的0x00000001

引用一段H264标准(Annex B)的说明:

x264 uses 3 byte start codes where the spec says those start codes can be used. 4 byte start codes must be used at the start of SPS, PPS, and in the first NAL of a frame.

leading_zero_8bits is a byte equal to 0x00.

NOTE – The leading_zero_8bits syntax element can only be present in the first byte stream NAL unit of the bitstream, because(as shown in the syntax diagram of subclause B.1.1) any bytes equal to 0x00 that follow a NAL unit syntax structure and precede the four-byte sequence 0x00000001 (which is to be interpreted as a zero_byte followed by a start_code_prefix_one_3bytes) will be considered to be trailing_zero_8bits syntax elements that are part of the preceding byte stream NAL unit.

为什么需要startcode

主要是为了将相邻两个NALU划分开,让他们有一个界线,方便解码,比如将h264的数据存储在一个文件当中,解码器无法从数据流中分别每个NALU的起始位置。

在编码时,每个NALU前面添加startcode(占4字节0x00000001或者3字节0x000001),这里有人会想到万一中间出现0x000001怎么办呢,h264有个防止竞争的机制,在编码完一个NAL时,如果出现有连续两个0x00字节,就在后面插入一个0x03(解码的时候这个0x03会被丢弃)。

起始部分占4字节还是3字节?

实际上startcode只占3字节,4字节的起始部分 = zero_byte + start_code_prefix_one_3bytes,就是说无论啥时候其实startcode都是3字节,关键就在于zero_byte。

  1. 包含sps,pps的NALU前面要加zero_byte(4字节)。
  2. 当一帧被分为多个slice时,首个NALU前面要加zero_byte(4字节)参见7.4.1.2.3。也就是,当一个完整的帧被编为多个slice的时候,除掉第一个NALU,剩下的都用3字节的,其余的都是4字节。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
      SPS4字节头)
      PPS4字节头)
      SEI4字节头)
      I0(slice0)4字节头)
      I0(slice1)3字节头)
      P1(slice0)4字节头)
      P1(slice1)3字节头)
      P2(slice0)4字节头)
      P2(slice1)3字节头)

I0(slice0)是序列第一帧(I帧)的第一个slice,是当前Access Unit的首个nalu,所以是4字节头。

而I0(slice1)表示第一帧的第二个slice,所以是3字节头。

P1(slice0) 、P1(slice1)同理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 音视频开发训练营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
H.264编码格式简单分析
  H.264的重要性不再提了。本文主要记录一下H.264的编码格式。H.264官方文档:https://github.com/jiayayao/DataSheet/tree/master/encode-decode/h264。
望天
2019/07/11
2K0
H.264编码格式简单分析
H.264格式分析
一.H.264基本流结构 H.264 的基本流(elementary stream,ES)的结构分为两层,包括视频编码层(VCL)和网络适配层(NAL)。视频编码层负责高效的视频内容表示,而网络适配层负责以网络所要求的恰当的方式对数据进行打包和传送。引入NAL并使之与VCL分离带来的好处包括两方面:1、使信号处理和网络传输分离,VCL 和NAL 可以在不同的处理平台上实现;2、VCL 和NAL 分离设计,使得在不同的网络环境内,网关不需要因为网络环境不同而对VCL比特流进行重构和重编码。 ☆VCL(Vide
_gongluck
2018/03/08
5K0
H.264格式分析
H264码流分析导读
H.264的功能分为两层:视频编码层(VCL, Video Coding Layer)和网络提取层(NAL, Network Abstraction Layer) VCL数据即编码处理的输出,它表示被压缩编码后的视频数据序列。在VCL数据传输或存储之前,这些编码的VCL数据,先被映射或封装进NAL单元中。每个NAL单元包括一个原始字节序列负荷(RBSP, Raw Byte Sequence Payload)、一组对应于视频编码的NAL头信息。RBSP的基本结构是:在原始编码数据的后面填加了结尾比特。一个bit“1”若干比特“0”,以便字节对齐。
deep_sadness
2018/08/30
2.1K0
H264码流分析导读
H264和H265的nalu介绍
本篇介绍下H264和H264的编码格式,包括avcc,annexb,以及转换方法。annexb 用于实时流的场景,avcc用于多媒体文件,如mp4,mkv等场景。
一只小虾米
2022/10/25
2.9K0
H264和H265的nalu介绍
Android音视频H264码流结构
format,这个是官方h264协议文档中规定的格式,所以它是大多数编码器默认的编码后的输出格式。它的基本数据单位为NAL单元,简称NALU`(Network
花落花相惜
2021/11/24
6160
音视频开发之旅(56) -H264/AVC基本结构
音视频编码的标准由标准发展组织制定,主要两大组织:ISO(国际标准化组织和国际电工委员会)和ITU-T(国际电信联盟的电信标准化部门)
音视频开发之旅
2021/09/04
1K0
音视频八股文(8)-- h264 AnnexB
H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准⾥称为H.264,在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10,⼜叫Advanced Video Codec,因此常常称为MPEG-4 AVC或直接叫AVC。
福大大架构师每日一题
2023/06/09
6400
音视频八股文(8)-- h264 AnnexB
音视频基础(3):h264码流结构
H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。这个标准通常被称之为H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明确的说明它两方面的开发者。
用户6280468
2022/11/28
1.2K0
音视频基础(3):h264码流结构
音视频八股文(8)-- h264 AnnexB
H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准⾥称为H.264,在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10,⼜叫Advanced Video Codec,因此常常称为MPEG-4 AVC或直接叫AVC。
福大大架构师每日一题
2023/04/28
5580
H264之NALU解析
H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准⾥称 为H.264,在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10,⼜叫Advanced Video Codec,因此常常称为MPEG-4 AVC或直接叫AVC:
用户6280468
2022/03/21
2.3K0
H264之NALU解析
SkeyeARS 视频编码之H.264结构详解
H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。
Openskeye
2023/04/03
4090
H.264编码及AAC编码基础
本节重点讲解了 H.264 编码以及 AAC 编码,在对其进行讲解前先介绍了视频编码的实现原理。
Gnep@97
2023/09/10
1.2K0
H.264编码及AAC编码基础
rtp协议详解
RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550。RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输控制协议)。RTP用来为IP网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。RTP为Internet上端到端的实时传输提供时间信息和流同步,但并不保证服务质量,服务质量由RTCP来提供。
全栈程序员站长
2022/09/07
1.6K0
rtp协议详解
Android RTMP推流之MediaCodec硬编码一(H.264进行flv封装)
在前面Android平台下使用FFmpeg进行RTMP推流(摄像头推流)的文章中,介绍了如何使用FFmpeg进行H264编码和Rtmp推流。接下来讲分几篇文章来介绍如何使用Android系统的MediaCodec进行H264硬编码,然后封装推流。这一块涉及的内容很多,其中涉及一些基础知识也会有单独文章介绍比如flv格式。这篇文章主要介绍如何用MediaCodec进行编码,然后将编码后的数据进行flv封装。
用户2929716
2018/08/23
4K1
Android RTMP推流之MediaCodec硬编码一(H.264进行flv封装)
H.264流媒体协议格式中的Annex B格式和AVCC格式深度解析
首先要理解的是没有标准的H.264基本流格式。文档中的确包含了一个Annex,特别是描述了一种可能的格式Annex B格式,但是这个并不是一个必须要求的格式。标准文档中指定了视频怎样编码成独立的包,但是这些包是怎样存储和传输的却是开放的。
用户6280468
2023/08/31
1.2K0
H.264流媒体协议格式中的Annex B格式和AVCC格式深度解析
mp4 文件中的h264 avc1格式介绍
转自:http://www.mworkbox.com/wp/work/314.html
全栈程序员站长
2022/11/03
4.6K0
Golang开发中如何判断H265中的视频帧类型
我们很多项目都是通过Golang编译的,比如EasyNVR、EasyGBS、EasyDSS等,对于Golang的使用,我们一直都会不断研究。在Golang中,需求中提供了相对应的解析包,例如h265parser。
TSINGSEE青犀视频
2021/12/10
1.3K0
从零实现一个h264解码器(一)
大家好,今天给大家分享一个系列文章,是关于h264解码器的,实战性比较多,文章里面就不会过多介绍关于h264的相关基础知识了。
用户6280468
2022/03/21
1K0
从零实现一个h264解码器(一)
常见视频编码格式解析[通俗易懂]
MPEG2-TS(Transport Stream“传输流”;又称TS、TP、MPEG-TS或M2T)是用于音效、图像与数据的通信协定,最早应用于DVD的实时传送节目。 区别:   DVD节目中的MPEG2格式,确切地说是MPEG2-PS,全称是Program Stream(程序流),而TS的全称则是Transport Stream(传输流)。MPEG2-PS主要应用于存储的具有固定时长的节目,如DVD电影,可添加字幕等一些程序操作。而MPEG-TS则主要应用于实时传送的节目,比如实时广播的电视节目。   简单地说,将DVD上的VOB文件的前面一截cut掉(或者是数据损坏数据)就会导致整个文件无法解码,而电视节目是任何时候打开电视机都能解码(收看)的。所以MPEG2-TS格式的特点就是从视频流的任一片段开始都是可以独立解码。
全栈程序员站长
2022/09/28
4.9K0
常见视频编码格式解析[通俗易懂]
H.264码流结构及QP值提取
在H.264中,量化参数分3个级别给出:图像参数集(pps)、片头(slice_header)、宏块(mb)。
walkerfang
2019/08/25
5.5K0
H.264码流结构及QP值提取
相关推荐
H.264编码格式简单分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验