2015-06-16 21 views
7

Mam aplikację, w której używam AVAudioEngine do odtwarzania plików z lokalnego systemu plików przy użyciu AVAudioPlayerNodes i AVAudioFiles. Działa to doskonale.Dane strumieniowe z sieci w AVAudioEngine, czy to możliwe?

Teraz chciałbym, aby moja konfiguracja obsługiwała strumieniowanie plików MP3 z serwera w Internecie.

Co Próbowałem tak daleko

Mam nadzieję, że mogę tworzyć jakieś bufory z NSURL przedmiotów wskazujących na adresy sieciowe, które mogłyby I następnie używać z moim AVAudioPlayerNode.

Szukałem Stack Overflow i internet w ogóle, ale nie znalazłem żadnych dobrych wskazówek, jak to osiągnąć.

wiem, że AVAudioEngine skład wchodzą:

  • AVAudioPlayerNode, który może odtwarzać dźwięk z AVAudioFile lub AVAudioBuffer. Już teraz używam AVAudioFile do mojej "lokalnej konfiguracji plików".
  • AVAudioFile, który ma być używany do plików lokalnych. Za „AVAudioFile” tworzony jest z „bibliotece NSURL” tak próbowałem z adresu URL, który wskazuje na plik MP3 na serwerze tak jak na placu zabaw:

    var fileError: NSError? = nil 
    let file = AVAudioFile(forReading: someURL, error: &fileError) 
    if fileError != nil { 
        fileError 
    } 
    

który nagradza mnie z tego błędu :

Error Domain=com.apple.coreaudio.avfaudio Code=2003334207 "The operation couldn’t be completed. (com.apple.coreaudio.avfaudio error 2003334207.)" UserInfo=0x7fbfab424480 {failed call=ExtAudioFileOpenURL((CFURLRef)fileURL, &_extAudioFile)} 
  • AVAudioPCMBuffer, który jest klasą miałem nadzieję w użyciu, ale nie mogę znaleźć żadnego sposobu na instancję z danymi.

Moje pytanie (tak, aby było jasne :-))

Czy ktoś z was jasne ludzie tam wiedzą, jak korzystać AVAudioEngine do strumieniowego przesyłania plików MP3 z serwera w Internecie?

Czy powinienem po prostu zrezygnować i użyć do tego AVPlayer?

Czekamy na wiadomość od Ciebie.

+1

* "Czy powinienem po prostu zrezygnować i użyć AVPlayer do tego?" * Tak. –

+0

Dzięki @TomHarrington. Krótkie i na temat :-) – pbodsk

Odpowiedz

0

Dokumentacja firmy Apple nie określa, czy może działać z hostem w trybie online, ale jak tylko spróbuję zainicjować plik AVAudioFile z adresem URL pliku mp3, natychmiast ulegnie awarii z krytycznym wyjątkiem. Myślę, że to odpowiada na twoje pytanie.

+1

To prawda. Niezupełnie odpowiedź, na którą liczyłem, ale dziękuję za poświęcony czas i odpowiedź. – pbodsk