CMSampleBufferGetSampleTimingInfo:没有持续时间?
CMSampleBufferGetSampleTimingInfo: No duration?
我有直播,CMSampleBufferGetSampleTimingInfo
给出了 CMTime(value=0, timescale=0)
的视频时长。
对于音频,我一次获得 1024 个样本,但是 CMSampleBufferGetSampleTimingInfo(sampleBuffer, index, &timingInfo)
为样本中的每个索引提供了完全相同的 presentationTimeStamp。
如何在实时流中准确获取视频帧的持续时间信息,以及如何在 CMSampleBufferRef
中获取音频样本的实际时间?
你只能依赖presentationTimeStamp
s,所以在下一帧到来之前你无法知道当前视频帧的持续时间。这对于实时流很有意义,因为捕获帧速率是可变的并且取决于照明等,但是当样本缓冲区来自文件时这似乎也是如此。
持续时间可以这样计算:
CMTimeSubtract(timingInfoNext.presentationTimeStamp, timingInfoCurrent.presentationTimeStamp)
我有直播,CMSampleBufferGetSampleTimingInfo
给出了 CMTime(value=0, timescale=0)
的视频时长。
对于音频,我一次获得 1024 个样本,但是 CMSampleBufferGetSampleTimingInfo(sampleBuffer, index, &timingInfo)
为样本中的每个索引提供了完全相同的 presentationTimeStamp。
如何在实时流中准确获取视频帧的持续时间信息,以及如何在 CMSampleBufferRef
中获取音频样本的实际时间?
你只能依赖presentationTimeStamp
s,所以在下一帧到来之前你无法知道当前视频帧的持续时间。这对于实时流很有意义,因为捕获帧速率是可变的并且取决于照明等,但是当样本缓冲区来自文件时这似乎也是如此。
持续时间可以这样计算:
CMTimeSubtract(timingInfoNext.presentationTimeStamp, timingInfoCurrent.presentationTimeStamp)