首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重启AVAssetWriter

重启AVAssetWriter
EN

Stack Overflow用户
提问于 2018-04-02 08:29:42
回答 2查看 975关注 0票数 1

我使用AVAssetWriter记录视频到文件。所以我为这个目的创建了类。链接到gist

然后在项目的某个地方,我推送录音并开始录制视频。

代码语言:javascript
复制
func start() {
assetWriter?.startWriting()
assetWriter?.startSession(atSourceTime: kCMTimeZero)
}

如果我只录制一次视频,但当我停止录制时,一切正常。

代码语言:javascript
复制
func finish() {
print("before finish")
assetWriter?.finishWriting {
  print("finish writing")
  }
}

然后试着录下另一段我得到异常的视频

代码语言:javascript
复制
[AVAssetWriter startWriting] Cannot call method when status is 2

如何将AVAssertWriter配置为录制倍数视频

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-02 09:03:06

不清楚是要创建多个视频文件还是将多个视频序列追加到单个文件中。如果您需要多个文件,请重新创建您的AVAssetWriter和朋友(即您的AssertController类)。

如果您希望文件中有多个序列,那么要知道AVAssetWriter不支持停止和启动,所以解决方案是不停止。您控制要追加的帧以及会话时间线上的时间,因此在“停止”时不要添加框架。

您的gist使用帧号来计算缓冲区表示时间戳,因此没有什么可做的,但是如果您使用的是图像示例缓冲区,那么它们已经有了自己的演示时间戳,您需要调整它们以处理会话时间线。

票数 1
EN

Stack Overflow用户

发布于 2018-12-18 02:28:32

当您使用AVAssetWriter时,您只能使用给定的AVAssetWriter实例一次来写入单个文件。每次写入文件时,都必须使用AVAssetWriter的新实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49607857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档