2014-01-27 2 views
0

Вариант использования выглядит так: видео записывается и сохраняется во временном месте с использованием AVCaptureFileOutput. После завершения записи некоторые метаданные должны быть добавлены в это видео и сохранены с новым именем файла в новом месте.AVAssetExportSession добавляет метаданные после окончания записи

Записывающая часть работает с сохранением файла во временном месте. Теперь мне нужно переименовать его, добавить метаданные и снова сохранить их в другом месте.

1) Могу ли я редактировать мета-данные в пределах:

- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error; 

метод delagate?

2) Моим вторым подходом было использование AVAssetExportSession для этого.

AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetMediumQuality]; 
    exportSession.outputFileType = AVFileTypeQuickTimeMovie; 
    exportSession.metadata = NEW ARRAY OF METADATA; 

    NSString* outputPath = [[PLFileManager sharedFileManager] pathForAsset:_newAsset]; 
    NSURL* url = [NSURL URLWithString:outputPath]; 
    exportSession.outputURL = url; 

    [[NSFileManager defaultManager] removeItemAtURL:url error:nil]; 

    [exportSession exportAsynchronouslyWithCompletionHandler:^(void){ 
       NSLog(@"Exported to [%@] %@", exportSession.outputURL, exportSession.error); 
    }]; 

Как когда-либо с таким подходом я получаю следующее сообщение об ошибке:

Экспортируется [/// вар/мобильный/Applications/7F9BC121-6F58-436E-8DBE-33D8BC1A4D79/Документы/Temp/конечный .mov] Ошибка домена = AVFoundationErrorDomain Code = -11800 «Операция не может быть выполнена» UserInfo = 0x1555f440 {NSLocalizedDescription = Операция не может быть выполнена, NSUnderlyingError = 0x1555c7a0 "Операция не может быть выполнена. (Ошибка OSStatus -12780.) ", NSLocalizedFailureReason = Произошла неизвестная ошибка (-12780)}

Может ли кто-нибудь сказать мне, что я делаю неправильно здесь? Или есть лучший способ сделать это?

+0

хотя я понял, что я делаю неправильно, я все же хотел бы услышать, если есть более оптимизированный способ сделай это. – NSRover

ответ

0

Хорошо, я понял, что я делаю неправильно. Вместо того, чтобы:

NSURL* url = [NSURL URLWithString:outputPath]; 

Я должен был использовать:

NSURL* outputUrl = [NSURL fileURLWithPath:outputPath]; 

Expanation

Смежные вопросы