Ich arbeite an einer Musik-VOD-App auf dem iPhone, und dank Apple-Richtlinien muss ich ein HTTP-Live-Streaming ausführen, um im AppStore akzeptiert zu werden. Aber da Apple 98% der Server auf der Erde nicht interessiert, bieten sie ihre magischen HTTP-Live-Streaming-Tools für Linux-basierte Systeme nicht an. Und von diesem Punkt an beginnt der Albtraum.HTTP-Live-Streaming: Der Linux-Albtraum
Mein Ziel ist einfach: Nimm eine MP3, segmentiere sie und erzeuge eine einfache .m3u8-Indexdatei. Ich googelte "HTTP Live Streaming Linux" und "Oh großartig! Viele Leute haben das schon gemacht"!
Zuerst besuchte ich the (so famous) post by Carson McDonald. Ergebnis: die svn segmentate.c war alt, fehlerhaft und ein Alptraum zu kompilieren (Niemand in dieser Welt kann präzisieren, welche Version von ffmpeg sie verwenden!). Dann stieß ich auf the Carson's git repo, aber schade, es gibt eine Menge nerviger Ruby Zeug und live_segmenter.c kann keine mp3-Dateien nehmen.
Dann suchte ich tiefer. Ich habe this stackoverflow topic gefunden, und genau das möchte ich tun. So habe ich den Rat von juuni zur Verwendung this script (httpsegmenter) befolgt. Ergebnis: Unmöglich, irgendetwas zu kompilieren, 2 Arbeitstage und schließlich habe ich es geschafft, es zu kompilieren (ffmpeg 8.1 w/httseggenter rev17). Und nein, das ist kein gutes Skript, es nimmt MP3-Dateien, aber die erzeugten ts-Dateien und die Indexdatei können nicht von einem Player gelesen werden.
Dann kam der Autor des Post Krisbulman, mit einer Lösung, und gab sogar eine gepatchte Version von m3u8-Segmenter von seinem eigenen (git repo). Ich teste es: kompiliert nicht, tut nichts. Also nahm ich die Originalversion von Johnf https://github.com/johnf/m3u8-segmenter. Ich habe es geschafft zu kompilieren und es funktioniert (nicht wirklich). ich diese Befehlszeile (ffmpeg 0.8.1):
ffmpeg -er 4 -i music.mp3 -f mpegts -acodec libmp3lame -ar 44100 -ab 128k -vn - | m3u8-segmenter -i - -d 10 -p outputdir/prefix -m outputdir/output.m3u8 -u http://test.com/
Dieses Skript meine mp3-Datei kodieren (es dauert 4 Sekunden zu lang), und an den m3u8-Segmentierer zum Segment übergeben Sie es in 10 Sekunden .TS-Dateien.
Ich testete diesen Stream mit Apples mediastreamvalidator auf meinem Mac, und es sagte, dass es in Ordnung war. Also habe ich es in Quicktime gespielt, aber zwischen jeder .TS-Datei sind ca. 0,2 Sekunden leer !!
Also hier ist meine Situation, es ist ein Albtraum, ich kann nicht einen einfachen mp3-Stream über das HLS-Protokoll bekommen. Gibt es eine einfache WORKING-Lösung, um ein MP3 zu segmentieren? Warum kann ich die mp3-Datei nicht direkt in mehrere mp3-Dateien segmentieren, wie das Mediafilesegment von Apple?
Ihr Englisch ist gut, aber Ihr Beitrag ist lang und inkohärent. Könnten Sie es verdichten und es sich auf die Schlüsselfrage konzentrieren? –
Die Hauptfrage ist: Gibt es eine einfache Arbeitslösung, um eine MP3-Datei auf Debian zu segmentieren? – Ethan0026
Nun, das erklärt, dass outrrrrageous acccceent. –