首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取AVFrame PTS值

获取AVFrame PTS值
EN

Stack Overflow用户
提问于 2014-02-25 23:30:15
回答 1查看 1.8K关注 0票数 1
  1. 我有一个来自FormatContext的视频AVStream。avstream
  2. Read packet
  3. 解码数据包(如果数据包来自视频)。
  4. 现在显示以下内容。

Packet DTS -> 7200.00 from packet Frame PTS -> -9223372036854775808.000000 stream time_base -> 0.000011 Offset -> 0.080000 pts * time_base (来自数据包帧pts->-9223372036854775808.000000 stream time_base->0.000011 Offset->0.080000点)

代码:

代码语言:javascript
复制
double pts = (double) packet.dts;
printf (" dts of packet %f , Frame pts:  %f, timeBase %f Offset: %f ",
    pts,
    (double)pFrame->pts, 
    av_q2d (avstream->time_base) , 
    pts
*av_q2d(avstream->time_base));

  1. 为什么帧脚本是负数?这是预期的行为吗?
  2. 我是否需要考虑来自packet DTS的帧pt,即: Frame pts = packet dts
EN

回答 1

Stack Overflow用户

发布于 2018-06-29 04:08:40

您看到的PTS的数字是-9223372036854775808 (0x8000000000000000),也称为AV_NOPTS_VALUE。这意味着没有可用的值。

当我看到这个的时候,我找不到解决方案,所以在相当长的一段时间里,我的头撞在了这个上面,当我看到这个的时候,我最终手动地把我的视频时钟调快了。

代码语言:javascript
复制
int64 pts = m_frame->pts;

if (pts == AV_NOPTS_VALUE)
{
    pts = m_videoClock +
        (1.f / av_q2d(stream->avg_frame_rate)) / av_q2d(stream->time_base);
}

m_videoClock = pts;

我不认为DTS在这里是有用的,因为它代表了包被解码的时间,它不是PTS的替代品。

这里还有一些对我有一定帮助的附加信息:getting AVFrame pts value

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22018784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档