1、帧率(FPS)『帧率』,FPS,全称Frames Per Second。指每秒传输的帧数,或者每秒显示的帧数,一般来说,『帧率』影响画面流畅度,且成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。一个较权威的说法:当视频帧率不低于24fps时,人眼才会觉得视频时连贯的,称为“视觉暂留”现象。因此,才有说法:尽管『帧率』越高越流畅,但在很多实际应用场景中24fps就可以了。

2、分辨率(Resolution)『分辨率』,也常被俗称为『图像的尺寸』或者『图像的大小』。指一帧图像包含的像素的多少,常见有1280x720(720P),1920X1080(1080P)等规格。『分辨率』影响图像大小,且与之成正比:『分辨率』越高,图像越大;反之,图像越小。

3、码率(BPS)『码率』,BPS,全称Bits Per Second。指每秒传送的数据位数,常见单位KBPS(千位每秒)和MBPS(兆位每秒)。笔者认为这个概念真正要理解起来还是需要好好说明的,网上一说:“『码率』与体积成正比:码率越大,体积越大;码率越小,体积越小”;另一说:“『码率』越大,说明单位时间内取样率越大,数据流精度就越高,这样表现出来的的效果就是:视频画面更清晰画质更高”;还有说法是:”『码率』就是『失真度』“。但是笔者有一段时间就是不理解,每秒传输的数据越大,为什么必然就对应画面更清晰?还有体积怎么理解呢?且看下文”三者之间的关系“。

4、帧率、分辨率、和码率三者之间的关系最理想的情况是画面越清晰、越流畅是最好的。但在实际应用中,还需要结合硬件的处理能力、实际带宽条件选择。高『帧率』高『分辨率』,也就意味着高『码率』,也意味着需要高带宽和强大的硬件能力进行编解码和图像处理。所以『帧率』和『分辨率』应该视情况而定。要说三者之间的关系,其实就是对于『码率』的理解。在码率(BPS)概念中提到了几段摘自网上的说法,说的都太模糊了,笔者直到阅读了文章Video Bitrate Vs. Frame Rate,才真的理解了『码率』。首先,这些说法都没有交代一个前提:『帧率』、『分辨率』和『压缩率』都会影响『码率』。Video Bitrate Vs. Frame Rate](https://www.techwalla.com/articles/video-bitrate-vs-frame-rate)文章在一开始就明确指出:『码率』是更广泛的(视频)质量指标:更高的『分辨率』,更高的『帧率』和更低的『压缩率』,都会导致『码率』增加。

文章后面又特别强调『分辨率』和『压缩率』对『码率』的影响:高分辨率意味着图片可以包括更多的细节,低压缩率意味着图片压缩损失越少,即失真越少,越清晰。那为什么不特地讨论『帧率』呢?笔者认为原因有二:一个是『帧率』的影响非常直观,每秒帧数增加必然导致数据量增加;另一个是实际应用场景中『帧率』是相对固定的,我们观看的一般视频都在25-30fps之间,现在一些高帧视频是60fps,可见视频『帧率』在实际场景中被讨论的很少。

帧名词:1080p和1080i

笔者仅仅出于觉得有趣才放上来的,1080p和1080i、场都是相对比较“老”的概念了,在还是CRT电视的时代,显示器显示画面都是靠电子枪一行一行扫描画面才能产生一副完整的图像,这就被称作『场』,后来这个名词也不常使用了,被取代它的是『帧』。【科技在进步,过时的概念、应用都会被新兴的替换,所以真的要不断学习紧跟时代啊!】

5、1080p和1080i也是『场』同一时期的概念:

${数字}i的字母”i“表示Interlace,代表隔行扫描,比如奇数『场』只扫描奇数行,后一『场』即偶数『场』只扫描偶数行。这在过去是非常有用的,当时网络条件差,带宽受限,隔行扫描可以很大程度上减少传输的数据,又不至于影响观众观看体验。

${数字}p的字母”p“表示Progressive,即逐行扫描,也就是一『场』把全部画面扫描完整。这是后来才提出的概念,这也代表时代进步,带宽条件上来了。

6、什么是I帧,P帧,B帧

视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。 简单地说,I帧是关键帧,属于帧内压缩。就是和AVI的压缩是一样的。 P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。

I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)

P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累~。

