//

//  MusicInfoArray.h

//  LocationMusic

//

//  Created by Wengrp on 2017/6/22.

//  Copyright © 2017年 Wengrp. All rights reserved.

//

#import <UIKit/UIKit.h>

#import <Foundation/Foundation.h>

#import <AVFoundation/AVFoundation.h>

@interface MusicInfoArray : NSObject

/**

获取音视频文件的Metadata信息(可以获取到mp3以及m4a的相关信息)

*/

+ (NSMutableArray *)MusicInfoArray;

@end

//

//  MusicInfoArray.m

//  LocationMusic

//

//  Created by Wengrp on 2017/6/22.

//  Copyright © 2017年 Wengrp. All rights reserved.

//

#import "MusicInfoArray.h"

@implementation MusicInfoArray

+ (NSMutableArray *)MusicInfoArray

{

    NSMutableArray *resultArray = [[NSMutableArray alloc] init];

    NSArray *mp3Array = [NSBundle pathsForResourcesOfType:@"mp3" inDirectory:[[NSBundle mainBundle] pathForResource:@"Music" ofType:@"bundle"]];

    for (NSString *filePath in mp3Array) {

        NSURL *url = [NSURL fileURLWithPath:filePath];

        NSString *MusicName = [filePath lastPathComponent];

        AVURLAsset *mp3Asset = [AVURLAsset URLAssetWithURL:url options:nil];

        NSLog(@"%@",mp3Asset);

        for (NSString *format in [mp3Asset availableMetadataFormats]) {

            NSMutableDictionary *infoDict = [[NSMutableDictionary alloc] init];

            [infoDict setObject:MusicName forKey:@"MusicName"];

            NSLog(@"format type = %@",format);

            for (AVMetadataItem *metadataItem in [mp3Asset metadataForFormat:format]) {

                NSLog(@"commonKey = %@",metadataItem.commonKey);

                if ([metadataItem.commonKey isEqualToString:@"artwork"]) {

                    NSString *mime = [(NSDictionary *)metadataItem.value objectForKey:@"MIME"];

                    NSLog(@"mime: %@",mime);

                    [infoDict setObject:mime forKey:@"artwork"];

                }

                else if([metadataItem.commonKey isEqualToString:@"title"])

                {

                    NSString *title = (NSString *)metadataItem.value;

                    NSLog(@"title: %@",title);

                    [infoDict setObject:title forKey:@"title"];

                }

                else if([metadataItem.commonKey isEqualToString:@"artist"])

                {

                    NSString *artist = (NSString *)metadataItem.value;

                    NSLog(@"artist: %@",artist);

                    [infoDict setObject:artist forKey:@"artist"];

                }

                else if([metadataItem.commonKey isEqualToString:@"albumName"])

                {

                    NSString *albumName = (NSString *)metadataItem.value;

                    NSLog(@"albumName: %@",albumName);

                    [infoDict setObject:albumName forKey:@"albumName"];

                }

            }

            [resultArray addObject:infoDict];

        }

    }

    return resultArray;

}

@end

iOS - 获取音视频文件的Metadata信息的更多相关文章

  1. 获取音视频文件AVMetadata数据

    获取音视频文件AVMetadata数据 问题来源: http://stackoverflow.com/questions/16318821/extracting-mp3-album-artwork-i ...

  2. 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)

    随笔分类 - webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...

  3. Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  4. FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑

    FFmpeg_Tutorial FFmpeg工具和sdk库的使用demo 一.使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑 1.基本介绍 对于每一个从事音视频技术开发的工程师,想必没 ...

  5. Excel催化剂开源第37波-音视频文件元数据提取(分辨率,时长,采样率等)

    上一篇提到图片元信息Exif的提取,当然还有一类音视频文件,也同样存储着许多宝贵的元数据,那就开源到底呗,虽然自己找寻过程也是蛮艰辛坎坷的,大家看后有收获,只求多多传播下,让前人的工作可以更有价值. ...

  6. Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  7. Android IOS WebRTC 音视频开发总结(四六)-- 从另一个角度看国内首届WebRTC大会

    文章主要从开发者角度谈国内首届WebRTC大会,支持原创,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,更多详见www.rtc.help. -------------------- ...

  8. Android IOS WebRTC 音视频开发总结(六)-- iOS开发之含泪经验

    前段时间在搞webrtc iOS开发,所以将标题改为了Android IOS WebRTC 音视频开发总结, 下面都是开发过程中的经验总结,转载请说明出处(博客园RTC.Blacker): 1. IO ...

  9. DirectShow 获取音视频输入设备列表

    开发环境:Win10 + VS2015 本文介绍一个 "获取音频视频输入设备列表" 的示例代码. 效果图 代码下载 代码下载(VC2015):Github - DShow_simp ...

随机推荐

  1. 12 go实现几中基本排序算法

    include 冒泡排序 插入排序 快速排序 选择排序 这4种算法的内涵不再做解释了 github地址 冒泡排序算法 func maoPao(intSlice []int) []int { /* 冒泡 ...

  2. php json_encode 返回false

    今天用ajax请求不到数据,发现问题出现在最后一句 echo json_encode($data); var_dump(json_encode($data));输出false 使用json_last_ ...

  3. apache+tomcat集群部署笔记

    前提条件 安装gcc,gcc-c++两个编译器 yum install gcc yum install gcc-c++ 接下来开始安装集群相关环境: 1.下载apr,apr-util,pcre,apa ...

  4. 第二种方式,修改python unittest的执行顺序,使用猴子补丁

    1.按照测试用例的上下顺序,而不是按方法的名称的字母顺序来执行测试用例. 之前的文章链接 python修改python unittest的运行顺序 之前写的,不是猴子补丁,而是要把Test用例的类名传 ...

  5. EditDistance,求两个字符串最小编辑距离,动态规划

    问题描述: 题目描述Edit DistanceGiven two words word1 and word2, find the minimum number of steps required to ...

  6. Oracle如何实现跨库查询

    实现结果:在一个数据库中某个用户下编写一个存储过程,在存储过程中使用DBLINK连接另一个数据库,从此数据库中的一个用户下取数,然后插入当前的数据库中的一个表中. 二. 实现方法步骤: 1. 创建存储 ...

  7. 如何打造千万级Feed流系统

    from:https://www.cnblogs.com/taozi32/p/9711413.html 在互联网领域,尤其现在的移动互联网时代,Feed流产品是非常常见的,比如我们每天都会用到的朋友圈 ...

  8. nyoj 1239 引水project (河南省第八届acm程序设计大赛)

    题目1239 pid=1239" style="color:rgb(55,119,188)">题目信息 pid=1239" style="col ...

  9. php 自定义 分页函数

    <?php /** * 分页函数 * @param type $num 数据总数 * @param type $perpage 每页总数 * @param type $curpage 当前分页 ...

  10. 把mongodb服务添加到系统服务中,报错:[sc] openscmanager 失败 5

    添加mongodb系统服务命令如下: sc create MongoDB binPath= "D:\MongoDB\bin\mongod.exe --service --dbpath D:\ ...