美文网首页iOS 开发
iOS播放音乐库音乐,播放系统音乐中的文件

iOS播放音乐库音乐,播放系统音乐中的文件

作者: 策马鞭程 | 来源:发表于2016-09-21 17:35 被阅读908次

    AVAudioPlayer播放IPod音乐库中的音乐文件.

    1.首先通过代理存储音乐信息

    #pragma mark - MPMediaPickerControllerDelegate
    - (void)mediaPicker:(nonnull MPMediaPickerController *)mediaPicker didPickMediaItems:(nonnull MPMediaItemCollection *)mediaItemCollection {
        MPMusicPlayerController *musicPlayer = [MPMusicPlayerController systemMusicPlayer];
        [musicPlayer setQueueWithItemCollection:mediaItemCollection];
        MPMediaItem *item = [mediaItemCollection.items firstObject];
        // 重点:编码对象(item)为NSData
        NSData *date = [NSKeyedArchiver archivedDataWithRootObject:item];
        // 存储编码后的NSData到plist文件
        [[NSUserDefaults standardUserDefaults] setObject:date forKey:kMusicKey];
        [self dismissViewControllerAnimated:YES completion:nil];
        // 取出data并播放
        [self playerMusic];
    }
    

    2.取出音乐播放

      - (void)playerMusic {
        // 在任何其他文件都可以取出data进行音乐播放
        NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kMusicKey];
        // 解档还原item对象
        MPMediaItem *item = [NSKeyedUnarchiver unarchiveObjectWithData:data];
        // 取出音乐.注意:MPMediaItemPropertyAssetURL属性可能为空. 这是因为iPhone自带软件Music对音乐版权的保护,对于所有进行过 DRM Protection(数字版权加密保护)的音乐都不能被第三方APP获取并播放.即使这些音乐已经下载到本地.但是还是可以播放本地未进行过数字版权加密的音乐.也就是您自己手动导入的音乐.
        NSURL *assetURL = [item valueForProperty:MPMediaItemPropertyAssetURL];
        NSError *err;
        self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:assetURL error:&err];
        // 播放音乐
        [_audioPlayer play];
    }
    

    相关文章

      网友评论

        本文标题:iOS播放音乐库音乐,播放系统音乐中的文件

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