Воспроизведение песен из библиотеки iPod с помощью CocosDenshion - PullRequest
0 голосов
/ 01 января 2012

Я пытаюсь позволить пользователю выбрать песню из библиотеки 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 Ответ

1 голос
/ 01 января 2012

Посмотрите на URL, возвращенный [song valueForProperty:MPMediaItemPropertyAssetURL] в отладчике.Это не стандартный URL-адрес файловой системы, а собственный URL-адрес, указывающий на библиотеку ресурсов, поэтому неудивительно, что CocosDenshion не может открыть его.

Вам потребуется использовать AV Foundation (вероятно, AVAudioPlayer), чтобыиграть песнюИли используйте AV Foundation, чтобы сначала преобразовать песню в «настоящий» файл, а затем воспроизвести ее с Cocos Denshion, но это, вероятно, намного сложнее, чем первый вариант.

Документация для MPMediaItemPropertyAssetURL ясно говорит об этомтакже:

Использование URL-адреса вне платформы AV Foundation не поддерживается.

...