我正在尝试使用qtkit使用我的应用程序录制和播放电影。我在一个视图中录制视频并将其显示在另一个视图中。我就是这样做的
- (void)startRecording
{
NSString *applicationSupportDirectory = [[NSFileManager defaultManager] applicationSupportDirectory];
NSString *path = [applicationSupportDirectory stringByAppendingPathComponent:kVideoOutputName];
NSURL *url = [NSURL fileURLWithPath:path];
// Delete the previous file
[[NSFileManager defaultManager] removeItemAtURL:url error:nil];
mCaptureMovieFileOutput.delegate = self;
[mCaptureMovieFileOutput recordToOutputFileURL:url];
}
- (void)stopRecording
{
[mCaptureMovieFileOutput recordToOutputFileURL:nil];
}
- (void)captureOutput:(QTCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL forConnections:(NSArray *)connections dueToError:(NSError *)error
{
// [[NSWorkspace sharedWorkspace] openURL:outputFileURL];
// removes the current view
[self cleanView];
MyViewController *controller = [[SharingViewController alloc] init];
controllerpath.path = outputFileURL;
[self.view addSubview:[controller view]];
[self stopCamera];
}
现在在我的视图控制器中,我将电影分配给我的电影播放器。
- (void)awakeFromNib
{
NSError *error;
moviePlayer.movie = [QTMovie movieWithURL:path error:&error];
NSLog(@"%@", [error localizedDescription]);
}
现在,这段代码第一次工作,但我需要多次注册和显示。
这里已经存在一个问题。如果我想多次录制视频,我必须删除第一个,否则在第一次之后它不会记录任何内容(它抱怨文件已经存在)。
问题是,在第一次之后,它根本不显示视频。当我执行[QTMovie movieWithURL:path error:& error];它抱怨文件或目录不存在,实际上它确实存在(我还检查了[QTMovie canInitWithUrl:])。
我不确定这里发生了什么。苹果的示例代码能够多次记录,但由于某些原因,我不能在没有首先删除现有文件的情况下(尽管第一次使用它)。
如果需要,我很乐意提供进一步的细节。
编辑:如果我每次都为视频使用不同的名称,一切正常。所以这实际上是关于每次使用相同名称录制的问题。答案 0 :(得分:0)
我最终为每个文件使用了不同的文件名。
答案 1 :(得分:0)
我遇到了同样的问题,我发现在重复使用相同的文件名之前将电影视图设置为nil解决了这个问题。
答案 2 :(得分:0)
我遇到了创建QTMovie的同样奇怪的问题。我刚刚将文件加载到像这样的NSData对象,它起作用了:
[self setMovieData:[NSData dataWithContentsOfURL:[self movieURL]]];
[self setMovie:[QTMovie movieWithData:[self movieData] error:&error]];