将缓冲区附加到 AVAssetWriterInputPixelBufferAdaptor *不* 按时间顺序排列?

Append buffers to an AVAssetWriterInputPixelBufferAdaptor *not* chronologically?

我将 CVPixelBufferRefs 附加到连接到 AVAssetWriterInput 的 AVAssetWriterInputPixelBufferAdaptor 以使用 AVAssetWriter 写入文件。

那么,我打电话给

[pixelAdaptor appendPixelBuffer:pxbuffer withPresentationTime:someCMTime];

并且它正常工作。

现在,我按顺序执行此操作,因此在 CMTimeZero,我添加第一帧,在 0.5 秒添加另一帧,在 1 秒添加另一帧,依此类推。

我想知道,我是必须按顺序做,还是也可以随机做?为了争论,反过来呢?比如,先在 1s 处添加一个缓冲区,然后在 0.5s 处,然后在 0s 处?

我问的原因是,我试过了,它崩溃了,但我不确定它崩溃是因为我试图随机追加(非顺序),还是有其他原因(像异步追加)?

只有当输入告诉我(readyForMoreMediaData)时,我才会在串行调度队列上追加。

问题是:非顺序附加是否应该起作用,还是设计使它不起作用?

谢谢, 马蒂亚斯

我刚收到 Apple 媒体工程师的回复:

"AVAssetWriter requires receiving the frames in order."

这就清楚了:)