您的位置:首页 > 移动开发 > IOS开发

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

2017-09-04 18:38 1516 查看
从相册选中一个视频并拿到该视频的元数据信息

// 通过相册里选中的某一个视频获取他的元数据信息
- (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 meta
4000
data is %s",__func__,metadataXML.UTF8String);
NSData *xmlData = [metadataXML dataUsingEncoding:NSUTF8StringEncoding];
[self XMLParserWithData:xmlData];
}
}
}
}
avformat_close_input(&pinputFormatCtx);
}
}];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