我正在使用GPUImage框架以紧密的间隔一个接一个地录制多个视频,并使用GPUImageVideoCamera和GPUImageMovieWriter实时启用各种过滤器。
当我录制视频时,视频以混蛋开始(冻结半秒)并以混蛋结束。我知道这背后的原因是我将movieWriter对象传递给VideoCamera的audioEncodingtarget的语句。
所以在我的情况下,当我一个接一个地录制多个视频(使用不同的GPUImageMovieWriter对象)时,视频预览视图会在每次录制的开始和结束时冻结。
如果删除音频编码目标语句,条件会显着改善,但我当然不会收到音频。
目前我在录制时使用AVAudioRecorder来保存音轨,但我相信这不是一个理想的工作。
有没有办法解决这个问题。
- 我看了Apple的RosyWriter示例,他们的应用程序工作几乎相似,但几乎不变30 fps。我尝试使用RosyWriter代码(在删除添加紫色效果的代码之后)保存所需的视频,同时向用户显示GPUImageVideoCamera的过滤视图但是徒劳无功。当应用未修改的rosywriter代码时,只记录两个视频并且休息视频失败。我还试图从GPUImageVideoCamera传递红宝书代码捕获会话,但只获取黑框和没有音频的视频。
请帮助我如何在没有这种急动的情况下录制带有音频的GPUImage过滤视频。提前致谢
答案 0 :(得分:0)
我遇到了同样的问题,这是我的解决方法。
正如您所指出的,出现此问题是因为setAudioEncodingTarget方法在内部调用addAudioInputsAndOutputs来设置音频输入/输出到捕获会话。
为了避免这个问题,我为VideoCamera创建了justSetAudioEncodingTarget方法,如下所示, (在GPUImageVideoCamera.m上)
// just set
-(void)justSetAudioEncodingTarget:(GPUImageMovieWriter*)newValue {
if( newValue == nil ) {
return;
}
addedAudioInputsDueToEncodingTarget = YES;
[super setAudioEncodingTarget:newValue];
}
以下步骤是我的方案,我检查了它顺利工作。
创建VideoCamera后,调用VideoCamera的addAudioInputsAndOutputs。 在开始录制之前这不对。 :)
通过我上面的justSetAudioEncodingTarget将MovieWriter设置为VideoCamera。