2012-01-01 52 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