CMSampleBuffer的示例演示时间代表什么?

时间:2015-11-25 19:40:37

标签: ios swift avfoundation avassetwriter

我们的应用程序正在使用AVFoundation使用其样本缓冲区捕获视频,显示,操作和导出视频。我想了解CMSampleBufferGetPresentationTimeStamp(_:) CMTime实际代表什么。

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

1 个答案:

答案 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();