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的更多相关文章

  1. [FFmpeg] ffmpeg 常用命令

    1. 视频转换 比如一个avi文件,想转为mp4,或者一个mp4想转为ts. ffmpeg -i input.avi output.mp4 ffmpeg -i input.mp4 output.ts ...

  2. h264 profile & level

    转自:http://blog.csdn.net/sphone89/article/details/17492433 H.264 Profiles H.264有四种profile,每个profile支持 ...

  3. weblogic 12C 数据源配置出错的解决办法

    驱动程序类名称:   11G 10.3.6与12G数据源配置有很大区别,整个一天才搞明白.   如有疑问可留言:http://www.cnblogs.com/endv/p/4110798.html 配 ...

  4. fFFmpeg 命令、案例、测试集中营

    gitbook: https://www.gitbook.com/book/xdsnet/other-doc-cn-ffmpeg/details ffmpeg [全局选项] {[输入文件选项] -i ...

  5. bzoj1015 星球大战

    Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过 ...

  6. H264 Profile

    H.264有四种profile,对应四种H264画质级别.每个profile支持一组特定的编码功能,并支持一类特定的应用,分别是BP.EP.MP.HP: 1. BP-Baseline Profile ...

  7. Python3批量爬取网页图片

    所谓爬取其实就是获取链接的内容保存到本地.所以爬之前需要先知道要爬的链接是什么. 要爬取的页面是这个:http://findicons.com/pack/2787/beautiful_flat_ico ...

  8. 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 ...

  9. 【转】H264视频编码级别说明profile level Encoder

    版权声明:本文为博主原创文章,未经博主允许不得转载. 首先要阐明所谓的AVC其实就是H.264标准,是由ITU-T和ISO/IEC组成的联合视频组(JVT,Joint Video Team)一起开发的 ...

随机推荐

  1. JABX简单介绍

    主要引至http://suo.iteye.com/blog/1233458 一.简介 1.概念是什么:(Java Architecture for XML Binding) 是一个业界的标准,是一项可 ...

  2. Bower => 前端开发也有包管理器

    摘要: 一直以来npm,pip等各种包管理器好像都和前端开发没什么太大关系,当然因为nodejs的原因可能感觉npm会亲切一些,不过终归不是针对客户端的包管理工作,所以Bower的出现确实让人眼前一亮 ...

  3. tespeed-测试网速的Python工具

    1.安装(环境CentOS7) #pip install lxml #wget wget http://sourceforge.net/projects/socksipy/files/socksipy ...

  4. Netdom query基本用法

    C:\Users\user1>netdom queryThe syntax of this command is: NETDOM QUERY [/Domain:domain] [/Server: ...

  5. 【freemaker】之Unknown built-in variable: now

    Caused by: freemarker.core.ParseException: Unknown built-in variable: now 意思是没有内置变量,看了一下源码2.3.15版本fr ...

  6. showdialog窗体不在任务栏显示的问题处理

    场景: c#开发的windows窗体用showdialog弹出时,在任务栏中 win7系统显示,win xp和win 2003却不显示. 窗体的ShowInTaskbar已设置为True. 解决: 在 ...

  7. 在eclipse中设计BPMN 2.0工作流定义的根本步骤

    原文地址:http://www.myexception.cn/eclipse/1863140.html 在eclipse中设计BPMN 2.0工作流定义的基本步骤 1. Activiti问我们提供了A ...

  8. 黄聪:WordPress 后台发布文章时提示用户选择分类

    很多用户在后台发布文章,常常会忘记选择分类,所以很有必要添加一个提醒功能,如果没有选择分类,点击发布时,就显示一个提示信息.要实现这个功能,只要将下面的代码添加到主题的 functions.php 即 ...

  9. 《黄聪:手机移动站SEO优化教程》2、PC端和手机移动端SEO优化区别

    视频地址:http://v.youku.com/v_show/id_XNzE2ODcxNjM2.html

  10. Servlet细节

    Servlet细节 线程不安全的做法: * 不要在Servlet中创建成员!创建局部变量即可! * 可以创建无状态成员! * 可以创建有状态的成员,但状态必须为只读的!(不提供set方法) 1.Ser ...