I、P、B、PTS、DTS
1 基本概念
1.1 名词解释
媒体:是表示,传输,存储信息的载体,常人们见到的文字、声音、图像、图形等都是表示信息的媒体。
多媒体: 是声音、动画、文字、图像和录像等各种媒体的组合,以图文并茂,生动活泼的动态形式表现出来,给人以很强的视觉冲击力,留下深刻印象
多媒体技术:是将文字、声音、图形、静态图像、动态图像与计算集成在一起的技术。它要解决的问题是计算机进一步帮助人类按最自然的和最习惯的方式接受和处理信息。
流媒体 :流媒体是指采用流式传输的方式在Internet播放的连续时基媒体格式,实际指的是一种新的媒体传送方式,而不是一种新的媒体格式(在网络上传输音/视频等多媒体信息现在主要有下载和流式传输两种方式)。流式传输分两种方法:实时流式传输方式(Realtime streaming)和顺序流式传输方式(progressive streaming)。
多媒体文件:是既包括视频又包括音频,甚至还带有脚本的一个集合,也可以叫容器;
媒体编码:是文件当中的视频和音频所采用的压缩算法。也就是说一个avi的文件,当中的视频编码有可能是A,也可能是B,而其音频编码有可能是1,也有可能是2。
转码 :指将一段多媒体包括音频、视频或者其他的内容从一种编码格式转换成为另外一种编码格式
视频:连续的图象变化每秒超过24帧(Frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面,看上去是平滑连续的视觉效果,这样连续的画面叫做视频
音频 :人类能听到的声音都成为音频,但是一般我们所说到的音频时存储在计算机里的声音
码率:码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps(即,千位每秒)。 通俗一点的理解就是采样率,单位时间内采样率越大精度就越高,处理出来的文件就越接近原始文件,但是文件体积与采样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真。但是因为编码算法不一样,所以也不能用码率来统一衡量音质或者画质。
帧:帧就是一段数据的组合,它是数据传输的基本单位。就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。 一帧就是一副静止的画面,连续的帧就形成动画,如电视图像等。
帧率:帧率即每秒显示帧数,帧率表示图形处理器处理场时每秒钟能够更新的次数。高的帧率可以得到更流畅、更逼真的动画。一般来说30fps就是可以接受的,但是将性能提升至60fps则可以明显提升交互感和逼真感,但是一般来说超过75fps一般就不容易察觉到有明显的流畅度提升了。如果帧率超过屏幕刷新率只会浪费图形处理的能力,因为监视器不能以这么快的速度更新,这样超过新率的帧率就浪费掉了。
关键帧:相当于二维动画中的原画,指角色或者物体运动或变化中的关键动作所处的那一帧,它包含了图像的所有信息,后来帧仅包含了改变了的信息。如果你没有足够的关键帧,你的影片品质可能比较差,因为所有的帧从别的帧处产生。对于一般的用途,一个比较好的原则是每5秒设一个关键键。但如果时那种实时传输的流文件,那么要考虑传输网络的可靠度,所以要1到2秒增加一个关键帧。
1.2 I、P、B帧概念简述
视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。简单地说,I帧是关键帧,属于帧内压缩,解码时单独的该帧便可完成解码;P帧为向前预测编码帧,即P帧解码时需要参考前面相关帧的信息才能解码;B帧为双向预测编码帧,解码时既需要参考前面已有的帧又需要参考后面待解码的帧;他们都是基于I帧来压缩数据。
I帧表示关键帧,又称intra picture,I帧画面完整保留,解码时只需要本帧数据就可以完成(因为包含完整画面)。
P帧前向预测编码帧 又称predictive-frame,表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)
B帧双向预测内插编码帧 又称bi-directional interpolated prediction frame,是双向差别帧,也就是B帧记录的是本帧与前后帧的差别,换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。
因此,I帧和P帧的解码算法比较简单,资源占用也比较少,I帧只要自己完成就行了,至于P帧,也只需要解码器把前一个画面缓存一下,遇到P帧时就使用之前缓存的画面就行。如果视频流只有I和P,解码器可以不管后面的数据,边读边解码,线性前进。如果视频流还有B帧,则需要缓存前面和当前的视频帧,待后面视频帧获得后,再解码。
1.3 I、P、B帧特点分析
I帧特点:
1).它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输;
2).解码时仅用I帧的数据就可重构完整图像;
3).I帧描述了图像背景和运动主体的详情;
4).I帧不需要参考其他画面而生成;
5).I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);
6).I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧;
7).I帧不需要考虑运动矢量;
8).I帧所占数据的信息量比较大。
P帧特点:
1).P帧是I帧后面相隔1~2帧的编码帧;
2).P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差);
3).解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像;
4).P帧属于前向预测的帧间编码。它只参考前面最靠近它的I帧或P帧;
5).P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧;
6).由于P帧是参考帧,它可能造成解码错误的扩散;
7).由于是差值传送,P帧的压缩比较高。
B帧特点
1).B帧是由前面的I或P帧和后面的P帧来进行预测的;
2).B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量;
3).B帧是双向预测编码帧;
4).B帧压缩比最高,因为它只反映丙参考帧间运动主体的变化情况,预测比较准确;
5).B帧不是参考帧,不会造成解码错误的扩散。
2 PTS, DTS
2.1 概念
PTS:Presentation Time Stamp。PTS主要用于度量解码后的视频帧什么时候被显示出来,DTS主要用于视频的解码,在解码阶段使用。
DTS:Decode Time Stamp。DTS主要是标识读入内存中的bit流在什么时候开始送入解码器中进行解码,PTS主要用于视频的同步和输出,在display的时候使用。在没有B frame的情况下,DTS和PTS的输出顺序是一样的.
GOP:两个I frame之间形成一个GOP,在x264中同时可以通过参数来设定bf的大小,即:I 和p或者两个P之间B的数量。
如果有B frame 存在的情况下一个GOP的最后一个frame一定是P.
下面给出一个GOP为15的例子,其解码的参照frame及其解码的顺序都在里面:
如上图:I frame 的解码不依赖于任何的其它的帧.而P frame的解码则依赖于其前面的I frame或者P frame.B frame的解码则依赖于其前的最近的一个I frame或者P frame 及其后的最近的一个P frame.
I、P、B、PTS、DTS相关推荐
- Linux中的tty、pts、pty等概念辨析
Linux中的tty.pts.pty等概念辨析 基本概念 tty.pty.pts.ptmx tty(终端设备的统称):tty一词源于Teletypes,或teletypewriters,原来指的是电传 ...
- ffmpeg中的时间 DTS、PTS、AV_TIME_BASE、AV_TIME_BASE_Q 介绍
ffmpeg中的时间 DTS.PTS.AV_TIME_BASE.AV_TIME_BASE_Q等介绍 原文:http://www.cnblogs.com/yinxiangpei/articles/38 ...
- TS中的DTS、PTS、PCR
1. TS 码流率计算总结 http://wenku.baidu.com/link?url=UxUrZtaAKstkTPqeCIgKEcmqoBb4qP82JK006nL76QmzV-NF-hV9_T ...
- rtmp时间戳pts、dts矫正解决卡顿快放慢放问题与倍速播放的实现
rtmp时间戳pts.dts矫正解决卡顿快放慢放问题与倍速播放的实现 问题分析与解决思路 控流思路 倍速播放思路 实现方式 1.控流,矫正pts.dts来解决播放卡顿,画面抖动等问题.匀速推流 2.倍 ...
- H.264的DTS、PTS、frame_num、poc
DTS与PTS: 先盗一张网图,解释DTS和PTS. DTS和PTS是解码端或者说播放器的概念,DTS是解码的顺序,PTS是显示的顺序.H264中,如果码流中不包含B帧,码流中所有帧的PTS=DTS. ...
- console、tty、pts、pty、Terminal、Physical console、Virtual console、Pseudo Terminal关系解析...
前言: 为什么想到写这个话题,其实源于客户在排查用户登录,问到与用户登录相关的tty格式?有哪些,有什么区别?原以为10多年小机系统管理经验,回答应该so easy,突然发现解释起来有点乱,所以梳理了 ...
- 关于FFMPEG 中I帧、B帧、P帧、PTS、DTS
1 基本概念 1.1 名词解释 媒体:是表示,传输,存储信息的载体,常人们见到的文字.声音.图像.图形等都是表示信息的媒体. 多媒体: 是声音.动画.文字.图像和录像等各种媒体的组合,以图文并茂,生动 ...
- 【B站视频笔记】linux 进程间通信(ipc)信号(软中断信号)signal库函数、可靠信号和不可靠信号、信号集sigprocmask(信号掩码、信号递达Delivery、信号未决Pending)
[视频教程]Linux信号详解(可靠信号.不可靠信号.阻塞信号.信号处理函数) [博文]Linux信号 文章目录 背景 课程笔记 一.如何让程序在后台运行 1.加"&"符号 ...
- Shell基础(一):Shell基础应用、简单Shell脚本的设计、使用Shell变量、变量的扩展应用...
一.Shell基础应用 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 切换用户的Shell环境 2> 练习命令历史.命令别名 ...
最新文章
- mybatis 一对多_MyBatis面试题集合,90%会遇到这些问题
- 英特尔首款AI芯片终于发布:训练推理两用,历时4年花费5亿美元买来4家公司...
- python 日志封装
- java dagger2_从零开始搭建一个项目(rxJava+Retrofit+Dagger2) --完结篇
- 汇编语言OFFSET运算符:返回数据标号的偏移量
- 下行物理信道rs_基于大规模MIMO技术的中继协作物理层安全研究
- 虚拟dom与diff算法 分析
- [html] 如果让你实现一个网页版的办公表格(类似excel),你觉得是否可行?如果可行应该怎么做?
- Python 数据分析三剑客之 Matplotlib(九):极区图 / 极坐标图 / 雷达图的绘制
- Flink keyby 数据倾斜问题处理
- c/c++多线程编程中最好不要加volatile
- 中国官员:大数据产业发展需全球携手
- centos配置epel和remi源
- java用那个软件编,java编译软件 编写java程序用什么软件?
- 常用H桥电机驱动模块L298N原理及应用
- matlab得到小波参数,MATLAB|高频信号的小波分析技术要点
- uniapp小程序倒计时
- 什么是概率?对我有什么用?
- ajax传参的一些总结
- java判断字符串是否是中文_Java检查字符串是否包含中文字符
热门文章
- div超出不换行_css怎么设置div超出不换行?
- 什么是DDD(领域驱动设计)? 这是我见过最容易理解的一篇关于DDD 的文章了
- 使用Scrutiny在您的网站中查找不同网址中的重复内容的方法
- FreeModbus RTU 移植指南
- 聚合支付,实现微信和支付宝扫一码支付
- webpack静态资源地址注入html,HtmlWebpackPlugin
- InvalidReplicationFactorException: Replication factor: 1 larger than available brokers: 0
- 头文件为什么要加#ifndef #define #endif
- neovim及coc.nvim自动补全初探
- 关于二战群里早早提出的一道我尝试了7种途径未有结果的反常积分(利用等比来展开,代换)