iOS播放音樂(lè)庫(kù)音樂(lè),播放系統(tǒng)音樂(lè)中的文件

AVAudioPlayer播放IPod音樂(lè)庫(kù)中的音樂(lè)文件.

1.首先通過(guò)代理存儲(chǔ)音樂(lè)信息

#pragma mark - MPMediaPickerControllerDelegate
- (void)mediaPicker:(nonnull MPMediaPickerController *)mediaPicker didPickMediaItems:(nonnull MPMediaItemCollection *)mediaItemCollection {
    MPMusicPlayerController *musicPlayer = [MPMusicPlayerController systemMusicPlayer];
    [musicPlayer setQueueWithItemCollection:mediaItemCollection];
    MPMediaItem *item = [mediaItemCollection.items firstObject];
    // 重點(diǎn):編碼對(duì)象(item)為NSData
    NSData *date = [NSKeyedArchiver archivedDataWithRootObject:item];
    // 存儲(chǔ)編碼后的NSData到plist文件
    [[NSUserDefaults standardUserDefaults] setObject:date forKey:kMusicKey];
    [self dismissViewControllerAnimated:YES completion:nil];
    // 取出data并播放
    [self playerMusic];
}

2.取出音樂(lè)播放

  - (void)playerMusic {
    // 在任何其他文件都可以取出data進(jìn)行音樂(lè)播放
    NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kMusicKey];
    // 解檔還原item對(duì)象
    MPMediaItem *item = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    // 取出音樂(lè).注意:MPMediaItemPropertyAssetURL屬性可能為空. 這是因?yàn)閕Phone自帶軟件Music對(duì)音樂(lè)版權(quán)的保護(hù),對(duì)于所有進(jìn)行過(guò) DRM Protection(數(shù)字版權(quán)加密保護(hù))的音樂(lè)都不能被第三方APP獲取并播放.即使這些音樂(lè)已經(jīng)下載到本地.但是還是可以播放本地未進(jìn)行過(guò)數(shù)字版權(quán)加密的音樂(lè).也就是您自己手動(dòng)導(dǎo)入的音樂(lè).
    NSURL *assetURL = [item valueForProperty:MPMediaItemPropertyAssetURL];
    NSError *err;
    self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:assetURL error:&err];
    // 播放音樂(lè)
    [_audioPlayer play];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容