1

我正在尝试使用 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:])。

我不确定这里发生了什么。苹果的示例代码能够记录多次,但由于某些原因,我不能不先删除现有文件(虽然它是第一次工作)。

如果需要,我很乐意提供更多详细信息。

编辑:如果我每次都为视频使用不同的名称,那么一切正常。所以这确实是一个关于每次都用相同的名字录制的问题。

4

3 回答 3

0

我最终为每个文件使用了不同的文件名。

于 2011-06-12T09:06:58.487 回答
0

我在创建 QTMovie 时遇到了同样的奇怪问题。我刚刚将文件加载到这样的 NSData 对象中并且它起作用了:

[self setMovieData:[NSData dataWithContentsOfURL:[self movieURL]]];
[self setMovie:[QTMovie movieWithData:[self movieData] error:&error]];
于 2012-11-11T21:19:53.457 回答
0

我遇到了同样的问题,我发现在重用相同的文件名之前将电影视图设置为 nil 解决了这个问题。

于 2011-06-24T17:29:19.410 回答