理解音视频 PTS 和 DTS】的更多相关文章

视频 视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速翻动的感觉. 但是在实际应用中,并不是每一帧都是完整的画面,因为如果每一帧画面都是完整的图片,那么一个视频的体积就会很大,这样对于网络传输或者视频数据存储来说成本太高,所以通常会对视频流中的一部分画面进行压缩(编码)处理.由于压缩处理的方式不同,视频中的画面帧就分为了不同的类别,其中包括:I 帧.P 帧.B 帧. I.P.B 帧 I 帧.P 帧.B 帧的区别在于: I 帧(Intra…
PCR同步在非硬件精确时钟源的情况还是谨慎使用,gstreamer里面采用PCR同步,但是发现好多ffmpeg转的片儿,或者是CP方的片源,pcr打得很粗糙的,老是有跳帧等现象.音视频同步,有三种方法,视频同步音频,音频同步视频,同步到外部时钟! 第三种,同步到外部时钟也就是PCR同步,和我上面说的那种同步方式,一样! 用的最多的还是,视频同步音频,为什么呢?音频的采样率是固定的,若音频稍有卡顿,都会很明显的听出来,反则视频则不如此,虽然表面上说的是30fps,不一定每一帧的间隔就必须精确到33…
http://blog.chinaunix.net/uid-26000296-id-3483782.html 一.FFmpeg忽略了adaptation_field()数据 FFmpeg忽略了包含PCR值的adaptation_filed数据; 代码(libavformat/mpegts.c)分析如下: /* 解析TS包 */ int handle_packet(MpegTSContext *ts, const uint8_t *packet) {   ... pid = AV_RB16(pac…
如何同步视频 PTS和DTS 幸运的是,音频和视频流都有一些关于以多快速度和什么时间来播放它们的信息在里面.音频流有采样,视频流有每秒的帧率.然而,如果我们只是简单的通过数帧和乘以帧率的方式来同步视频,那么就很有可能会失去同步.于是作为一种补充,在流中的包有种叫做DTS(解码时间戳)和PTS(显示时间戳)的机制.为了这两个参数,你需要了解电影存放的方式.像MPEG等格式,使用被叫做B帧(B表示双向bidrectional)的方式.另外两种帧被叫做I帧和P帧(I表示关键帧,P表示预测帧).I帧包含…
原文地址:http://blog.itpub.net/30004768/viewspace-1338882/  DTS(解码时间戳)和PTS(显示时间戳)分别是解码器进行解码和显示帧时相对于SCR(系统参考)的时间戳.SCR可以理解为解码器应该开始从磁盘读取数据时的时间.mpeg文件中的每一个包都有一个SCR时间戳并且这个时间戳就是读取这个数据包时的系统时间.通常情况下,解码器会在它开始读取mpeg流时启动系统时钟(系统时钟的初始值是第一个数据包的SCR值,通常为0但也可以不从0开始). DTS…
视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速翻动的感觉.       但是在实际应用中,并不是每一帧都是完整的画面,因为如果每一帧画面都是完整的图片,那么一个视频的体积就会很大,这样对于网络传输或者视频数据存储来说成本太高,所以通常会对视频流中的一部分画面进行压缩(编码)处理.由于压缩处理的方式不同,视频中的画面帧就分为了不同的类别,其中包括:I 帧.P 帧.B 帧.I.P.B 帧I 帧.P 帧.B 帧的区别在于:    I 帧(I…
视频 直播APP源码的视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速翻动的感觉. 但是在实际应用中,并不是每一帧都是完整的画面,因为如果直播APP源码的每一帧画面都是完整的图片,那么一个视频的体积就会很大,这样对于网络传输或者视频数据存储来说成本太高,所以通常会对视频流中的一部分画面进行压缩(编码)处理.由于压缩处理的方式不同,视频中的画面帧就分为了不同的类别,其中包括:I 帧.P 帧.B 帧. I.P.B 帧 I 帧.P 帧.B 帧…
ffmpeg中的pts,dts,duration时间记录都是基于timebase换算,我们主要分析下pts的时间怎么换算,其它的是一样的换算.ffmpeg的时间换算对许多新接触同学算是一个大坑,很多刚接触ffmpeg的同学都不容易搞清楚它的时间计算方法. 我们先看下ffmpeg时间是怎么算的: 一帧图像(音频)的时间戳(时间戳一般以第一帧为0开始)= pts * (AVRational.num/AVRational.den) 为什么要这么算(挖坑)我们看下ffmpeg的说明: “当有理数用浮点数…
首先介绍下概念: PTS:Presentation Time Stamp.PTS主要用于度量解码后的视频帧什么时候被显示出来 DTS:Decode Time Stamp.DTS主要是标识读入内存中的bit流在什么时候开始送入解码器中进行解码 也就是pts反映帧什么时候开始显示,dts反映数据流什么时候开始解码 怎么理解这里的"什么时候"呢?如果有某一帧,假设它是第10秒开始显示.那么它的pts是多少呢.是10?还是10s?还是两者都不是. 为了回答这个问题,先引入FFmpeg中时间基的…
源码地址https://github.com/979451341/Rtmp 1.配置RTMP服务器 这个我不多说贴两个博客分别是在mac和windows环境上的,大家跟着弄 MAC搭建RTMP服务器https://www.jianshu.com/p/6fcec3b9d644这个是在windows上的,RTMP服务器搭建(crtmpserver和nginx) https://www.jianshu.com/p/c71cc39f72ec 2.关于推流输出的ip地址我好好说说 我这里是手机开启热点,电…