QTKit Не удалось найти файл или каталог

Я пытаюсь записывать и воспроизводить фильмы с помощью своего приложения, используя 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:]).

Я не уверен, что здесь происходит. Пример кода Apple может записываться несколько раз, но по некоторым причинам я не могу без предварительного удаления существующего файла (хотя он работает в первый раз).

При необходимости я буду рад предоставить более подробную информацию.

РЕДАКТИРОВАТЬ: Если я каждый раз использую другое имя для видео, все работает. Так что это действительно проблема записи с одним и тем же именем каждый раз.


person Oscar Del Ben    schedule 07.06.2011    source источник
comment
Похоже, происходит какое-то сумасшедшее кеширование. Вы пробовали использовать alloc/initWithURL:error: вместо удобного метода? Или, если это тоже не удалось, создать редактируемый фильм, который будет храниться в течение всего срока действия этой задачи записи / воспроизведения и чей URL-адрес вы просто обновите, установив для него значение nil при удалении старого файла?   -  person danyowdee    schedule 12.06.2011
comment
В любом случае: вы сообщали об ошибке в сокращенном примере проекта?   -  person danyowdee    schedule 12.06.2011


Ответы (3)


В итоге я использовал разные имена для каждого файла.

person Oscar Del Ben    schedule 12.06.2011

Я столкнулся с той же проблемой и обнаружил, что установка для просмотра фильма значения nil до повторного использования того же имени файла решила проблему.

person Jean-Sylvain Sormany    schedule 24.06.2011

У меня такая же странная проблема при создании QTMovie. Я просто загрузил файл в такой объект NSData, и он сработал:

[self setMovieData:[NSData dataWithContentsOfURL:[self movieURL]]];
[self setMovie:[QTMovie movieWithData:[self movieData] error:&error]];
person bellkev    schedule 11.11.2012