【发布时间】:2012-11-21 12:29:32
【问题描述】:
我正在使用 AVCaptureSession 和 AVCaptureMovieFileOutput 录制电影。我还在记录加速度数据并尝试将加速度数据与视频对齐。
我正在尝试找出一种方法来获取视频文件录制开始的时间。我正在执行以下操作:
currentDate = [NSDate date];
[output startRecordingToOutputFileURL:fileUrl recordingDelegate:self];
但是,根据我的测试,视频录制在调用 startRecordingToOutputFileURL 之前 0.12 秒开始。我假设这是因为各种视频缓冲区已经充满了添加到文件中的数据。
有没有办法获取视频第一帧的实际 NSDate?
【问题讨论】:
-
你试过NSTimer吗?
-
如果您设置了一个输出通道来捕获原始帧样本数据,您可以访问每个帧的时间戳。但是我无法使用电影输出和原始帧样本数据配置 AVCaptureSession,所以我不知道如何获取电影文件中第一个记录帧的确切时间戳。
-
我只是给你一些提示,但我没有真正的答案。 AVFoundation 使用了很多 KVO 你确定没有“实时”改变属性吗?您是否尝试过打印电影文件的 AVItemMetadatas?
-
KVO 与播放器或录音机更改的确切时间相比有明显的时间延迟。它基本上就像实际组件的异步控件一样。我检查了 AVItemMetadata ,遗憾的是,这些值似乎被裁剪为精确到秒,而不是每个实例精确计时 30 fps 帧所需的 33 毫秒级别。
标签: ios ipad avcapturesession avcapturemoviefileoutput