zoukankan      html  css  js  c++  java
  • 使用AVFoundation播放音乐,并提取音乐封面显示

    1. 将mp3资源文件放在更目录下

    2.导入AVFoundation类

      #import <AVFoundation/AVFoundation.h>

    3.读取文件

       //获取资源目录

       NSString *resoucePath = [[NSBundle mainBundle]resourcePath];

       // 取出资源目录下所有mp3文件,将地址封装在数组中

       NSArray *mp3Array =          [NSBundlepathsForResourcesOfType:@"mp3"inDirectory[[NSBundlemainBundle]resourcePath]];

     

       NSMutableArray *musicArray;

     

       for (NSString *filePath in mp3Array) {

           

            //fileURLWithPath是初始化文件路径url得,urlWithPath是初始化网络链接得

            NSURL *fileURL = [NSURL fileURLWithPath:filePath];

            //初始化urlAssetoptions中可以指定要求准确播放时长

            AVURLAsset *avURLAsset = [AVURLAsset URLAssetWithURL:fileURL options:nil];

            [musicArray addObject:avURLAsset];

        }

     4.单元格中显示封面信息

       //取出每一行对应得AVURLAsset

        AVURLAsset *mp3Asset = [musicArray objectAtIndex:indexPath.row];

        NSLog(@"mp3Asset:%@",[[[mp3Asset   URL]absoluteString]stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);

        //取出url并取消百分号utf8转码

        NSString *mp3FilePath = [[[mp3Asset    URL]absoluteString]stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        //取最后一个/后面得路径

        NSString *musicTitle = [mp3FilePath lastPathComponent];

        //去掉.mp3得到歌曲名称

        musicTitle = [musicTitle substringToIndex:[musicTitle rangeOfString:@"."].location];

        musicCell.textLabel.text = musicTitle;

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

            NSLog(@"-------format:%@",format);

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

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

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

                    //取出封面artwork,从data转成image显示

                    musicCell.imageView.image = [UIImage imageWithData:[(NSDictionary*)metadataItem.value objectForKey:@"data"]];

                }

            }

        }

        //取得播放路径

        AVURLAsset *mp3Asset = [musicArray objectAtIndex:indexPath.row];

        //mp3文件路径得url

        NSURL *mp3URL = mp3Asset.URL;

    5. 调用AVAudioPlayer 播放文件

        #import <AVFoundation/AVFoundation.h>

        AVAudioPlayer *audioPlayer;

      audioPlayer = [[AVAudioPlayeralloc]initWithContentsOfURL:musicURLerror:NULL];

        [audioPlayerplay];

     

     

  • 相关阅读:
    LVS负载均衡
    Firewalld防火墙
    前端性能优化----yahoo前端性能团队总结的35条黄金定律
    如何做好工作?
    需求分析的故事——如何练就需求分析的火眼金晴?
    让技术人员看得懂的流程-----面向对象设计全流程概述
    关于RESTFul初步理解
    初步研究全文搜索的解决方案
    Artech的MVC4框架学习——第八章View的呈现
    Artech的MVC4框架学习——第七章Action的执行
  • 原文地址:https://www.cnblogs.com/jiangshiyong/p/2536260.html
Copyright © 2011-2022 走看看