10

アプリに関連するカスタム メタデータを使用してビデオを保存しようとしており、ユーザーがライブラリからそのビデオを選択したときにそれを取得しようとしています。メタデータを取得しようとしても何も表示されないため、メタデータを正しく保存しているかどうかわかりません。また、メタデータを正しく取得しているかどうかもわかりません。私はiOSが初めてです。どんな助けでも大歓迎です。多くのスレッドと開発者ライブラリを検索しましたが、これを機能させることができませんでした。

recordingDidFinishToOutputFileURL デリゲート関数にメタデータを保存しようとしています。ビデオがライブラリに保存されています。

NSMutableArray *metadata = [NSMutableArray array];
    AVMutableMetadataItem *mi = [AVMutableMetadataItem metadataItem];
    mi.key = AVMetadataCommonKeyTitle;
    mi.keySpace = AVMetadataKeySpaceCommon;
    mi.value = @"title";
    [metadata addObject:mi];

    NSLog(@"Output saving:%@",outputFileURL);
    AVAsset *video = [AVAsset assetWithURL:outputFileURL];
    AVAssetExportSession *exportSession = [AVAssetExportSession      exportSessionWithAsset:video presetName:AVAssetExportPresetPassthrough];
    exportSession.shouldOptimizeForNetworkUse = YES;
    exportSession.outputFileType = AVFileTypeMPEG4;
    exportSession.metadata = metadata;
    exportSession.outputURL = outputFileURL;
    [exportSession exportAsynchronouslyWithCompletionHandler:^{
        NSLog(@"done processing video!");
        UISaveVideoAtPathToSavedPhotosAlbum(outputFileURL.path, self, @selector(video:didFinishSavingWithError: contextInfo:), nil); 
    }];

メタデータをチェックするために didFinishPickingMediaWithInfo デリゲート関数でビデオを取得しようとしていますが、completedhandler 関数で何も見ることができません

        if ([mediaType isEqualToString:(NSString *)kUTTypeMovie]) {
        video_selected = TRUE;
        NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];

        NSLog(@"video has %@", videoURL.path);
        AVAsset *videoAsset = [AVAsset assetWithURL:videoURL];
        NSLog(@"Loading metadata...");
        NSArray *keys = [[NSArray alloc] initWithObjects:@"commonMetadata", nil];
        NSMutableArray *metadata = [[NSMutableArray alloc] init];
        [videoAsset loadValuesAsynchronouslyForKeys:keys completionHandler:^{

            [metadata removeAllObjects];
            for (NSString *format in [videoAsset availableMetadataFormats])
            {
                [metadata addObjectsFromArray:[videoAsset metadataForFormat:format]];
                NSLog(@"Printing metadata-%@",metadata);
            }


        }];
4

2 に答える 2

0

エラーを確認してください。ファイルが既に存在する場所にエクスポートしているため、それ自体にエクスポートされているため、機能しません。別の場所にエクスポートするだけ

于 2014-02-15T16:28:31.270 に答える