我们的应用程序正在使用AVFoundation使用其样本缓冲区捕获视频,显示,操作和导出视频。我想了解CMSampleBufferGetPresentationTimeStamp(_:)
CMTime实际代表什么。
例如,当视频捕获开始时,第一个样本的呈现时间为93小时5分钟。我不明白这个价值来自哪里。使用第一个样本的演示时间来启动AVAssetWriter会话,在视频播放开始之前创建93小时的黑帧。
答案 0 :(得分:3)
它基于马赫时间,即上次重启时的刻度数。您可以使用以下代码创建此类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();