美文网首页
ios - 提取mp3文件内部数据元

ios - 提取mp3文件内部数据元

作者: lizhi_boy | 来源:发表于2019-03-29 17:35 被阅读0次
来一张效果图看看.png

在mac上点击mp3歌曲播放时会发现有一张专辑的图片,那么除了图片外还有什么数据呢?

1、实现一下

从网上随便找了一个MP3的歌曲陈雪凝-绿色.mp3

    for (NSString *format in [aset availableMetadataFormats]) {
        for (AVMetadataItem *metadata in [aset metadataForFormat:format]) {
             NSLog(@"歌曲信息%@",metadata.commonKey);
//            if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyTitle]) {
//                NSLog(@"歌曲名称:%@",metadata.commonKey);
//            }
        }
    }

2、打印一下

打印一下metadata.commonKeymetadata.value

喜欢记得点❤️😯 2019-03-29 下午3.44.07.png

3、分析一下

结合commonkey的枚举的内容得知:
AVMetadataCommonKeyTitle: 歌曲名称
AVMetadataCommonKeyAlbumName: 专辑名称
AVMetadataCommonKeyType: 歌曲风格
AVMetadataCommonKeyPublisher: 发布源
AVMetadataCommonKeyArtwork: 图片数据(NSData格式)
AVMetadataCommonKeyArtist: 歌手名称

4、显示一下

code:

            if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyArtwork]) {
                self.songImageView.image = [UIImage imageWithData:(NSData *)metadata.value];
            }
            if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyTitle]) {
                songTextString = [songTextString stringByAppendingString:[NSString stringWithFormat:@"歌曲:%@\n",metadata.value]];
            }
            if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyAlbumName]) {
                 songTextString = [songTextString stringByAppendingString:[NSString stringWithFormat:@"专辑:%@\n",metadata.value]];
            }
            if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyType]) {
                songTextString = [songTextString stringByAppendingString:[NSString stringWithFormat:@"曲风:%@\n",metadata.value]];
            }
            if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyPublisher]) {
                songTextString = [songTextString stringByAppendingString:[NSString stringWithFormat:@"来源:%@\n",metadata.value]];
            }
            if ([metadata.commonKey isEqualToString:AVMetadataCommonKeyArtist]) {
               songTextString = [songTextString stringByAppendingString:[NSString stringWithFormat:@"歌手:%@\n",metadata.value]];
            }

look:


界面简单不要吐槽啦.png

5、封装一下

-(NSDictionary *)songContentMetaForMp3FliePath:(NSString *)filePath{
    
    AVURLAsset *aset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:filePath] options:nil];
    NSMutableDictionary *songDataDic = [NSMutableDictionary dictionary];
    
    for (NSString *format in [aset availableMetadataFormats]) {
        for (AVMetadataItem *metadata in [aset metadataForFormat:format]) {
            [songDataDic setValue:metadata.value forKey:metadata.commonKey];
        }
    }
    return songDataDic;
}

都看到这里了,点个❤️不过分吧

相关文章

  • ios - 提取mp3文件内部数据元

    在mac上点击mp3歌曲播放时会发现有一张专辑的图片,那么除了图片外还有什么数据呢? 1、实现一下 从网上随便找了...

  • python处理mp4视频提取音频转为mp3或者wav,并进行截

    mp4视频文件提取音频转为mp3或者wav文件 mp3是有损文件,wav是无损文件,就像我测试的视频,mp3导出只...

  • JAVA解析文件内容(Apache tika)

    Tika支持多种功能:文档类型检测 内容提取 元数据提取 语言检测。 文章转载——如何使用Tika提取文件内容[h...

  • ffmpeg 常用命令

    提取视频(去音频) 提取音频(aac m4a) 转mp3格式 或者直接提取mp3 然后发现mp3格式的音频时长对不上

  • 基于 HLS 创建 Golang 视频流服务器

    使用 FFmpeg,可以很轻易的将 mp3 文件转换为 HLS 格式,它由多个文件组成,其中一个包含元数据(.m3...

  • iOS静态库引入工程

    由于某种原因,工程中需要讲几个方法提取出来,打成静态库文件,但是这几个方法引用较多的内部文件,让iOS的开发处理一...

  • FFmpeg分离出PCM数据

    本文将使用FFmpeg从mp4/aac/mp3等包含音频流的多媒体文件中提取PCM数据保存到本地。 一、使用命令行...

  • ffmpeg清除音视频文件元数据

    清除mp3文件自带的专辑(album),艺术家(artist),流派(genre)等元数据,并替换封面图不废话,直...

  • ffmpeg音视频转化

    从MP4文件中提取aac音轨 从MP4文件中提取H264裸流 MP3转换为aac格式 使用aac和h264文件生成...

  • Hive知识汇总

    两种Hive表 hive存储:数据+元数据 托管表(内部表) 创建表: 准备数据文件my.txt 灌数据: 查看数...

网友评论

      本文标题:ios - 提取mp3文件内部数据元

      本文链接:https://www.haomeiwen.com/subject/hlilbqtx.html