CMSampleBufferGetSampleTimingInfo:没有持续时间?

CMSampleBufferGetSampleTimingInfo: No duration?

我有直播,CMSampleBufferGetSampleTimingInfo 给出了 CMTime(value=0, timescale=0) 的视频时长。

对于音频,我一次获得 1024 个样本,但是 CMSampleBufferGetSampleTimingInfo(sampleBuffer, index, &timingInfo) 为样本中的每个索引提供了完全相同的 presentationTimeStamp。

如何在实时流中准确获取视频帧的持续时间信息,以及如何在 CMSampleBufferRef 中获取音频样本的实际时间?

你只能依赖presentationTimeStamps,所以在下一帧到来之前你无法知道当前视频帧的持续时间。这对于实时流很有意义,因为捕获帧速率是可变的并且取决于照明等,但是当样本缓冲区来自文件时这似乎也是如此。

持续时间可以这样计算:

CMTimeSubtract(timingInfoNext.presentationTimeStamp, timingInfoCurrent.presentationTimeStamp)