【问题标题】:AVCodec PTS timestamps not starting at 0AVCodec PTS 时间戳不是从 0 开始
【发布时间】:2012-05-21 04:35:01
【问题描述】:

我注意到,对于某些视频文件,在 AVPacket 结构中返回的 PTS 时间戳不是从 0 开始,而是在一段时间之后。例如。在 3.128 什么的。我测试的 99% 的视频文件的 PTS 时间戳从 0 开始,但很少有文件有一些奇怪的时间戳,从 3.128 或 1.2 或其他东西开始。我应该如何处理这些案件?我是否应该只记录第一个数据包的 PTS 时间戳,然后从所有后续时间戳值中减去此 PTS 以获得基于 0 的 PTS 值?或者我应该如何处理这些基于非 0 的时间戳?感谢您的帮助!

【问题讨论】:

    标签: c ffmpeg libavcodec


    【解决方案1】:

    Libavcodec/avformat 只是为您提供文件中的数据。不幸的是(或者幸运的是,这取决于您的观点),许多文件格式不需要从 0 开始的时间戳。事实上,如果多个文件各自构成较长流的一部分并且您希望能够以非破坏性的方式将它们重新组合在一起。

    如果您想要从 0 开始的时间戳,那么就像您说的那样,您需要保存最低/第一个时间戳并从所有时间戳中减去该值。但是请注意,对于一些非常丑陋的格式(如 DVD 视频),时间戳在内容中间重置是很常见的,这甚至可能导致您的方法得到负时间戳。如果您预计自己可能会处理此类内容,则需要检测不连续性并对其进行修补。上次我使用 avcodec/avformat,他们没有自动为您执行此操作的功能,但他们现在可能。如果您认为您可能需要,我会调查一下。

    【讨论】:

      猜你喜欢
      • 2018-12-07
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 2021-11-23
      • 1970-01-01
      • 2015-12-31
      • 1970-01-01
      相关资源
      最近更新 更多