Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 暂停&;使用iOS中的AVFoundation恢复同一文件的视频捕获_Iphone_Ios_Objective C_Avfoundation_Video Capture - Fatal编程技术网

Iphone 暂停&;使用iOS中的AVFoundation恢复同一文件的视频捕获

Iphone 暂停&;使用iOS中的AVFoundation恢复同一文件的视频捕获,iphone,ios,objective-c,avfoundation,video-capture,Iphone,Ios,Objective C,Avfoundation,Video Capture,我正试图找出如何实现在单个会话中重复暂停和恢复视频捕获的功能,但使用AVFoundation将每个新片段(每次暂停后捕获的片段)添加到同一视频文件中。目前,每当我再次按“停止”和“录制”时,它只会将一个新的视频文件保存到我的iphone相册中,并开始捕获到一个单独的/新的文件中。我需要能够反复按下“记录/停止”按钮。。。仅在录制处于活动状态时捕获视频和音频。。。然后,当按下“完成”按钮时,拥有一个包含所有片段的AV文件。所有这些都需要在同一个捕获会话/预览会话中进行 我能想到的唯一方法就是按下“

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

我能想到的唯一方法就是按下“完成”按钮,将每个单独的输出文件合并成一个文件。。。但是我很确定基本上把一堆单独的剪辑粘贴在一起的处理时间是不能接受的。另外,这似乎是一种非常混乱和不必要的方式,代码太多了

有没有简单的方法可以在单个会话中暂停视频捕获,然后恢复对同一文件的捕获?还有其他想法吗

如果不是太麻烦的话,示例代码会帮我解决很多问题。。。我仍在自学,所以在解释中我不太擅长使用行话和术语。谢谢


编辑:这是我开始学习AVFoundation的项目。。。因此,这就是我希望修改的代码,以实现上述功能:

通常,如果我使用的是AVCaptureSession,我会使用startRunning和stopRunning。我想你会的


请参阅AVCaptureSession的文档。

您可以使用
AVCaptureVideoDataOutput
而不是使用捕获会话输出的电影文件,并在您的学员中,将示例传递给
AVAssetWriterInput
的实例。然后,您可以将预览与录制分离。如果您的代理没有将缓冲区转发给资产写入器,则该部分没有记录

当您想要开始将第二次(以及随后的)会话录制到同一个文件时,您需要调整时间戳,使其从停止点开始按顺序排列,并且需要确保对音频和视频进行相同的调整,以便它们保持同步。虽然有点复杂,但确实可行


编辑:有一个例子可以说明这一点。

不会停止运行停止整个会话并结束摄像机在实际录制时将捕获的内容的实时预览吗?正确,因为当您实例化AVCaptureVideoPreviewLayer时,您可以使用特定会话来执行此操作。您是否希望保持预览层运行并能够开始捕获/停止捕获?与录像机类似?是的,我需要保持预览层运行。用户需要基本上能够点,捕捉几秒钟,停止。。。。看看其他东西,指向,捕捉,停止。。。。看看别的东西,指着,开枪,停下。。。。等等,都在同一节课上。完成后,创建一个视频文件,在一个流文件中播放每个捕获。我还对我的问题进行了一些编辑,希望能更清楚一点,让问题更合理一点。尼尔,完成后,你能发布示例代码吗?我期待做完全相同的事情,我的生活中找不到任何样本代码anywhere@SamB你找到解决办法了吗?谢谢你的回答。我对objective-c还是个新手,试图摸索着理解你说的话。我当然理解你答案背后的逻辑,而且似乎它可能会起作用。对我来说,问题是弄清楚如何实际实施。我一直在到处寻找示例/示例代码,以获取您所建议的部分,但我遇到了困难。我会继续打猎&如果我能让它发挥作用,我会立即接受你的回答。同时,如果您有任何示例代码或链接让我开始,它将帮助我很多!我有一些代码。我会把它整理成可出版的样本。“如果你在几天内什么也看不到,请告诉我。”杰拉恩戴维斯——我也在寻找同样的东西。你能在github上发布你的代码吗。我也找不到这方面的任何书面材料或例子。Thanks@GeraintDavies非常感谢,我等不及要看了。我想出了另一种方法来达到同样的目的,即通过AVMutableComposition,录制单独的文件,然后将帧分开,最后将所有内容组合在一起。。。。但在运行时编译和创建合成剪辑的处理时间绝对是一场噩梦。。。再次感谢,&期待您的更新:)我已经上传了示例并编辑了文本以包含链接。如果您有任何意见或问题,请随时与我联系。如果您最终找到了这个问题的答案,请告诉我。@Daniel您找到解决方案了吗?