我正在开发一款适用于ipad 2的应用程序,让用户可以使用设备前置摄像头录制自己的视频,然后在视频播放器上播放。我有整体功能,但有时候,有时我的应用程序崩溃,当我加载视频将播放视频,因为这样:
'CALayerInvalidGeometry',原因:'CALayer位置包含NaN:[nan 11.5]'
我注意到,当录制的剪辑播放时间小于15秒时,应用程序主要崩溃,但并非排他性地崩溃。
任何人都知道s going on?
Here
负责录制的代码:
-(void)record{
AVCaptureMovieFileOutput *output = [[AVCaptureMovieFileOutput alloc]init];
NSMutableString *videoURL;
if(isRecording){
//here i do some stuff to generate a random system path
[session addOutput:output];
AVCaptureConnection *videoConnection;
[session beginConfiguration];
for ( AVCaptureConnection *connection in [output connections] ) {
for ( AVCaptureInputPort *port in [connection inputPorts] ) {
if ( [[port mediaType] isEqual:AVMediaTypeVideo] ) {
videoConnection = connection;
}
}
}
if([videoConnection isVideoOrientationSupported]){
[videoConnection setVideoOrientation:AVCaptureVideoOrientationLandscapeLeft];
videoConnection.videoMirrored = true;
}
[session commitConfiguration];
[session startRunning];
NSURL *vidURL = [[NSURL alloc]initFileURLWithPath:videoURL];
[output startRecordingToOutputFileURL:vidURL recordingDelegate:self];
NSLog(@"Recording started in %@", videoURL);
[rootRep addObject:videoURL];
[vidURL release];
[videoURL release];
}else{
isRecording = false;
[output stopRecording];
[session removeOutput:output];
[output release];
NSLog(@"Recording stopped");
[recBut setImage:[UIImage imageNamed:@"rec.png"] forState:UIControlStateNormal];
}
}
编辑:我已经实施了一种方法来分析所有捕获的视频并删除有问题的视频,我的应用程序再次稳定,但我仍然想知道为什么有些视频不能很好地创建。答案 0 :(得分:0)
我不知道为什么相机每次都无法捕捉到好的视频文件,但我会告诉你如何安全地测试文件是否有效。你必须使用你想要测试的文件路径创建一个AVAsset,AVAsset有一个名为'playable'的属性,一个bool,然后你可以循环一个数组,其中包含你捕获的视频的地址,询问当前资产是否可播放并删除损坏的文件。