Воспроизведение песен из библиотеки 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 не поддерживается.

Другие вопросы по тегам