CMSampleBuffer 的样本呈现时间代表什么?

Iva*_*sko 4 avfoundation ios avassetwriter swift

我们的应用程序使用 AVFoundation 来捕获视频、显示、操作和使用其示例缓冲区导出视频。我试图了解CMSampleBufferGetPresentationTimeStamp(_:)CMTime 实际代表什么。

例如,视频采集开始时,第一个样本的呈现时间为 93 小时 5 分钟。我不明白这个价值从何而来。使用第一个示例的演示时间来启动 AVAssetWriter 会话会在视频播放开始之前创建 93 小时的黑帧。

Mac*_*j S 6

它基于马赫时间,这意味着上次重新启动后的滴答数。您可以使用以下代码创建这样的 CMTime:

  mach_timebase_info_data_t timeInfo;
  mach_timebase_info(&timeInfo);
  CMTime time = CMTimeMake(mach_absolute_time() * timeInfo.numer / timeInfo.denom, 1000000000);
Run Code Online (Sandbox Code Playgroud)

或者使用它来让它已经转换为秒数。
double seconds = CACurrentMediaTime();