Come riprodurre il file della libreria iPod in AVPlayer
-
21-09-2019 - |
Domanda
Come posso inserire un file musicale della libreria iPod in AVAudioPlayer?
Soluzione
L'SDK non prevede la lettura di file dalla libreria dell'iPod (come dovresti fare per utilizzare AVAudioPlayer
con esso), probabilmente per ragioni antipirateria.Per riprodurre gli elementi della libreria iPod, utilizzare il file MPMusicPlayerController
classe.
Modificare:Questo non è più accurato. Vedi le risposte seguenti che descrivono l'uso della classe AVPlayer.
Altri suggerimenti
Come David cita c'è più lavoro da fare di questo, per esempio, si deve gestire la riproduzione del brano successivo in una collezione di elementi multimediali, ma qui è un modo per farlo con una serie di MPMediaItems che un utente selezionato da l'iPod Picker. L'AssetURL è quello che si usa, ti dà un percorso del file MP3 (per esempio iPod-biblioteca:? //Item/item.mp3 id = -6889145242935454020)
NSURL *anUrl = [[mediaItems objectAtIndex: 0] valueForProperty:MPMediaItemPropertyAssetURL];
self.audioPlayerMusic = [[[AVPlayer alloc] initWithURL:anUrl] retain];
[self.audioPlayerMusic play];
Sì, è possibile riprodurre brani dalla libreria iPod utilizzando l'SDK senza ricorrere alla classe MPMusicPlayerController
.
La classe AVPlayer
più di base in grado di gestire i file audio dalla libreria iPod utilizzando il valore NSUrl
dalla proprietà MPMediaItemPropertyAssetURL
della canzone. Bisogna fare molto più lavoro per ottenere l'installazione tutto correttamente, ma si può fare.
C'è qualche possibilità per ottenere informazioni su dB-misurazione in MPMusicPlayerController
? Forse iniziare un AVAudioSession
per la registrazione in parallelo sarebbe fare il lavoro ?? Ho bisogno di db-valori per costruire una sorta di volume-spettrografo.
- (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];
}