2009-12-23 11 views
11

Jak mogę uzyskać plik muzyczny biblioteki ipod w odtwarzaczu AVAudioPlayer?Jak odtwarzać plik biblioteki iPoda w odtwarzaczu AVPlayer

+0

polecam patrząc na http : //superuser.com/ również możesz podać więcej szczegółów. Jakiego programu używasz dokładnie i czy zrobiłeś do tej pory jakieś badania? – Guvante

+9

AVAudioPlayer to klasa używana do ... no ... odtwarzania dźwięku na iPhonie. Wiesz, kiedy programujesz dla niego. Pytanie z pewnością dotyczy programowania. – aehiilrs

Odpowiedz

3

Zestaw SDK nie ma możliwości odczytu plików z biblioteki iPoda (ponieważ konieczne jest użycie z nim AVAudioPlayer), prawdopodobnie z powodów antypirackich. Aby odtwarzać elementy biblioteki iPoda, użyj klasy MPMusicPlayerController.

Edytuj: To nie jest dłużej dokładne. Zobacz poniżej odpowiedzi opisujące korzystanie z klasy AVPlayer.

+2

To nie jest prawda, zobacz inne odpowiedzi, które dokumentują, jak uzyskać dostęp do biblioteki iPoda do użycia z AVAudioPlayer. –

+0

To mogło być prawdą w grudniu 2009, ale jest to możliwe teraz, jak wyjaśnia Steve Tranby w swojej odpowiedzi. – prendio2

0

Czy istnieje możliwość uzyskania informacji o dB-metering w MPMusicPlayerController? Być może zainicjowanie nagrywania równoległego w trybie AVAudioSession wykonałoby zadanie? Potrzebuję wartości dB do zbudowania jakiegoś spektrografu objętościowego.

+1

2-letnie pytanie, ale dodam odpowiedź dla każdego, kto tutaj ląduje. Aby uzyskać poziom dB z audio, użyj AudioStreamBasicDescription Core-Audio (https://developer.apple.com/library/mac/documentation/musicaudio/reference/CoreAudioDataTypesRef/Reference/reference.html#//apple_ref/doc/uid/TP40004488-CH3-SW2) z danymi audio w postaci strumienia. Używam adresu URL z biblioteki ipod dla zasobu i używam danych pod adresem URL z core-audio. – jarryd

+0

Czy możesz rozwinąć tę odpowiedź nieco bardziej? –

+1

@ Helium3: Czy Twoje rozwiązanie działa również z plikami chronionymi przez IOS10 i DRM? –

5

Tak, można odtwarzać utwory z biblioteki iPodów przy użyciu zestawu SDK bez odwoływania się do klasy MPMusicPlayerController.

Im bardziej podstawowy AVPlayer klasa może obsługiwać pliki audio z biblioteki iPoda przy użyciu wartości NSUrl od utworu MPMediaItemPropertyAssetURL nieruchomości. Musisz wykonać znacznie więcej pracy, aby wszystko poprawnie skonfigurować, ale można to zrobić.

+0

Nie wiem jak, ale za pomocą AVAplat = yer to nie jest workng. –

20

Jak wspomina David, jest więcej pracy do wykonania niż to, na przykład, musisz zarządzać odtwarzaniem następnego utworu w zbiorze elementów multimedialnych, ale tutaj jest jeden sposób na zrobienie tego za pomocą zestawu MPMediaItems wybranych przez użytkownika z iPoda. AssetURL jest to, czego używasz, to daje ścieżkę do pliku MP3 (np ipod-biblioteka: //item/item.mp3 id = -6889145242935454020)

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

Soory, nie może odtwarzać dźwięku, z AVPlayer. Pomoc jest potrzebna. –

+1

To ** nie działa ** w przypadku ** utworów chronionych DRM ** (takich jak te z subskrypcji _Apple Music_) lub tych, które nie są dostępne ** offline **, ale w chmurze. Jeśli jesteś zainteresowany sprawdzeniem, czy muzyka jest chroniona DRM lub w odtwarzaniu muzyki chronionej DRM we właściwy sposób, przeczytaj moją szczegółową odpowiedź tutaj: https://stackoverflow.com/a/47694472/4331787 –

+0

Dzięki za odpowiedź. Tutaj wyjaśniłeś, jak wykrywać ścieżkę drm. Proszę, powiedz mi, jak to grać. Używam AVPlayera, ale nie gra. Mogłem grać używając MPMusicPlayer, ale moim wymaganiem jest to, że potrzebowałem grać używając AVFoundation. –

0
- (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]; 
} 
Powiązane problemy