2

我一直在尝试在 GPUImage 项目示例“SimpleVideoFilter”之一中实现“暂停/恢复”选项,到目前为止,除了“暂停”视频的问题外,它进展顺利。我正在使用下面提到的代码来暂停视频

- (void)pauseCameraCapture;
{
    capturePaused = YES; }

- (void)resumeCameraCapture;
{
    capturePaused = NO; }

问题是视频卡在最后一帧,“暂停”持续时间也进入总视频持续时间,..

因此,例如,如果我录制 5 秒并暂停 10 秒,然后再次继续录制 5 秒,那么总录制时间应该是 10 秒,但是,当我播放视频时,它会播放 5 秒,然后卡在最后一帧以供下一帧10秒“暂停时间”,然后在最后5秒再次播放..

我想要的很简单,如果我录制 5 秒并暂停 10 秒并再次恢复录制 5 秒,那么总共应该只录制 10 分钟的录制。

我搜索了这个问题,但找不到任何解决这个问题的方法。

4

2 回答 2

3

您需要调用[videoCamera pauseCameraCapture];GPUImageVideoCamera 来停止来自相机的帧缓冲区流,然后还需要调用[movieWriter finishRecording];GPUImageMovieWriter 来完成第一个剪辑。

然后,当您最终通过调用来重新启动摄像机时,[videoCamera resumeCameraCapture];您需要确保您正在写入 movieWriter 中的新 URL。

稍后,您将使用 AVFoundation 工具包中您最喜欢的技术创建的各个剪辑拼接在一起,并保存您完成的工作。

我正在对你在做什么做出一些假设,因为你没有发布太多代码,所以我不得不猜测你在做什么。您的问题中的更多细节帮助...

于 2013-11-14T20:22:10.033 回答
2

我知道这个问题很老,但我正在从事类似的任务,并使用 GPUImage 找到了一个很好的解决方案。我发现这个项目是从 GPUimage 分叉的。在这里,movieWriter 类已更改为可以按照问题所述以 excat 方式暂停视频。

您只需movieWriter.paused=YES在暂停视频movieWriter.paused=NO时进行设置,在恢复视频录制时进行设置。其中movieWriter是 GPUImageMovieWriter类的对象

对我来说工作得很好。希望这对将来的人有所帮助。

于 2014-06-28T07:58:19.163 回答