0

我试图让用户从 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 库的原因。

4

1 回答 1

1

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

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

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

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

于 2012-01-01T08:34:58.113 回答