视频:泛指将一系列的静态影像以电信号的方式捕捉、记录、处理、储存、传送、重现的各种技术。连续的静态图像变化每秒超过24帧(frame)以上时,由于视觉残留,人眼无法识别单独的静态图片,此时看上去就是平滑且连续的效果,这种连续的影像画面可以称之为视频。

帧:视频是由一帧一帧的静态图片连续播放形成的,故一帧就是视频中一个静态的画面。(可以理解为由一张一张的图片,在视频范畴称为“帧”,图片称为“静态画面”)

关键帧:也称之为 I 帧,是帧间压缩编码的最重要的帧。视频的编码是按照“组”进行的,每一个组叫"GOP(Group Of Picture,图像组)",而GOP与GOP之间没有联系,编码的关系只在一个GOP之间处理,关键帧是一幅完整的画面,GOP之间的帧都是不完整的,需要关键帧、前面帧、后面帧等一起运算得到。关键帧的间隔条件会影响到GOP的长度,继而影响到读取GOP的速度,如果关键帧间隔设置过大,在必须用到关键帧的场景就可能需要B/P帧来代替,这样会降低画面质量。关键帧是帧间压缩的基础,典型的GOP结构是 IBBPBBPBBPBBPBBPBB

前后参考帧:也称之为 B 帧,参考前面、后面两帧的数据加上本帧的变化得到本帧的数据

向前参考帧:也称之为 P 帧,如果 I 帧损坏,整个GOP就损坏了。即IBBPBBPBBPBBPBBPBB这么多帧一起坏掉,设置再长的时间间隔,编码出的数据也不稳定。

拓展:

I 帧是帧内压缩  而P、B帧是帧间压缩,以I帧为基础,预测P帧,以I、P帧为基础预测B帧,最后将I帧数据和预测的差值存储和传输。

帧率:一秒内传输图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,通常用fps(Frames Per Second)表示。高的帧率可以得到更流畅、更逼真的动画。每秒钟帧数 (fps) 愈多,所显示的动作就会愈流畅。

FPS越高对显卡的性能要求越高,电脑中显示的图片都是有显卡输出的,屏幕上每个像素点的填充都是有显卡进行计算并输出的。假定一个图片分辨率1024x768,页面帧率设置24fps,那么显卡一秒内要处理的像素点为1024x768x24个。显卡处理能力=分辨率x帧率

一般平均来说,I的压缩率是7(跟JPG差不多),P是20,B可以达到50,可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

I、B、P各帧是根据压缩算法的需要,是人为定义的,它们都是实实在在的物理帧,至于图像中的哪一帧是I帧,是随机的,一但确定了I帧,以后的各帧就严格按规定顺序排列。

在H.264视频编码标准中,系统框架分为两个层面:VCL( 视频编码层面) 和 NAL(网络抽象层),前者表示视频数据内容,后者负责格式化数据并提供头信息,以保证数据适合在各种信道和存储介质上传输。每帧数据就是一个NAL单元(SPS和PPS除外),在实际的H264数据帧中,往往帧前面带有00 00 00 01 或 00 00 01分隔符,一般来说编码器编出的首帧数据为SPS与PPS,接着为I帧……

NALU: 全称Network Abstract Layer Unit (网络抽象层单元),包含一个字节的头信息和一系列来自VCL称为原始字节序列的字节流(RBSP),H264在网络上传输的是NALU,NALU的结构:NAL头+RBSP

SPS: H.264码流第一个 NALU是 SPS(序列参数集Sequence Parameter Set)

SPS中保存了一组编码视频序列(Coded video sequence)的全局参数。所谓的编码视频序列即原始视频的一帧一帧的像素数据经过编码之后的结构组成的序列。而每一帧的编码后数据所依赖的参数保存于图像参数集中。一般情况SPS和PPS的NAL Unit通常位于整个码流的起始位置。但在某些特殊情况下,在码流中间也可能出现这两种结构,主要原因可能为:

  • 解码器需要在码流中间开始解码;
  • 编码器在编码的过程中改变了码流的参数(如图像分辨率等);

在做视频播放器时,为了让后续的解码过程可以使用SPS中包含的参数,必须对其中的数据进行解析。

PPS: H.264码流第二个 NALU是 PPS(图像参数集Picture Parameter Set)

通常情况下,PPS类似于SPS,在H.264的裸码流中单独保存在一个NAL Unit中,只是PPS NAL Unit的nal_unit_type值为8;而在封装格式中,PPS通常与SPS一起,保存在视频文件的文件头中。

IDR:  H.264码流第三个 NALU 是 IDR(即时解码器刷新)

