Как воспроизвести файл библиотеки iPod в AVPlayer

Как я могу получить музыкальный файл библиотеки ipod в AVAudioPlayer?

Ответ 1

В SDK нет предустановок для чтения файлов из библиотеки iPod (как вам нужно сделать, чтобы использовать с ним AVAudioPlayer), возможно, по причинам, связанным с пиратством. Для воспроизведения элементов библиотеки iPod используйте класс MPMusicPlayerController.

Изменить: это более неточно. См. ниже ответы, которые описывают использование класса AVPlayer.

Ответ 2

Как говорит Дэвид, есть больше работы, чем это, например, вам нужно управлять воспроизведением следующего трека в коллекции элементов мультимедиа, но вот один из способов сделать это с помощью набора элементов MPMediaItems, выбранных пользователем из iPod Picker. AssetURL - это то, что вы используете, оно дает вам путь к файлу MP3 (например, ipod-library://item/item.mp3? Id = -6889145242935454020)

NSURL *anUrl = [[mediaItems objectAtIndex: 0] valueForProperty:MPMediaItemPropertyAssetURL];
self.audioPlayerMusic = [[[AVPlayer alloc] initWithURL:anUrl] retain];                      
[self.audioPlayerMusic play];

Ответ 3

Да, вы можете воспроизводить песни из библиотеки iPod с помощью SDK, не прибегая к классу MPMusicPlayerController.

Более простой класс AVPlayer может обрабатывать аудиофайлы из библиотеки iPod, используя значение NSUrl из свойства песни MPMediaItemPropertyAssetURL. Вы должны сделать гораздо больше работы, чтобы все было правильно настроено, но это можно сделать.

Ответ 4

Есть ли возможность получить информацию о дБ-замерах в MPMusicPlayerController? Возможно, запуск AVAudioSession для записи параллельно будет выполнять работу? Мне нужны дБ-значения для создания своего рода объем-спектрографа.

Ответ 5

- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection {
    NSURL *url = [[mediaItemCollection.items objectAtIndex:0] valueForProperty:MPMediaItemPropertyAssetURL];

    NSError *error;
    self.player = [[AVAudioPlayer alloc] url error:&error];

    if (!error) {
        [self.player prepareToPlay];
        [self.player play];
    }

    [mediaPicker dismissModalViewControllerAnimated:YES];
}