具有非恒定帧速率的 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帮我解决了这个问题
我正在尝试将一系列 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帮我解决了这个问题