使用GPUImage框架暂停视频

时间:2013-11-14 20:07:46

标签: ios objective-c gpuimage video-recording

我一直在尝试在其中一个GPUImage项目示例“SimpleVideoFilter”中实现“Pause / Resume”选项,到目前为止,除了“暂停”视频的问题外,它的效果还不错。我正在使用下面提到的代码暂停视频

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

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

问题是视频卡在最后一帧上,“暂停”持续时间也会影响总视频时长,..

所以例如,如果我录制5秒并暂停10秒并再次恢复录制5秒,那么总录音应该是10秒,当我播放视频时,播放5秒然后卡在最后下一个10秒“暂停时间”的帧然后再播放最后5秒..

我想要的是简单的,如果我录制5秒并暂停10秒并再次恢复录制5秒,它应该只录制10分钟的录音。

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

2 个答案:

答案 0 :(得分:3)

您需要在GPUImageVideoCamera上调用[videoCamera pauseCameraCapture];来停止来自摄像头的帧缓冲区流,然后再调用GPUImageMovieWriter上的[movieWriter finishRecording];来完成第一个剪辑。

然后,当您最终通过拨打[videoCamera resumeCameraCapture];重新启动摄像机时,您需要确保在电影记事本中写入新的URL。

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

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

答案 1 :(得分:2)

我知道这个问题很老但我正在开展类似的任务,并找到了一个使用GPUImage的好解决方案。我找到了project forked from GPUimage。这里改变了movieWriter类,使得视频可以按照所讨论的激励方式暂停。

暂停视频时,您需要设置movieWriter.paused=YES,并在恢复视频录制时设置movieWriter.paused=NO。其中movieWriter是类 GPUImageMovieWriter

的对象

完美地为我工作。希望这将有助于将来。