重新启动AVAssetWriter

模糊男孩

我使用AVAssetWriter将视频录制到文件中。因此,我为此目的创建了类。链接到要点

然后在项目中的某个地方推送记录并开始记录视频。

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不支持停止和启动,因此解决方案是不停止。您可以控制要添加的帧以及在会话时间轴上的时间,因此只需在“停止”时不添加帧。

您的要领使用帧号来计算缓冲区呈现时间戳,因此无需做太多其他工作,但是,如果您正在使用图像样本缓冲区,那么它们已经具有自己的呈现时间戳,则需要对其进行调整以与会话时间轴一起使用。 。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章