H264码流_h264 interlace-程序员宅基地

技术标签: 音视频  

分层
NAL 层(网络抽象层)用于网络传输的层

纠错、乱序、知道包的起始和结束

VCL层(视屏数据编码层)

视屏帧序列

一般一个图像一个slice, 但也可以一张图像可以分很多slice,方便传输。涉及到很多编码的东西。

一个视频有很多帧组成,帧是压缩后的图像。每个帧是由一个或多个slice组成,每个slice有多个宏块组成。

码流的基本概念
SODB 原始数据流,长度不一定是8的整数倍
RBSP 字节对齐流,SODB 字节流不对齐(8的整数倍)补1或补多个0
NALU 
NAL Header(1B)+RBSP

 

 

 Annexb 格式: 保存为文件格式,可以播放,startcode 每个NAL单元标志
RTP 格式:网络传输

总结:

1:一个NAL单元最多就一个slice(片),因为还有其他类型的NAL,
比如nal_unit_type字段的值为7时是表示sps序列参数集,
值为8时是表示PPS 图形参数集。

2、
H264的编码方式有两种:帧编码(Frame)和场编码(Interlace)
其中,帧编码一般一个NAL单元就一个图像Slice,场编码则由顶场和底场构成,
每个NAL单元可能包含多个图像SLICE片,也有可能就一个,但只有同一个Frame_Num的顶场和底场,
才能构成一幅完整图像。
因此,一帧不一定就是一个NAL单元,一帧可能有多个NAL单元组成。
一帧里面可能有多个NAL单元(也就是slice)。


3、NAL单元的头信息中的nal_unit_type字段我们能知道当前类型是sps,pps和IDR类型。

4、slice 片的头部信息可以判断帧类型

5、判断IDR、I、P、B的类型,就是通过SLICE_HEADER的信息来看,看它的SLICE_TYPE是哪种

6、对于H.264来说1个AVPacket的data通常对应一个NAL。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cindywry/article/details/111883743

智能推荐

Qt QWidget的Native化及解决子窗口弹出后,主窗口标题栏不响应鼠标消息的问题_qt 子窗口使用winid导致主窗口有问题-程序员宅基地

