当我使用CMSampleBufferGetPresentationTimeStamp获取视频帧的演示时间戳时:

CMTime pts = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
NSLog(@"pts: %+.3f", CMTimeGetSeconds(pts));

打印的时间戳记不是从0开始,而是几乎等于[[NSProcessInfo processInfo] systemUptime]。这是否意味着时间戳是通过iOS中较低的实现从systemUptime生成的?否则,时间戳记从何而来?

最佳答案

我认为它来自iOS上的 mach_absolute_time()

但是,您可以通过从所有缓冲区中减去第一个CMSampleBufferGetPresentationTimeStamp(firstBuffer)来使时间戳为零。

10-06 02:13