iOS-从相册选中一个视频并拿到视频的元数据

来源:互联网 发布:php设计思想 编辑:程序博客网 时间:2024/05/17 13:44

从相册选中一个视频并拿到该视频的元数据信息

// 通过相册里选中的某一个视频获取他的元数据信息- (void)getXMLFromSelectedVideoInAlbumWithPath:(NSURL *)mediaUrl andRefrenceURL:(NSURL *)refrenceUrl{    // 通过视频的 refrenceURL 获取PHFetchResult    PHFetchResult *fetchResult = [PHAsset fetchAssetsWithALAssetURLs:[NSArray arrayWithObject:refrenceUrl] options:nil];    if (fetchResult.count) {        PHAsset *videoAsset = (PHAsset*)fetchResult.firstObject;        PHVideoRequestOptions *phvideoResOption = [[PHVideoRequestOptions alloc]init];        [[PHImageManager defaultManager] requestAVAssetForVideo:videoAsset options:phvideoResOption resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {            AVFormatContext *pinputFormatCtx = NULL;            int ret = avformat_open_input(&pinputFormatCtx, mediaUrl.absoluteString.UTF8String, NULL, NULL);            if (ret == 0) {                av_dump_format(pinputFormatCtx,0,mediaUrl.absoluteString.UTF8String, 0);                AVDictionaryEntry *tag = NULL;                tag = av_dict_get(pinputFormatCtx->metadata, "comment", NULL, 0);                if(tag) {                    if(tag->key && strlen(tag->value)>10) {                        if(strncmp(tag->key, "TVUComment:", 11)) {                            NSString *filemeta = [[NSString alloc]initWithCString:tag->value+11 encoding:NSUTF8StringEncoding];                            NSMutableString *mStr = [NSMutableString stringWithFormat:@"<TVUMetaData xmlns=\"http://www.tvunetworks.com\">%@</TVUMetaData>",filemeta];                            NSString *xmlName = [[TVUMovManager defaultManager] generateXMLFileBasedOnTheTimeInTheMetadata:mStr];                            NSString *checkStr = [NSString stringWithFormat:@"Documents/videoMetadata/%@",xmlName];                            NSString *metadataXML = [[NSString alloc]initWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:checkStr] encoding:NSUTF8StringEncoding error:nil];                            if (metadataXML == nil) {                                NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];                                NSString *xmlPath = [documentPath stringByAppendingString:[NSString stringWithFormat:@"/videoMetadata/%@",xmlName]];                                NSError *error = nil;                                [mStr writeToFile:xmlPath atomically:YES encoding:NSUTF8StringEncoding error:&error];                                if(error)                                {                                    log4cplus_error("Metadata", "%smetaData write failure:%s",__func__,error.debugDescription.UTF8String);                                }else{                                    metadataXML = [[NSString alloc]initWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:checkStr] encoding:NSUTF8StringEncoding error:nil];                                }                            }                            if (metadataXML != nil) {                                log4cplus_error("Metadata", "%sSelected video's metadata is %s",__func__,metadataXML.UTF8String);                                NSData *xmlData = [metadataXML dataUsingEncoding:NSUTF8StringEncoding];                                [self XMLParserWithData:xmlData];                            }                        }                    }                }                avformat_close_input(&pinputFormatCtx);            }        }];    }}


阅读全文
0 0