H264--3--NAL层的处理[6]】的更多相关文章

1.NAL全称Network Abstract Layer, 即网络抽象层.         在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL).其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输.因此我们平时的每帧数据就是一个NAL单元(SPS与PPS除外).在实际的H264数据帧中,往往帧前面带有00 00 00 01 或 00 00 01分隔符,一般来说编码器编出的…
首先来介绍下h265(HEVC)nal单元头,与h264的nal层相比,h265的nal unit header有两个字节构成,如下图所示: 从图中可以看出hHEVC的nal包结构与h264有明显的不同,hevc加入了nal所在的时间层的ID,取去除了nal_ref_idc,此信息合并到了naltype中,通常情况下F为0,layerid为0,TID为1. nal单元的类型有如下几种: enum NalUnitType { NAL_UNIT_CODED_SLICE_TRAIL_N = 0,   …
转自:http://www.360doc.com/content/13/0124/08/9008018_262076786.shtml   SODB 数据比特串-->最原始的编码数据 RBSP 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit“1”)若干比特“0”,以便字节对齐. EBSP 扩展字节序列载荷-- >在RBSP基础上填加了仿校验字节(0X03)它的原因是: 在NALU加到Annexb上时,需要填加每组NALU之前的开始码…
H264--编码原理以及I帧B帧P帧--1 前言 ----------------------- H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内.所以对于一段变化不大图像画面,我们可以先编码出一个完整的图像帧A,随后的B帧就不编码全部图像,只写入与A帧的差别,这样B帧的大小就只有完整帧的1/…
H264码流打包分析 SODB 数据比特串-->最原始的编码数据 RBSP 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit“1”)若干比特“0”,以便字节对齐. EBSP 扩展字节序列载荷-- >在RBSP基础上填加了仿校验字节(0X03)它的原因是: 在NALU加到Annexb上时,需要填加每组NALU之前的开始码 StartCodePrefix,如果该NALU对应的slice为一帧的开始则用4位字节表示,ox00000001,否…
ffmpeg 从mp4上提取H264的nalu http://blog.csdn.net/gavinr/article/details/7183499 639     /* bitstream filters */640     REGISTER_BSF(AAC_ADTSTOASC,         aac_adtstoasc);641     REGISTER_BSF(CHOMP,                 chomp);642     REGISTER_BSF(DUMP_EXTRADA…
一视频编码介绍 1.1 视频压缩编码的目标 1)保证压缩比例 2)保证恢复的质量 3)易实现,低成本,可靠性 1.2 压缩的出发点(可行性) 1)时间相关性 在一组视频序列中,相邻相邻两帧只有极少的不同之处,这便是时间相关性. 2)空间相关性 在同一帧中,相邻象素之间有很大的相关性,两象素越近,侧相关性越强. 根据采用的信源的模型分类: 1)基于波形的编码 如果采用“一幅图像由许多象素构成”的信源模型,这种信源模型的参数就是象素的亮度和色度的幅度值,对这些参数进行编码的技术即为基于波形编码. 2…
H264 编码详解(收集转载) (1)       x264_param_default( x264_param_t *param ) 作用: 对编码器进行参数设定 cqm:量化表相关信息 csp: 量化表相关信息里的memset( param->cqm_4iy, 16, 16 ); memset( param->cqm_4ic, 16, 16 ); memset( param->cqm_4py, 16, 16 ); memset( param->cqm_4pc, 16, 16 )…
一. H264基础概念 1.名词解释 场和帧 :    视频的一场或一帧可用来产生一个编码图像.在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场. 片:             每个图象中,若干宏块被排列成片的形式.片分为I片.B片.P片和其他一些片. I片只包含I宏块,P片可包含P和I宏块,而B片可包含B和I宏块. I宏块利用从当前片中已解码的像素作为参考进行帧内预测. P宏块利用前面已编码图象作为参考图象进行帧内预测. B宏块则利用双向的参考图象(前一帧和后一帧)进行帧内预测. 片的目…
农历2014年底了,将前段时间工作中研究的FFMPEG解码H264流程在此做一下整理,也算作年终技术总结了! H264解码原理: H264的原理参考另一篇博文 http://blog.csdn.net/rootusers/article/details/43563133 H264分为NAL(网络抽象层)和VCL(视频编码层) 解码器的总框架: 解码器的流程为:将NAL数据位流输入到H264的解码器中,熵解码模块解码后输出量化系数X:系数经过反量化和反变换得到残差数据R:解码器使用从码流中解码的头…
补充笔记: 关于VCL:VCL层是指视频编码层,VCL NAL 单元是指那些nal_unit_type 值等于 1 到 5(包括 1 和 5)的 NAL 单元,这些单元都包含了视频数据.所有其他的 NAL 单元都称作非 VCL NAL 单元,PPS和SPS都是非VCLNAL单元.关于字节流NAL单元的格式:(起始码中0的长度)除了流开头的字节流NAL单元,大多字节流NAL单元的开头没有leading_zero_8bits (一个字节的0); nal_unit_type等于7(SPS)或8(PPS…
名词解释 场和帧 :    视频的一场或一帧可用来产生一个编码图像.在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场. 片         :    每个图象中,若干宏块被排列成片的形式.片分为I片.B片.P片和其他一些片. I片只包含I宏块,P片可包含P和I宏块,而B片可包含B和I宏块. I宏块利用从当前片中已解码的像素作为参考进行帧内预测. P宏块利用前面已编码图象作为参考图象进行帧内预测. B宏块则利用双向的参考图象(前一帧和后一帧)进行帧内预测. 片的目的是为了限制误码的扩散和传输…
------------------------------H.264的NAL层处理 ------------------------------ H264以NALU(NAL unit)为单位来支持编码数据在基于分组交换技术网络中传输. NALU定义了可用于基于分组和基于比特流系统的基本格式,同时给出头信息,从而提供了视频编码和外部世界的接口. H264编码过程中的三种不同的数据形式: SODB 数据比特串-->最原始的编码数据,即VCL数据: RBSP 原始字节序列载荷-->在SODB的后面…
基础传输结构 rtp中对于h264数据的存储分为两层,分别是 VCL: video coding layer 视频编码层 这是h264中block, macro block 以及 slice级别的定义,目的是为了独立网络传输,进行高效的编解码 NAL: network abstraction layer 网络提取层 NAL层的不同是为了根据不同的网络把VCL数据进行打包成不同的格式,进行传输 NAL H264中的数据分组有头部(譬如: pkt->data),解码器可以很方便的检测到NAL的分界,…
H264 结构 https://blog.csdn.net/andywang201001/article/details/80274886 H264 源码  https://www.cnblogs.com/TaigaCon/p/5215448.html 一.视频编码标准化组织 H.264标准是属于MPEG-4家族的一部分,即MPEG-4系列文档ISO-14496的第10部分,因此又称作MPEG-4/AVC. 二.视频压缩编码的基本技术 预测编码 帧间预测编码,前后两帧之间有数据冗余,差分之后数据…
---恢复内容开始--- 基本概念的理解 H.264的主要目标:1.高的视频压缩比2.良好的网络亲和性 解决方案:VCL video coding layer 视频编码层NAL network abstraction layer 网络提取层 VCL:核心算法引擎,块,宏块及片的语法级别的定义NAL:片级以上的语法级别(如序列参数集和图像参数集),同时支持以下功能:独立片解码,起始码唯一保证,SEI以及流格式编码数据传送 VCL设计目标:尽可能地独立于网络的情况下进行高效的编解码NAL设计目标:根…
录制程序要添加新功能:录制CMMB电视节目,我们的板卡发送出来的是RTP流(H264视频和AAC音频),录制程序要做的工作是: (1)接收并解析RTP包,分离出H264和AAC数据流: (2)将H264视频和AAC音频以某种格式封装,最后存成文件,供用户查看. 第一步已经有部分代码可供参考,因此很快就完成了. 第二步,我们决定封装成mp4,查找了一些资料后,决定使用开源库mp4v2来合成mp4文件. 技术路线已确定,就开工干活. (一)mp4格式的基础知识. 关于mp4格式,网上介绍的不少,有以…
1. H264视频的RTP封包 static int h264_parse(Track *tr, uint8_t *data, size_t len) { h264_priv *priv = tr->private_data; //    double nal_time; // see page 9 and 7.4.1.2 size_t nalsize = 0, index = 0; uint8_t *p, *q; if (priv->is_avc) { while (1) { unsigne…
录制程序要添加新功能:录制CMMB电视节目,我们的板卡发送出来的是RTP流(H264视频和AAC音频),录制程序要做的工作是: (1)接收并解析RTP包,分离出H264和AAC数据流: (2)将H264视频和AAC音频以某种格式封装,最后存成文件,供用户查看. 第一步已经有部分代码可供参考,因此很快就完成了. 第二步,我们决定封装成mp4,查找了一些资料后,决定使用开源库mp4v2来合成mp4文件. 技术路线已确定,就开工干活. (一)mp4格式的基础知识. 关于mp4格式,网上介绍的不少,有以…
请看文档rfc3984 1.看h264的帧 SPS序列參数帧 00 00 00 01 67 64 . . .. PPS图像參数帧 00 00 00 01 68 EE... . I帧 00 00 00 01 65 EE.. .. P帧 00 00 00 01 61 E0 ... 2. rtp头 RTP 头格式例如以下: RTP 头的结构: 0                   1                   2                   3        0 1 2 3 4 5…
总的来说H264的码流的打包方式有两种,一种为annex-b byte stream format的格式,这个是绝大部分编码器的默认输出格式,就是每个帧的开头的3~4个字节是H264的start_code,0x00000001或者0x000001.另一种是 avcc byte stream format的格式,不过没 annex b 常用. AnnexB格式:NALU数据+开始前缀(00000001或000001,此处注意为甚么是4bit或3bit) 下面说明3字节起始码和4字节起始码. 以下和…
static int h264_parse(Track *tr, uint8_t *data, size_t len) { h264_priv *priv = tr->private_data; //    double nal_time; // see page 9 and 7.4.1.2 size_t nalsize = 0, index = 0; uint8_t *p, *q; if (priv->is_avc) { while (1) { unsigned int i; if(inde…
前言 音视频开发需要你懂得音视频中一些基本概念,针对编解码而言,我们必须提前懂得编解码器的一些特性,码流的结构,码流中一些重要信息如sps,pps,vps,start code以及基本的工作原理,而大多同学都只是一知半解,所以导致代码中的部分内容虽可以简单理解却不知其意,所以,在这里总结出了当前主流的H.264,H.265编码相关的原理,以供学习. 1. 概览 1.1. 为什么要编码 众所周知,视频数据原始体积是巨大的,以720P 30fps的视频为例,一个像素大约3个字节,如下所得,每秒钟产生…
H.264的NALU,RTP封包说明(转自牛人) 2010-06-30 16:28 H.264 RTP payload 格式 H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) NALU 头由一个字节组成, 它的语法如下: +---------------+       |0|1|2|3|4|5|6|7|       +-+-+-+-+-+-+-+-+       |F|NRI| Type   |       +---------------+ F: 1 个比特. for…
名词解释 场和帧 :    视频的一场或一帧可用来产生一个编码图像.在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场. 片:             每个图象中,若干宏块被排列成片的形式.片分为I片.B片.P片和其他一些片. I片只包含I宏块,P片可包含P和I宏块,而B片可包含B和I宏块. I宏块利用从当前片中已解码的像素作为参考进行帧内预测. P宏块利用前面已编码图象作为参考图象进行帧内预测. B宏块则利用双向的参考图象(前一帧和后一帧)进行帧内预测. 片的目的是为了限制误码的扩散和传输…
一.H264 概述 H.264,通常也被称之为H.264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC) 1. H.264视频编解码的意义 H.264的出现就是为了创建比以前的视频压缩标准更高效的压缩标准,使用更好高效的视频压缩算法来压缩视频的占用空间,提高存储和传输的效率,在获得有效的压缩效果的同时,使得压缩过程引起的失真最小.MPEG-4 AVC和H.264 是目前较为主流的编码标准.主要定义了两方面的内容:视频数据压缩形式的编码表示和用重建视频信息的语法来…
转自:http://blog.csdn.net/yangzhongxuan/article/details/8003494 名词解释 场和帧 :    视频的一场或一帧可用来产生一个编码图像.在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场. 片:             每个图象中,若干宏块被排列成片的形式.片分为I片.B片.P片和其他一些片. I片只包含I宏块,P片可包含P和I宏块,而B片可包含B和I宏块. I宏块利用从当前片中已解码的像素作为参考进行帧内预测. P宏块利用前面已编码图…
6.1.2.源码简单浏览 6.1.3.重点1:h.264帧结构6.1.4.重点2:帧结构分析软件的使用6.1.5.重点3:rtsp网络编程6.1.6.重点4:wireshark网络抓包工具的使用 6.2.H264编码原理和基本概念6.2.1.h.264编码原理(1)图像冗余信息:空间冗余.时间冗余(2)视频编码关键点:压缩比.算法复杂度.还原度(3)H.264的2大组成部分:视频编码层VCL和网络抽象层面NAL Network Abstract Layer,6.2.2.h.264编码相关的一些概…
H.264的重要性不再提了.本文主要记录一下H.264的编码格式.H.264官方文档:https://github.com/jiayayao/DataSheet/tree/master/encode-decode/h264. H.264从层次来看分为两层:视频编码层(VCL, Video Coding Layer)和网络提取层(NAL,Network Abstraction Layer).VCL输出的是原始数据比特流(SODB,String of data bits),表示H.264的语法元素编…
1.帧和场的概念 视频的一场或一帧可用来产生一个编码图像.通常,视频帧可以分成两种类型:连续或隔行视频帧.我们平常看的电视是每秒25帧,即每秒更换25个图像,由于视觉暂留效应,所以人眼不会感到闪烁.每帧图像又是分为两场来进行扫描的,这里的扫描是指电子束在显像管内沿水平方向一行一行地从上到下扫描,第一场先扫奇数行,第二场扫偶数行,即我们常说的隔行扫描,扫完两场即完成一帧图像.当场频为50Hz,帧频为25Hz时,奇数场和偶数场扫描的是同一帧图像,除非图像静止不动,否则相邻两帧图像不同.基数行和偶数行…