CMSampleBuffer 的样本呈现时间代表啥?
Posted
技术标签:
【中文标题】CMSampleBuffer 的样本呈现时间代表啥?【英文标题】:What does a CMSampleBuffer's sample presentation time represent?CMSampleBuffer 的样本呈现时间代表什么? 【发布时间】:2015-11-25 19:40:37 【问题描述】:我们的应用使用 AVFoundation 来捕获视频、显示、操作并使用其样本缓冲区导出视频。我试图了解CMSampleBufferGetPresentationTimeStamp(_:)
CMTime 实际代表什么。
例如,当视频捕获开始时,第一个样本的演示时间是 93 小时 5 分钟。我不明白这个值是从哪里来的。使用第一个示例的演示时间启动 AVAssetWriter 会话会在视频播放开始前创建 93 小时的黑帧。
【问题讨论】:
您能否发布您看到返回为 93 小时的示例CMTime
值?
@JAL 这是以秒为单位的表示:347851.930463783
... 和 CMTime 表示:value = 347957883945123, timescale = 1000000000
【参考方案1】:
它基于马赫时间,这意味着自上次重启以来的滴答数。您可以使用以下代码创建这样的 CMTime:
mach_timebase_info_data_t timeInfo;
mach_timebase_info(&timeInfo);
CMTime time = CMTimeMake(mach_absolute_time() * timeInfo.numer / timeInfo.denom, 1000000000);
或使用它来将其转换为秒数。double seconds = CACurrentMediaTime();
【讨论】:
感谢您的回答!它满足我的需要:)。但是你能再解释一下你在那里使用的公式吗?以及为什么时间刻度是 1000000000。以上是关于CMSampleBuffer 的样本呈现时间代表啥?的主要内容,如果未能解决你的问题,请参考以下文章