理解ffmpeg中的pts,dts,time_base】的更多相关文章

首先介绍下概念: PTS:Presentation Time Stamp.PTS主要用于度量解码后的视频帧什么时候被显示出来 DTS:Decode Time Stamp.DTS主要是标识读入内存中的bit流在什么时候开始送入解码器中进行解码 也就是pts反映帧什么时候开始显示,dts反映数据流什么时候开始解码 怎么理解这里的"什么时候"呢?如果有某一帧,假设它是第10秒开始显示.那么它的pts是多少呢.是10?还是10s?还是两者都不是. 为了回答这个问题,先引入FFmpeg中时间基的…
AV_TIME_BASE 经常在FFmpeg的代码中看到一个奇怪的单位 AV_TIME_BASE ,比如 AVFormatContext 结构体中就有这样一个字段: duration ,它在FFmpeg中的解释如下: /** * Duration of the stream, in AV_TIME_BASE fractional * seconds. Only set this value if you know none of the individual stream * durations…
FFMPEG 中dts和pts区别     CopyFrom:http://www.cnblogs.com/yinxiangpei/articles/3892982.html 视频的显示和存放原理 对于一个电影,帧是这样来显示的:I B B P.现在我们需要在显示B帧之前知道P帧中的信息.因此,帧可能会按照这样的方式来存储:IPBB.这就是为什么我们会有一个解码时间戳和一个显示时间戳的原因.解码时间戳告诉我们什么时候需要解码,显示时间戳告诉我们什么时候需要显示.所以,在这种情况下,我们的流可以是…
视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速翻动的感觉.       但是在实际应用中,并不是每一帧都是完整的画面,因为如果每一帧画面都是完整的图片,那么一个视频的体积就会很大,这样对于网络传输或者视频数据存储来说成本太高,所以通常会对视频流中的一部分画面进行压缩(编码)处理.由于压缩处理的方式不同,视频中的画面帧就分为了不同的类别,其中包括:I 帧.P 帧.B 帧.I.P.B 帧I 帧.P 帧.B 帧的区别在于:    I 帧(I…
对pts.dts.duration的处理主要集中在两大函数里面 1.process_input()读入数据并处理,放到滤镜里面 2.reap_filters()从滤镜读出数据,处理后写入文件 process_input()中对时间的处理 获取数据包 ret = get_input_packet(ifile, &pkt);11通过这条语句实际里面调用 return av_read_frame(f->ctx, pkt);11将读取到的帧放到pkt中. 处理获取的pkt中的时间 //如果pkt.d…
ffmpeg为在linux下开发的开源音视频框架,所以经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中).  try again,从字面上来看,是提示再试一次.这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候.例如: ret = av_bsf_receive_packet(s->bsfs[idx], pkt);if (ret == AVERROR(EAGAIN)) {/* no packe…
最近在做H.265 编码,原本只是做编码器的实现,但客户项目涉及到ts的封装,搞得我不得不配合了解点ts方面的东西.下面技术文档不错,转一下. ts流中的时间估计 我们知道ts流中是没有时间信息的,我门来看看ffmpeg是怎么估计其duration的 方法1.通过pts来估计 static void estimate_timings_from_pts(AVFormatContext *ic, int64_t old_offset) { AVPacket pkt1, *pkt = &pkt1; A…
ts流中的时间估计 我们知道ts流中是没有时间信息的,我门来看看ffmpeg是怎么估计其duration的 方法1.通过pts来估计 static void estimate_timings_from_pts(AVFormatContext *ic, int64_t old_offset) { AVPacket pkt1, *pkt = &pkt1; AVStream *st; int read_size, i, ret; int64_t end_time; int64_t filesize,…
[时间:2019-01] [状态:Open] [关键词:字幕,ffmpeg,subtitle,demuxer,源码] 0 引言 本文重心在于FFmpeg中subtitle demuxer的实现逻辑. 在阅读本文前,笔者希望你对FFmpeg中libavformat的实现有一定了解(可以参考我之前的博文FFmpeg框架分析,最起码知道demuxer的主要接口). 同时笔者也希望你对主流的字幕格式有一定了解,包括LRC.SRT.ASS.WebVTT. 这是我的"浅析字幕流"系列第四篇文章,其…
作者: chenwei1983    时间: 2012-3-5 04:21 PM标题: ffmpeg 中 av_read_frame_internal分析                            原出处:http://www.chinavideo.org/viewthread.php?action=printable&tid=13846av_read_frame_internal 在ffmpeg中实现了将format格式的packet,最终转换成一帧帧的es流packet,并解析填…