CMSampleBufferGetSampleTimingInfo:没有持续时间?

时间:2015-11-22 20:37:24

标签: avfoundation avassetwriter cmsamplebufferref

我有直播视频,CMSampleBufferGetSampleTimingInfo为视频提供CMTime(value=0, timescale=0)的持续时间。

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

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

1 个答案:

答案 0 :(得分:1)

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

持续时间可以这样计算:

CMTimeSubtract(timingInfoNext.presentationTimeStamp, timingInfoCurrent.presentationTimeStamp)