I/B/P SP/SI
H264中I、B、P帧
I帧:只作为参考帧,采用帧内预测
B帧:以其前面的I帧或P帧和后面的P帧作为参考帧
P帧:只能以前面的I帧或P帧作为参考帧
H264中的SP SI
SP和SI是H264中引入的新技术,主要是为了适应视频流的带宽自适应和抗误码性能的要求,主要应用于流媒体服务。
SP帧就是指能够参考不同的参考帧重构出相同的图像帧。(SP和SI不同在于SI是基于帧内预测,SP是基于帧间预测)。
流媒体服务自身有一些特征,网络状况是一直变化的,有时候比较繁忙,有时候则比较空闲。针对不同的网络条件,服务器可能提供几种不同质量的数据服务,
当网络比较差时,提供比较差但是码率低的服务,当网络好时候,提供比较好码率高的服务。由于视频的编码是参考帧预测的基础上,在不同的条件下切换时
很可能会出现丢帧的现象。
如:
序列1: A1 A2 A3 A4 A5 A6 A7 A8 A9
Sab
序列2: B1 B2 B3 B4 B5 B6 B7 B8 B9
在序列1传输完A5之后想要切换到度列2上去,那么就会出现一个问题:如果B6刚好是I帧,就能够正常解析B6帧。如果B6是B帧或者P帧,那么B6就可能是参考B1-B5 中的一帧,由于这些帧之前并没有接收到,那么B6就无法正常解码,而且会影响到之后参考B6生成的其他帧。引入SP/SI之后,B6就可以参考A5和Sab来得到。根据相同的原理SP/SI还可以应用到拼接,随机接入及错误恢复等应用当中去。
值得注意的是:SP/SI只是在H264的Baseline Profile中才有,而且主要应用于流媒体服务当中。
I/B/P SP/SI的更多相关文章
- [FFmpeg] ffmpeg 常用命令
1. 视频转换 比如一个avi文件,想转为mp4,或者一个mp4想转为ts. ffmpeg -i input.avi output.mp4 ffmpeg -i input.mp4 output.ts ...
- h264 profile & level
转自:http://blog.csdn.net/sphone89/article/details/17492433 H.264 Profiles H.264有四种profile,每个profile支持 ...
- weblogic 12C 数据源配置出错的解决办法
驱动程序类名称: 11G 10.3.6与12G数据源配置有很大区别,整个一天才搞明白. 如有疑问可留言:http://www.cnblogs.com/endv/p/4110798.html 配 ...
- fFFmpeg 命令、案例、测试集中营
gitbook: https://www.gitbook.com/book/xdsnet/other-doc-cn-ffmpeg/details ffmpeg [全局选项] {[输入文件选项] -i ...
- bzoj1015 星球大战
Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过 ...
- H264 Profile
H.264有四种profile,对应四种H264画质级别.每个profile支持一组特定的编码功能,并支持一类特定的应用,分别是BP.EP.MP.HP: 1. BP-Baseline Profile ...
- Python3批量爬取网页图片
所谓爬取其实就是获取链接的内容保存到本地.所以爬之前需要先知道要爬的链接是什么. 要爬取的页面是这个:http://findicons.com/pack/2787/beautiful_flat_ico ...
- H.264 Profile、Level、Encoder三张简图 (fps = AVCodecContext->time_base.den / AVCodecContext->time_base.num)
H.264 Profiles Profiles are sets of capabilities. If your black box only supports the Baseline profi ...
- 【转】H264视频编码级别说明profile level Encoder
版权声明:本文为博主原创文章,未经博主允许不得转载. 首先要阐明所谓的AVC其实就是H.264标准,是由ITU-T和ISO/IEC组成的联合视频组(JVT,Joint Video Team)一起开发的 ...
随机推荐
- spring 中事务的PROPAGATION_REQUIRED,Readonly的解释
一.事务传播行为种类 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为, 它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播 ...
- Quartz CronTrigger最完整配置说明
转:http://www.blogjava.net/xmatthew/archive/2009/02/15/253864.html Quartz CronTrigger最完整配置说明 CronTr ...
- linux 编译安装nginx,配置自启动脚本
本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装nginx,记录下安装过程: 参照这篇文章:Linu ...
- 多线程编程之Linux环境下的多线程(一)
一.Linux环境下的线程 相对于其他操作系统,Linux系统内核只提供了轻量级进程的支持,并未实现线程模型.Linux是一种“多进程单线程”的操作系统,Linux本身只有进程的概念,而其所谓的“线程 ...
- 安卓 NEXUS6 修改分辨率,density
NEXUS6原density数值: 2k屏 560 每一步: 使用RE文件管理器,编辑system/build.prop.将“ro.sif.lcd_density=”的参数改写成为需要修改的数值,保存 ...
- LeetCode "Longest Substring with At Most K Distinct Characters"
A simple variation to "Longest Substring with At Most Two Distinct Characters". A typical ...
- bzoj2618: [Cqoi2006]凸多边形
Description 逆时针给出n个凸多边形的顶点坐标,求它们交的面积.例如n=2时,两个凸多边形如下图: 则相交部分的面积为5.233. Input 第一行有一个整数n,表示凸多边形的个数,以下依 ...
- jdk RSA算法类使用
package com.security.rsa; import java.security.Key;import java.security.KeyFactory;import java.secur ...
- (WPF) MVVM: 动态添加控件及绑定。
比如需要显示一个键盘,里面有各个按键.实现的效果如下: 之前的思路,就是建立一个singleKey的控件,然后在后台用代码动态的添加到父控件里去, 再用代码在后台进行绑定. 这种实现方法并不是真正的M ...
- spark transformation与action操作函数
一.Transformation map(func) 返回一个新的分布式数据集,由每个原元素经过函数处理后的新元素组成 filter(func) 返回一个新的数据集,经过fun函数处理后返回值为tru ...