gpt4 book ai didi

swift - 重启 AVAssetWriter

转载 作者:搜寻专家 更新时间:2023-11-01 07:03:32 29 4
gpt4 key购买 nike

我使用 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 和 friend (即您的 AssertController 类)。

如果你想在你的文件中有多个序列,那么要知道 AVAssetWriter 不支持停止和启动,所以解决方案是不停止。您可以控制要附加的帧以及在 session 时间轴上的时间,因此当您“停止”时不要附加帧。

您的要点使用帧号来计算缓冲区呈现时间戳,因此没有太多其他事情要做,但是如果您使用图像样本缓冲区,那么它们已经有自己的呈现时间戳,您需要调整它们以使用您的 session 时间表。

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

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com