文章浏览阅读2.9k次。QWidget的Native化及解决Widget变成Native窗口可能引起的问题在无边框可拖动的主界面标题栏鼠标事件被别的Native窗口接收,无法响应鼠标事件QLabel等基础布局都变成拥有句柄的window,在nativeEventFilter过滤事件时候需要考虑这些基础部件如何防止子部件Native化呢?QApplication::setAttribute(Qt::AA..._qt 子窗口使用winid导致主窗口有问题

jQuery获取元素上一个、下一个、父元素、子元素_jq 上一个元素-程序员宅基地

文章浏览阅读1.6w次,点赞2次,收藏13次。jQuery获取:jQuery.parent(expr),找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent(".class")jQuery.parents(expr),类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于父元素jQuery.children(expr),返回所有子节点,这个方法只..._jq 上一个元素

海上风电场对雷达性能的影响——雷达回波_海上风机 雷达 matlab-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏13次。海上风电场对雷达性能的影响——雷达回波_海上风机 雷达 matlab

Opencv学习——仿射变换和透视变换_仿射变换是透视变换的一种特殊情况-程序员宅基地

文章浏览阅读3.6k次。仿射变换是一种二维坐标之间的变换,变换前后保持图形的平直性和平行性。仿射变换可以理解为是向量经过一次线性变换和一次平移变换。 透视变换可以看做是二维与三维坐标之间的变换,变换前后没有了仿射变换的特性。其实仿射变换是透视变换的一种特殊形式。_仿射变换是透视变换的一种特殊情况

从壹开始学习NetCore 44 ║ 最全的 netcore 3.0 升级实战方案-程序员宅基地

文章浏览阅读1.7k次。缘起1、哈喽大家中秋节(后)好呀!感觉已经好久没有写文章了,但是也没有偷懒哟,我的视频教程《系列一、NetCore 视频教程(Blog.Core)》也已经录制八期了,还在每周末同步更新中,欢迎大家多多指教。2、除此之外呢,我也在平时的时间帮朋友开发了一个小项目,就是使用 .net mvc+vue+ele+mongo 框架写的项目,之前一直想着用mvc结合着vue写,这次也终于..._edmx升级 .net core

Abaqus: 有限元模型基本操作_abaqus 自带的 gtn 模型 使用-程序员宅基地

文章浏览阅读617次。Abaqus: 有限元模型基本操作_abaqus 自带的 gtn 模型 使用

随便推点

Ubuntu16.04安装、升级cmake方法_ubuntu16.04 如何编译安装 cmake-程序员宅基地

文章浏览阅读2.3k次。本文将介绍Ubuntu如何快速安装cmake的方法以及安装升级特定版本cmake的方法1. 使用默认安装方法sudo apt install cmake 查看cmake版本命令:cmake --version2. 安装特定版本方法下载所需版本cmake官网下载地址官方网址各版本下载地址下载解压缩后进入解压文件解压命令Ubuntu系统下 .7z 文件压缩解压命令执行编译安装命令./configure --prefix=/usrsudo make -j4 #参数-j4可._ubuntu16.04 如何编译安装 cmake

GEE长时序月均值MNDWI计算与导出_gee中的mean-程序员宅基地

文章浏览阅读4k次,点赞11次,收藏53次。背景:有小伙伴需要计算近20年间每月的MNDWI合成图,大津算法OTSU提取水体,并自动导出水体二值图。该程序实现了,计算每个月的合成图像组合成imageCollection,再计算该集合的MNDWI,大津算法OTSU提取水体,并自动导出水体二值图。话不多说,直接上代码。// author by lvbta;// email: [email protected];var geometry = /* color: #d63000 */ /* shown: fal_gee中的mean

挑战全网最全之django系列_django devops-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏6次。挑战全网最全django教程_django devops

在Qt中编写代码让控件位置大小随窗口大小改变而改变_qt将控件固定大小去除,使用代码让其大小可以改变-程序员宅基地

文章浏览阅读6.3k次,点赞3次,收藏41次。第一步:首先建一个Qt Widgets Application工程(带ui文件)。头文件和源文件没有改名,为mainwindow.h和mainwindow.cpp第二步:在ui文件中,拖上你的所需的控件。我这里拖了4个Label控件和一个Buttion。第三步:在头文件中添加如下一行代码(即要重写resizeEvent函数)protected:virtual void resizeEv..._qt将控件固定大小去除,使用代码让其大小可以改变

基于FAST的TSN交换(3)TSN循环队列转发(CQF)原理_循环排队转发-程序员宅基地

文章浏览阅读7k次,点赞9次,收藏54次。基于FAST的TSN交换(3)TSN循环队列转发(CQF)原理    为了支持确定性的交换,TSN对802.1Q-2014标准进行了扩充。其中单流过滤和管控机制(PSFP)中的时间门控逻辑控制了时间敏感分组进入缓存队列的时间,而时间敏感流增强调度(EST)机制中的输出门控机制控制了分组离开输出队列的时间。基于对PSFP和EST机制的不同配置,TSN交换机可以实现多样的确定性转发,满足不同场景..._循环排队转发

linux java 中文文件名_在linux下显示中文目录和文件名-程序员宅基地

文章浏览阅读363次。选择一个一劳永逸的方法,就是修改/etc/下的fstab文件,我的fstab内容如下:/dev/hda9 / ext2 defaults 1 1/dev/hda8 /boot ext2 defaults 1 2none /dev/pts devpts gid=5,mode=620 0 0none /proc proc defaults 0 0none /dev/shm tmpfs defaults..._java linux 汉字文件夹