我正在尝试使用 AVAssetWriter 创建多个串行写入 session 。一旦我成功完成了一个(调用finishWriting 之后),状态就会设置为2 (AVAssetWriterStatusCompleted)。
尝试创建另一个 session 时,我调用了 startWriting,但出现错误:
[AVAssetWriter startWriting] cannot call method when status is 2
除非我配置一些东西,否则我似乎无法创建写作 session 。我是否必须再次重新创建 AVAssetWriter?我一定遗漏了一些东西,而且文档没有帮助。
谢谢。
最佳答案
编写器完成后,它将不再可用。您必须创建一个新的。从文档中:
您只能使用给定实例的AVAssetWriter一次写入单个文件。
如果要多次写入文件,则必须使用的新实例
每次都使用AVAssetWriter。
我有一个使用两个AVAssetWriters的应用程序。我创建了两个作家,一次只活跃一个作家。当达到某个时间增量时,我将事件写入器推送到GCD队列中以进行完成和重新创建,并将事件写入器指针设置为另一个写入器。
if(time > delta)
dispatch( ^{ finish writer, create new one })
active_writer = next writer
使用捕获队列时,此方法效果很好。您可以设置一个开关来执行给定写入器状态的操作。
关于iphone - AVAssetWriter 多个 session 和状态属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4911534/