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

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

// 通过相册里选中的某一个视频获取他的元数据信息
- (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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值