从上面的解释看,我们知道I和P的解码算法比较简单,资源占用也比较少,I只要自己完成就行了,P呢,也只需要解码器把前一个画面缓存一下,遇到P时就使用之前缓存的画面就好了,如果视频流只有I和P,解码器可以不管后面的数据,边读边解码,线性前进,大家很舒服。但网络上的电影很多都采用了B帧,因为B帧记录的是前后帧的差别,比P帧能节约更多的空间,但这样一来,文件小了,解码器就麻烦了,因为在解码时,不仅要用之前缓存的画面,还要知道下一个I或者P的画面(也就是说要预读预解码),而且,B帧不能简单地丢掉,因为B帧其实也包含了画面信息,如果简单丢掉,并用之前的画面简单重复,就会造成画面卡(其实就是丢帧了),并且由于网络上的电影为了节约空间,往往使用相当多的B帧,B帧用的多,对不支持B帧的播放器就造成更大的困扰,画面也就越卡。 一般平均来说,I的压缩率是7(跟JPG差不多),P是20,B可以达到50,可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

在如上图中,GOP (Group of Pictures)长度为13,S0~S7 表示 8个视点,T0~T12 为 GOP的 13个时刻。每个 GOP包含帧数为视点数 GOP 长度的乘积。在该图中一个 GOP 中,包含94 个 B帧。B 帧占一个 GOP 总帧数的 90.38%。GOP 越长,B 帧所占比例更高,编码的率失真性能越高。下图测试序列 Race1 在不同 GOP 下的率失真性能对比。

7、压缩算法的说明

h264的压缩方法:(1)分组:把几帧图像分为一组(GOP,也就是一个序列),为防止运动变化,帧数不宜取多。(2)定义帧:将每组内各帧图像定义为三种类型,即 I 帧、B 帧和 P 帧;(3)预测帧:以I帧做为基础帧,以 I 帧预测 P 帧,再由 I 帧和 P 帧预测 B 帧;(4)数据传输:最后将 I 帧数据与预测的差值信息进行存储和传输。    帧内(Intraframe)压缩也称为空间压缩(Spatial compression)。当压缩一帧图像时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,这实际上与静态图像压缩类似。帧内一般采用有损压缩算法,由于帧内压缩是编码一个完整的图像,所以可以独立的解码、显示。帧内压缩一般达不到很高的压缩,跟编码 jpeg 差不多。      帧间(Interframe)压缩的原理是:相邻几帧的数据有很大的相关性,或者说前后两帧信息变化很小的特点。也即连续的视频其相邻帧之间具有冗余信息,根据这一特性,压缩相邻帧之间的冗余量就可以进一步提高压缩量,减小压缩比。帧间压缩也称为时间压缩(Temporal compression),它通过比较时间轴上不同帧之间的数据进行压缩。帧间压缩一般是无损的。帧差值(Frame differencing)算法是一种典型的时间压缩法,它通过比较本帧与相邻帧之间的差异,仅记录本帧与其相邻帧的差值,这样可以大大减少数据量。       顺便说下有损(Lossy )压缩和无损(Lossy less)压缩。无损压缩也即压缩前和解压缩后的数据完全一致。多数的无损压缩都采用RLE行程编码算法。有损压缩意味着解压缩后的数据与压缩前的数据不一致。在压缩的过程中要丢失一些人眼和人耳所不敏感的图像或音频信息,而且丢失的信息不可恢复。几乎所有高压缩的算法都采用有损压缩,这样才能达到低数据率的目标。丢失的数据率与压缩比有关,压缩比越小,丢失的数据越多,解压缩后的效果一般越差。此外,某些有损压缩算法采用多次重复压缩的方式,这样还会引起额外的数据丢失。

8、I 帧与 IDR 帧的区别

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

举个例子,在一段视频中,存在以下帧:I P B P B P B B P I P B…如果这段视频应用了多重参照帧,那么蓝色的 P 帧在参照他前面的 I 帧(红色)的同时,还可能会参照 I 帧之前的 P (绿色),由于 I 帧前后的场景可能会有很大的反差甚至根本不同,所以此时 P 帧参考I帧之前的帧不但会没有意义,反而会造成很多问题。所以一种新型的帧被引入,那就是 IDR 帧。如果这段视频应用了多重参考帧的同时采用了 IDR 帧,那么帧的顺序就会变成这样:I P B P B P B B P IDR P B…

由于 IDR 帧禁止后面的帧向自己前面的帧参照,所以这回那个蓝色的 P 帧就不会参照绿色的 P 帧了。

