AVAssetWriter多个会话和状态属性

我正在尝试与AVAssetWriter创build多个串行写入会话。 一旦我成功完成一个(在完成写入之后)状态设置为2(AVAssetWriterStatusCompleted)。

试图创build另一个会话,我打电话startWriting,但我得到的错误:

[AVAssetWriter startWriting] cannot call method when status is 2 

似乎我不能创build一个写作会议,除非我configuration的东西。 我是否必须重新创buildAVAssetWriter? 我一定错过了一些东西,文档没有帮助。

谢谢。

作者完成后不再可用。 你必须创build一个新的。 从文档:

您只能使用一个给定的AVAssetWriter实例写入一个文件。 如果要多次写入文件,则每次都必须使用AVAssetWriter的新实例。

我有一个应用程序,我使用两个AVAssetWriters。 我创build了两个作家,一次只有一个是活跃的。 当达到一定的时间增量时,我将激活的写入器推到GCD队列上以完成和重新创build,并将激活的写入器指针设置为另一个写入器。

 if(time > delta) dispatch( ^{ finish writer, create new one }) active_writer = next writer 

这在使用捕获队列时效果很好。 您可以设置一个开关来执行给定作者状态的操作。