我使用avassetwriter将视频录制到文件中。所以我创建了这个类。
link to gist
然后在项目的某个地方我推录并开始录制视频。

func start() {
assetWriter?.startWriting()
assetWriter?.startSession(atSourceTime: kCMTimeZero)
}

如果我只录制一次视频,一切正常,但当我停止录制时
func finish() {
print("before finish")
assetWriter?.finishWriting {
  print("finish writing")
  }
}

然后试着录下另一段视频
[AVAssetWriter startWriting] Cannot call method when status is 2

如何配置avassertwriter来录制多个视频

最佳答案

不清楚是要创建多个视频文件还是将多个视频序列附加到单个文件。如果需要多个文件,请重新创建您的AVAssetWriter和朋友(即您的AssertController类)。
如果您希望文件中有多个序列,那么请知道AVAssetWriter不支持停止和启动,因此解决方案是不停止。您可以控制要追加的帧以及在会话时间轴上的时间,因此在“停止”时不要追加帧。
您的gist使用帧号来计算缓冲区表示时间戳,因此没有太多其他工作要做,但是如果您使用的是图像示例缓冲区,那么它们已经有自己的表示时间戳,您需要调整它们以使用会话时间线。

关于swift - 重新启动AVAssetWriter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49607857/

10-12 05:58