H2.64中I帧和IDR帧的区别
I和IDR帧都是使用帧内预测的。它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I帧区别开,所以才把第一个首个I帧叫IDR,这样就方便控制编码和解码流程。IDR帧的作用是立刻刷新,使错误不致传播,从IDR帧开始,重新算一个新的序列开始编码。而I帧不具有随机访问的能力,这个功能是由IDR承担,IDR会导致DPB(参考帧列表——这是关键所在)清空,而I不会。IDR图像一定是I图像,但I图像不一定是IDR图像。一个序列中可以有很多的I图像,I图像之后的图象可以引用I图像之间的图像做运动参考。对于IDR帧来说,在IDR帧之后的所有帧都不能引用任何IDR帧之前的帧的内容,与此相反,对于普通的I-帧来说,位于其之后的B-和P-帧可以引用位于普通I-帧之前的I-帧。从随机存取的视频流中,播放器永远可以从一个IDR帧播放,因为在它之后没有任何帧引用之前的帧。但是,不能在一个没有IDR帧的视频中从任意点开始播放,因为后面的帧总是会引用前面的帧。 (http://blog.csdn.net/leixiaohua1020/article/details/11800877)

以上信息,各种百度。。。。。。

转载于:https://www.cnblogs.com/madaha/p/9713170.html

ios 视频知识补充---分解LFLiveKit相关推荐

  1. ios 视频列表处理---分解ZFPlayer

    1.视频播放器添加到containerView的机制与一个普通播放器页面的不同 普通视频播放页面可以直接添加一个播放器,按照正常逻辑播放.暂停.切换等操作,而视频列表的做法是 用户触发播放动作 当点击 ...

  2. IOS视频分解图片、图片合成视频

    在IOS视频处理中,视频分解图片和图片合成视频是IOS视频处理中经常遇到的问题,这篇博客就这两个部分对IOS视频图像的相互转换做一下分析.  (1)视频分解图片  这里视频分解图片使用的是AVAsse ...

  3. 一篇文章普及各种ios基本知识(防止奸商忽悠、鉴别假冒翻新机、知识入门必备)

    关键字:刷机 激活 SHSH 降级 越狱 Cydia Apple Store iTunes Store iTunes 内购 行货 水货 港版 日版 美版 翻新机 IMEI/序列号/串号 三码合一 有锁 ...

  4. iOS视频开发(二):视频H264硬编码

    1.前言 前面我们已经介绍了在iOS开发中如果调用摄像头进行视频数据的采集和编解码.但折腾了这么多,对于YUV这玩意儿还是不是特别理解.其实在我的个人实践过程中我也一直搞不懂这个YUV,一顿恶补之后, ...

  5. iOS 视频直播技术

    iOS 视频直播技术 直播难:直播中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通讯等技术,每一个技术都够你学几年的. 直播易:市场已经有很多成熟的案例了.最常 ...

  6. 一篇文章普及各种ios基本知识

    一篇文章普及各种ios基本知识 关键字:刷机 激活 SHSH 降级 越狱 Cydia Apple Store iTunes Store iTunes 内购 行货 水货 港版 日版 美版 翻新机 IME ...

  7. 前端知识补充说明(一)之HTTP/浏览器等基础原理部分

    前端知识补充说明(一)之HTTP/浏览器等基础原理部分 1. 说一下http和https https的SSL加密是在传输层实现的.(1)http和https的基本概念http: 超文本传输协议,是互联 ...

  8. iOS视频硬编码技术

    iOS视频硬编码技术 一.iOS视频采集硬编码 基本原理 硬编码 & 软编码 硬编码:通过系统自带的Camera录制视频,实际上调用的是底层的高清编码硬件模块,即显卡,不使用CPU,速度快 软 ...

  9. IOS视频编辑,视频裁剪,视频拼接,音频处理,视频处理

    前言 用代码在简单视频编辑中,主要就是加美颜.水印(贴图).视频截取.视频拼接.音视频的处理,在美颜中,使用GPUImage即可实现多种滤镜.磨皮美颜的功能,并且可以脸部识别实时美颜等功能,这个有很多 ...

最新文章

  1. 为Linux上的Tomcat安装apr支持
  2. 题目1051:数字阶梯求和
  3. 返璞归真的Open×××的p2p模式
  4. 初学__Python——Python的基本输入输出函数
  5. python tkinter 弹窗_Python:tkinter-Parent获取弹出窗口的返回值
  6. python 子线程coredump_python多线程备份mysql数据工具:mysqlpdump使用方法
  7. 《剑指Offer》 不用加减乘除做加法
  8. Genymotion安装那些事
  9. c# Winform 开发分屏显示应用程序
  10. IDEA 和 Eclipse 集成开发工具配置 Java API 帮助文档教程
  11. 读书百客:《念奴娇·赤壁怀古》赏析
  12. 英语不规则动词变化时态变化表
  13. 这下爽了,居然有人通过这个把Linux的命令提示符给整明白了
  14. 小菜鸟szx的测试博文
  15. js制作走马灯和选项卡
  16. springboot 启动项目报Consider defining a bean of type 'com.mooc.house.biz.service.XXX' in your config
  17. 电子科技大学格拉斯哥学院基础实践——共享单车的调查
  18. Advanced COM Interop
  19. 利用tushare pro根据财务指标选股
  20. 第11章 AOP应用案例

热门文章

  1. 设置图片元素上下垂直居中的7种css样式_赵一鸣博客
  2. 我们是如何做好前端工程化和静态资源管理 - 無雄 - 博客园
  3. vue --- 全局配置过滤函数,使用moment函数来格式化时间
  4. 前端安全之token
  5. 『原创』一个基于Win CE 5.0的Txt文件阅读器
  6. SQL疑难杂症【4 】大量数据查询的时候避免子查询
  7. 关于iOS里的做动画方法的差别与注意事项
  8. 一、Java语言基础(4)_方法和数组——数组
  9. 老男孩博客园杨海潮MySQL--MySQL机构逻辑2
  10. error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version