Воспроизведение песен из библиотеки iPod с помощью CocosDenshion
Я пытаюсь позволить пользователю выбрать песню из библиотеки 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 ответ
Посмотрите на URL, возвращенный [song valueForProperty:MPMediaItemPropertyAssetURL]
в отладчике. Это не стандартный URL-адрес файловой системы, а пользовательский URL-адрес, который указывает на библиотеку ресурсов, поэтому неудивительно, что CocosDenshion не может открыть его.
Вам нужно будет использовать AV Foundation (возможно, AVAudioPlayer
) играть песню. Или используйте AV Foundation, чтобы сначала преобразовать песню в "настоящий" файл, а затем воспроизвести ее с Cocos Denshion, но это, вероятно, намного сложнее, чем первый вариант.
Документация для MPMediaItemPropertyAssetURL
тоже ясно говорит:
Использование URL за пределами платформы AV Foundation не поддерживается.