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点)
代码:
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));发布于 2018-06-29 04:08:40
您看到的PTS的数字是-9223372036854775808 (0x8000000000000000),也称为AV_NOPTS_VALUE。这意味着没有可用的值。
当我看到这个的时候,我找不到解决方案,所以在相当长的一段时间里,我的头撞在了这个上面,当我看到这个的时候,我最终手动地把我的视频时钟调快了。
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
https://stackoverflow.com/questions/22018784
复制相似问题