使用CocosDenshion播放iPod库歌曲

时间:2012-01-01 06:59:24

标签: ios cocos2d-iphone mpmediapickercontroller

我想让用户从iPod库中选择一首歌。从中获取歌曲URL后,我尝试使用CocosDenshion库播放它,但我没有听到任何声音。

以下是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 个答案:

答案 0 :(得分:1)

查看调试器中[song valueForProperty:MPMediaItemPropertyAssetURL]返回的URL。它不是标准的文件系统URL,而是指向资产库的自定义URL,因此难怪CocosDenshion无法打开它。

您需要使用AV Foundation(可能是AVAudioPlayer)来播放这首歌。或者使用AV Foundation首先将歌曲转换为“真实”文件,然后使用Cocos Denshion播放,但这可能比第一个选项复杂得多。

MPMediaItemPropertyAssetURL的文档也清楚地说明了这一点:

  

不支持在AV Foundation框架之外使用URL。