具有非恒定帧速率的 AVAssetWriter

AVAssetWriter with non-constant frame rates

我正在尝试将一系列 JPG 图像导出到 H264 电影中(理想情况下它应该是动态 JPEG 电影,但不幸的是 AVAssetWriter 不支持此编解码器)。

这些图像带有带有 VFR(可变帧率)的监控摄像头,因此我根据它们被捕获的时间计算 CMTime,这 – 由于 VFR 摄像头的工作方式 – 结果以非恒定帧速率。

不过,当我这样做时,AVAssetWriter 总是无法渲染电影:

Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSLocalizedFailureReason=An unknown error occurred (-16364), NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x604000245a90 {Error Domain=NSOSStatusErrorDomain Code=-16364 "(null)"}}

当我将 CMTime 实例更改为例如CMMakeTime( frameIndex * 150, 600 ) 有效。

知道如何解决这个问题吗?

-16364是无效时间码的代码。结果我为我写的最后一张图片计算了一个错误的CMTime,这使得时间倒退了AVAssetWriter 不喜欢这样——但确实如此。

感谢Apple Developer Forum中的bford帮我解决了这个问题