2012-01-01 121 views
0

我試圖讓用戶從iPod庫中選擇一首歌曲。從那裏得到歌曲的URL後,我試圖用CocosDenshion庫播放它,但我沒有得到任何聲音。使用CocosDenshion播放iPod庫歌曲

這裏是MPMediaPickerControllerDelegate的代碼示例:

#pragma mark MPMediaPickerControllerDelegate 
- (void)mediaPicker: (MPMediaPickerController *)mediaPicker 
    didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection { 
    [self dismissModalViewControllerAnimated:YES]; 
    if ([mediaItemCollection count] < 1) { 
     return; 
    } 
    [song release]; 
    song = [[[mediaItemCollection items] objectAtIndex:0] retain]; 


    NSURL *itemURL = [song valueForProperty:MPMediaItemPropertyAssetURL]; 
    fileURL = [itemURL absoluteString]; 

    [[SimpleAudioEngine sharedEngine] preloadEffect:fileURL]; 
} 

,這裏是爲播放的聲音按鈕的處理程序。

- (IBAction)playSong { 

    [[SimpleAudioEngine sharedEngine] playEffect:fileURL pitch:1.0f pan:0.0f gain:1.0f]; 
} 

有誰能告訴我哪裏出問題了。我需要能夠改變所選歌曲的音高。這就是我使用CocosDenshion庫的原因。

回答

1

查看[song valueForProperty:MPMediaItemPropertyAssetURL]在調試器中返回的網址。它不是一個標準的文件系統URL,而是一個指向資產庫的自定義URL,因此CocosDenshion無法打開它也就不足爲奇了。

您將需要使用AV Foundation(可能是AVAudioPlayer)來播放歌曲。或者使用AV Foundation首先將歌曲轉換爲「真實」文件,然後用Cocos Denshion播放,但這可能比第一個選項複雜得多。

MPMediaItemPropertyAssetURL的文檔明確是這麼說的,太:不支持

的AV Foundation框架外部的URL的用法。

+0

更新:AVPlayer可以播放iPod庫的網址。 AVAudioPlayer無法播放iPod庫的網址。 – 2012-02-03 09:35:30