H264码流_h264 interlace_CindyWangry的博客-程序员秘密

技术标签: 音视频  

分层
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

智能推荐

启发式算法 元启发式算法 超启发式算法 区别 是什么_元启发式算法和启发式算法区别_软件工程小施同学的博客-程序员秘密

启发式算法 (Heuristic Algorithms) 是基于直观或经验构造的算法,在可接受的花费 (指计算时间、占用空间等) 下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度不一定事先可以预计。元启发式算法 (Meta-Heuristic Algorithms) 是启发式算法的改进,通常使用随机搜索技巧,可以应用在非常广泛的问题上,但不能保证效率。超启发式算法 (Hyper-Heuristic Algorithms) 提供了一种高层次启发式方法,通过管理或操纵一

深度学习框架排行榜:找工作学TensorFlow,PyTorch搜索量逼近Keras_量子位的博客-程序员秘密

深度栗 编译整理量子位 报道 | 公众号 QbitAI深度学习的世界,风云变幻。五年前,还是Theano称霸的天下,如今完全不一样的了。所以,一个叫Jeff Hale的数...

NVIDIA DLI 深度学习培训 | 北京站年后即将开班_LeadAI学院的博客-程序员秘密

介绍NVIDIA 深度学习学院聚焦于人工智能和深度学习,致力于在全世界范围内提供支持,解决最具挑战性的问题。通过线上自主学习,或者线下由NVIDIA 认证的讲师来教授的培训课程,我们可以帮助开发者、数据科学家、工程师和研究人员开启训练、优化和部署神经网络,从而解决多种学科方面的现实问题,例如计算机视觉、自然语言处理、自动驾驶、医疗和机器人等。NVIDIA 深度学习培训自2017年三月份在国内开启以

linux apache缺少ssl模块,wdcp自带的Apache 2.2.24 ,如何安装mod_ssl.so模块?(不支持ssl/https)..._韩金虎的博客-程序员秘密

本帖最后由 zhipengw 于 2017-10-17 20:13 编辑wdcp自带的Apache 2.2.24 没有ssl组件,需要安装mod_ssl.so,然后设置调用,论坛中找到Apache 2.2.22的配置方法,但是没找到Apache 2.2.24的mod_ssl.so的安装文件,如果使用云在线安装(yum -y install mod_ssl),则配置好的网址无法正常访问;请问如何让A...

在Linux系统上面安装Oracle10g(1)_oracle 10.1 linux 安装_mailtowangbin的博客-程序员秘密

  关于在linux上面安装Oracle10g,网上资料很多,但很多说的比较简略,笔者根据自己的安装经历,详细记录说明,供大家参考。 用户和用户组创建资料建议在安装oracle时创建两个 unix 用户组oinstall组、dba组和一个运行时的oracle 用户。具体命令如下#addgroup oinstall#addgroup dba#useradd -g oins

Android保证进程不被杀掉的方法_android保持app不被杀死_brilliantli的博客-程序员秘密

今天看到个知识点,如何后台保证service存活**1**onStartCommand方法,返回START_STICKY2提升service优先级AndroidManifest.xml文件中对于intent-filter可以通过android:priority = “1000”3提升service进程优先级 Android中的进程是托管的,当系统进程空间紧张的时候,会依照优先级自动进行进程的回收。A

随便推点

Android面试:80%的面试官关于Glide都会问这几个问题_小陈乱敲代码的博客-程序员秘密

Glide的三级缓存有了解过么?先来了解一下我们常说的图片三级缓存一般是强引用,软引用和文件系统,Android系统中提供了LruCache,通过维护一个LinkedHashMap来保存我们需要的各种类型数据,例如我们这里需要的Bitmap。LruCache一般我们会设置为系统最大存储空间的八分之一,而它的机制就是我们常说的最近最少使用原则,如果Lru中的图片大小超过了默认大小,则会把最久使用的图片移除。当图片被Lru移除时,我们需要手动将图片添加到软引用(SoftRefrence)中。需要维护.

VBScript/QTP 的常用COM对象列表_两人行的博客-程序员秘密

众所周知,我们经常在脚本中创建一些对象来实现某些特定的功能。尤其是当我们使用QTP的描述性编程时,需要创建这些对象。下边是我们经常在QTP或VBScript中用到的对象列表:Set objEmail = CreateObject("CDO.Message" )Set objIE = CreateObject("InternetExplorer.Application" )

vue-router 学习笔记(基本内容)_vue-router学习笔记_下雨天没带雨伞的博客-程序员秘密

1.带参数路由routers:[ {path:'/user/:id',name:'user',component:User}]使用参数:$router.params.id2.两个路由都渲染同个组件复用组件时,想对路由参数的变化作出响应,watch (监测变化) watch{ 'route'(to,from){ }}或者使用beforeRouteUpdate (目标路由和当前路由相同,只是...

带有本地数据排序和筛选的RecyclerView Adapter_longforus的博客-程序员秘密

类主体:/** * Created by XQ Yang on 2017-3-8 15:30:05 * Description : 带有搜索和排序功能的adapter */public abstract class SortFilterRVAdapter extends BaseRecyclerViewAdapter implements MyFilterable { pr

HCIA网络基础18-PPPoE_catch that elf的博客-程序员秘密

在接收到的所有PADO报文中,PPPoE客户端选择最先收到的PADO报文对应的PPPoE服务器,并发送一个PADR报文给这个服务器。在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输PPP报文的技术,即PPPoE。PADR(PPPoE Active Discovery Request)报文:用户主机收到PPPoE服务器回应的PADO报文后,单播发起的请求报文,目的地址为此用户选定的那个PPPoE服务器的MAC地址。

推荐文章

热门文章

相关标签