10

我试图弄清楚如何实现在单个会话中重复暂停和恢复视频捕获的功能,但是使用 AVFoundation 将每个新片段(每次暂停后捕获的片段)添加到同一个视频文件中。目前,每次我按“停止”然后再次“录制”时,它只是将一个新的视频文件保存到我的 iphone 相册并开始捕获到一个单独的/新文件。我需要能够一遍又一遍地按下“录制/停止”按钮......仅在录制处于活动状态时捕获视频和音频......然后当按下“完成”按钮时,拥有一个包含所有段在一起。所有这些都需要在同一个捕获会话/预览会话中发生。

我能想到的唯一方法是按下“完成”按钮,获取每个单独的输出文件并将它们组合成一个文件......但我很确定基本上粘贴一堆单独的处理时间剪辑在一起是不可接受的。另外,看起来这将是一种非常混乱且不必要的方法,代码太多。

有什么简单的方法可以在单个会话中暂停视频捕获并简单地将捕获恢复到同一个文件?还是有其他想法?

如果不是太麻烦,示例代码会帮助我很多......我仍在自学和自学,所以我不太擅长在解释中遵循术语和术语。谢谢

编辑:这是我开始学习 AVFoundation 的项目...所以这是我希望更改以实现上述功能的代码:http: //developer.apple.com/library/ios/#samplecode/AVCam /Introduction/Intro.html

4

2 回答 2

11

您可以在委托中使用 and ,而不是使用捕获会话的电影文件输出AVCaptureVideoDataOutput,将样本传递给AVAssetWriterInput. 然后,您可以将预览与录制分离。如果您的委托人没有将缓冲区转发给资产编写器,则该部分没有记录。

当您想开始将第二个(和后续)会话记录到同一个文件时,您需要调整时间戳,以便它们从您停止的点开始连续,并且您需要确保您制作相同的调整音频和视频,使它们保持同步。所以有点繁琐,但肯定是可行的。

编辑:有一个示例 iPhone 应用程序演示了这一点。

于 2013-02-20T17:53:15.030 回答
1

一般来说,如果我使用 AVCaptureSession,我会使用 startRunning 和 stopRunning。我假设你会的。

请参阅 AVCaptureSession 的文档。

于 2013-02-16T01:41:05.583 回答