我想让用户从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库的原因。
答案 0 :(得分:1)
查看调试器中[song valueForProperty:MPMediaItemPropertyAssetURL]
返回的URL。它不是标准的文件系统URL,而是指向资产库的自定义URL,因此难怪CocosDenshion无法打开它。
您需要使用AV Foundation(可能是AVAudioPlayer
)来播放这首歌。或者使用AV Foundation首先将歌曲转换为“真实”文件,然后使用Cocos Denshion播放,但这可能比第一个选项复杂得多。
MPMediaItemPropertyAssetURL
的文档也清楚地说明了这一点:
不支持在AV Foundation框架之外使用URL。