音视频中的帧I 帧,B帧,P帧,IDR帧理解相关推荐

  1. 「Python|场景案例」如何获取音视频中声音片段的起止时间?

    本文主要介绍如何使用python的第三方库moviepy找出音视频中声音开始出现的位置以及声音结束的位置. 文章目录 场景描述 准备工作 解决方案 源代码 场景描述 假设我们有一段音频,音频开始有一段 ...

  2. 聊聊实时音视频中的技术难点:回声消除+噪声消除

    文 | 菊风媒体引擎资深研究团队 在各个实时音视频互动场景中,回声和噪声对于影响用户体验而言都是很大的问题.音视频正在发展成为互联网线上沟通的必然趋势,在自然的交流环境中,回声和噪声是非常影响沟通体验 ...

  3. 聊聊语音聊天室app源码实时音视频中的技术难点:回声消除+噪声消除

    聊聊语音聊天室app源码实时音视频中的技术难点:回声消除+噪声消除 在聊聊语音聊天室app源码各个实时音视频互动场景中,回声和噪声对于影响用户体验而言都是很大的问题.音视频正在发展成为互联网线上沟通的 ...

  4. 怎么将抖音视频中的水印消除

    在社交网络上看到的不管是图片还是视频,一般都会有水印的存在,比如最常用的抖音短视频,保存下来的视频都会有水印,那怎么将抖音视频中的水印消除呢? 1 .今天要说的是一个手机 APP ,在应用商店找到&q ...

  5. 将音视频中的花屏、绿屏、黑屏问题一网打尽

    今天继续给大家分享一下知识星球里面的干货. 创建知识星球快两个月了,目前已经积累了不少干货,主要得益于星球里大佬们的分享以及小伙伴的提问. 星球里面邀请的大佬都是在头条.快手等知名 IT 企业从事过音 ...

  6. 音视频中的DTS、PTS

    写这个还是为了给自己保存啊   勿怪啊 内容肯定都是老的 只给粉丝看了  琢磨存取证视频时和这个题目关联 欢迎讨论 whaosoft aiot http://143ai.com I.P.B 帧 I 帧 ...

  7. 音视频中的PTS和DTS及同步

    相关索引:https://blog.csdn.net/knowledgebao/article/details/84776869 视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程, ...

  8. 如何将音视频中的伴奏背景音乐和人声分离?

    有时候我们要将某个视频或者音频文件中的人声或者背景音乐提取出来,用来创作视频或者用来做配乐.这时候,我们就要用到一个功能--"人声分离",这个功能可以轻松地将人声和背景音乐分离成两 ...

  9. 技术分享 | 漫谈音视频中的拥塞控制

    网络拥塞造成的丢包.延时和抖动,会导致实时音视频的质量降低.卡顿和时延增加,影响用户体验.本篇文章将介绍什么是网络拥塞,以及网络拥塞对音视频质量的影响,重点讲解在构建RTC系统时拥塞控制的一些策略. ...

  10. 六步轻松去除音视频中杂音

    1找到一段音视频, 2找到一段没有人声,只有杂音的时间段,鼠标拖拽选中.(选中的为白色的) 3然后执行菜单栏-效果-降噪/恢复-捕捉噪音样本,告诉软件声音中的噪音部分. 4然后再选中你要执行降噪操作的 ...

最新文章

  1. 14 个经典的 Linux 终端命令行,这些工具堪称神器!
  2. 056_Avatar头像
  3. python类成员_Python的类成员和对象成员
  4. Python中_,__,__xx__的区别
  5. happiness is meaningful joy
  6. Linux Signals 进程信号简介
  7. linux串口中断_5年匠心之作,深度探索Linux虚拟化
  8. c语言在函数中传递指针,[求助]关于文件指针在函数中传递的问题
  9. CentOS 6.5 x64 Redis 安装
  10. 20189217 2018-2019-2 《密码与安全新技术专题》第9周作业
  11. webpackjsonp 还原_冰点还原标准版v8.56.020.5542——墨涩网
  12. 我国《个人信息保护法》立法背景与制度详解
  13. Windows无法访问指定设备路径或文件,您可能没有合适的权限访问这个项目
  14. 黑苹果安装 hackintosh Lenovo Y50-70 TransMac 破解版安装
  15. mysql 创建表指定时区_mysql解决时区相关问题
  16. 影视账号涨粉10w,反套路营销获赞百万,小红内容趋势是什么?
  17. word、wps图文复制一键粘贴到富文本编辑器
  18. vue3中使用canvas
  19. SLG网页游戏开发摘记
  20. 【Java】Java中的==

热门文章

  1. 05 JavaScript框架汇总
  2. c语言将阿拉伯数字变为大写,使用C#实现阿拉伯数字到大写中文的转换
  3. 计算机电脑照片大小,如何在电脑上修改打印图片的大小
  4. matlab四面体体积代码,求任意四面体体积公式
  5. 解决微信、QQ在一加手机系统中无法限制后台的问题
  6. 主流编程语言的特点以及优缺点(一)
  7. IDEA同一个项目启动多个端口
  8. 驻云CEO教你0门槛搭建电商网站,精选产品组合限量神券 低价买
  9. r语言 转录本结构及丰度_技术贴 | R语言:envfit环境因子和菌群回归分析
  10. 细分领域:偏门的色流玩法+简单的色流变现套路