【发布时间】:2011-05-31 20:34:45
【问题描述】:
我正在为 ipad 2 开发一个应用程序,该应用程序允许用户使用设备前置摄像头录制自己的视频,然后在视频播放器上播放。我的整体功能正常工作,但有时,当我加载将播放视频的视图时,有时我的应用程序会崩溃,因为:
'CALayerInvalidGeometry',原因:'CALayer 位置包含 NaN:[nan 11.5]'
我注意到,当录制的剪辑播放时间少于 15 秒时,该应用程序大部分(但并非唯一)崩溃。
任何人都知道什么s going on?
Heres 负责记录的代码:
-(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];
}
}
编辑:我已经实现了一种方法来分析所有捕获的视频并删除有问题的视频,我的应用程序再次稳定,但我仍然想知道为什么有些视频不能很好地创建。
【问题讨论】:
-
我建议您发布播放代码(或加载视图的代码),如果您的应用程序在那里崩溃会很有用:-)
-
我发现了一些事情,首先我拍摄的视频有时有问题,我仍然没有弄清楚原因或方式。关于播放,我使用的是我用 AVFoundation 编写的视频播放器,它因此而崩溃。我尝试使用 MPMediaPlayerController 播放器,应用程序没有崩溃,只是没有播放有问题的剪辑。我想我必须弄清楚如何捕捉 SIGABRT 信号,这样应用程序就不会与我的播放器一起崩溃。但最好还是把所有好的片段都拍下来。
-
哦,而且,长度理论被证明是错误的,我有好的 3 秒长的剪辑和错误的 1:30 分钟剪辑。所以不,它与文件大小或剪辑长度无关。
标签: iphone ios xcode ipad video-capture