2010-03-29 18 views
10

Ich versuche, einen progressiven Download Audio-Player für das iPhone zu implementieren, mit http und fester Größe mp3-Dateien.iPhone progressive Download Audio-Player

Ich fand das AudioStreamer-Projekt, aber es scheint sehr kompliziert und funktioniert am besten mit endlosen Streams.

Ich muss in der Lage, die Gesamtlänge von Audio-Dateien, um herauszufinden, und ich brauche auch in den Dateien suchen zu können. Ich fand eine gehackte Abweichung von AudioStreamer, aber es scheint nicht sehr gut für mich zu funktionieren. http://www.saygoodnight.com/?p=14

Ich frage mich, ob es eine einfachere Möglichkeit gibt, meine Ziele zu erreichen, oder ob es bessere Arbeitsproben gibt? Ich fand die Bass-Bibliothek, aber nicht viel Dokumentation darüber.

/Br Johannes

+0

Ich füge eine Prämie auf diese Frage, wie ich die gleiche Frage haben - mit der Hoffnung auf die Rettung der Inhalt als ich herunterladen/abspielen. – ajacian81

Antwort

8

Es gibt leider nichts einfach über Audio-Streams auf dem iPhone spielen. Hier ist der Artikel, der mich begann: Streaming and playing an MP3 stream

Es ist ein OSX-Projekt, aber die meisten davon wird auch mit dem iPhone arbeiten. Um die volle Spielzeit davon zu erhalten, müssen Sie das wahrscheinlich anhand der Eigenschaft content-length des http-Headers herausfinden, vorausgesetzt, es handelt sich um eine CBR-Datei. Ansonsten stelle ich mir vor, dass Sie die gesamte Datei herunterladen müssen, bevor Sie das feststellen.

+1

+1 für die Verknüpfung zu cocoaithloth, ich habe auch eine App, die ich nur mit dieser Ressource laufen könnte. –

4

Es ist ein wirklich gutes Kapitel über Audio-Streaming in iPhone Coole Projekten. http://apress.com/book/view/9781430223573 Es zeigt einen einfacheren Ansatz als AudioStreamer (Using NSURLConnection anstelle von CFNetwork), besser geeignet für progressives Herunterladen und kein Multi-Threading-Code.

Und für die Suche nach der Größe der Audiodatei aus Sie [response expectedContentLength] in

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
5

Wenn Sie nur MP3-Dateien müssen Sie das Schreiben eigenen Downloader/Player verwenden können, warum? Sie haben ein paar Optionen in iOS gebaut, von denen jeder progressiven Download und MP3-Wiedergabe unterstützen:

  • MPMoviePlayerController
  • AVPlayer
  • Safari <audio> Spieler

Ich persönlich habe Probleme mit dem progressive Download-Funktionen von MPMoviePlayerController und , so ist dies vielleicht auch Ihr Problem. Ich habe festgestellt, dass diese Spieler versuchen, smart zu sein, indem sie das mp3 mehrmals anfordern, um zu überprüfen, ob der Server progressiven Download über http-Bereich-Offsets unterstützt. Wenn der Server jedoch keine Bereichsoffsets unterstützt, wird die Datei mehrmals heruntergeladen, wobei Bandbreite (!) Verbraucht wird.

In meinem neuesten Projekt, das ich eine UIWebView eingebettet eingebettet, um einen HTML-Tag <audio> hat. Der Safari-Player scheint sich besser zu verhalten als AVPlayer und MPMoviePlayerController, hat aber auch seine eigenen Vorbehalte. Zum einen war es eine PITA, um automatisch zu spielen.

1

Ich weiß, das ist ein ziemlich alter Beitrag, aber wollte eine solide Bibliothek vorschlagen, die Open Source ist. Es basiert auf dem ursprünglichen Beitrag von Matt Galllagher, der oben von @pzearfoss empfohlen wurde. In der aktuellen Version werden jetzt AudioUnits anstelle der AudioQueue-Klassen verwendet, sodass Sie vor jeder Wiedergabe Zugriff auf die rohen PCM-Samples für alle Manipulationen haben, die Sie vornehmen möchten (Filterung usw.).Es gibt Ihnen auch progressive Download-Funktionen kostenlos, mit relativ geringem Aufwand. Die Bibliothek scheint aktiv aktualisiert zu werden, was ein großes Plus ist!

StreamingKit by @tumtumtum

Verwandte Themen