AVAssetWriter多个会话和status属性

时间:2011-02-06 04:12:45

标签: iphone ios avfoundation avassetwriter

我正在尝试使用AVAssetWriter创建多个串行写入会话。一旦我成功完成一个(在调用finishWriting之后),状态将设置为2(AVAssetWriterStatusCompleted)。

尝试创建另一个会话,我调用startWriting,但是我收到错误:

[AVAssetWriter startWriting] cannot call method when status is 2

似乎我无法创建写入会话,除非我配置了什么。我是否必须再次重新创建AVAssetWriter?我必须遗漏一些东西,而且文档没有帮助。

感谢。

1 个答案:

答案 0 :(得分:17)

作家完成后不再可用。您必须创建一个新的。来自文档:

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

我有一个应用程序,我使用两个AVAssetWriters。我创建了两个编写器,其中一次只有一个是活动的。当达到某个时间增量时,我将活动的writer写入GCD队列以完成和重新创建,并将活动的writer指针设置为另一个writer。

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

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