2009-07-07 7 views
19

In iPhone OS 3 hat Apple HTTP Live Streaming eingeführt, die Live-Streaming von Video aus dem Internet ermöglichen sollte. Ich betreibe derzeit eine Webcam, die in meinen Server einspeist, und wird dann von ffmpeg in einen FLV-Stream konvertiert und mit ffserver zurückgestreamt. Kann jemand einen Videostream einrichten, den das iPhone mit ffmpeg und ffserver benutzen kann? Ich sollte in der Lage sein, in fast jedes Format im laufenden Betrieb neu zu kodieren.HTTP Live Streaming, FFMPEG & FFSERVER und iPhone OS 3

Antwort

22

Sie müssen eine Kopie von ffmpeg mit einer Version> = e109a29d6ddb02b2dd58c6c385ebec27f2d23b58 (git) oder 18793 (svn) erstellen. Stellen Sie sicher, dass Sie beim Erstellen auch das --enable-libx264-Flag angeben. Sobald Sie das und laufen haben, können Sie in etwa Folgendes zu tun:

ffmpeg -i <input video> -acodec libmp3lame -ac 1 -vcodec libx264 -s 320x240 \ 
     -level 30 -f mpegts - | \ 
segmenter - 10 test test.m3u8 http://example.com/path/to/your/files/ 

d Bringen Sie eine Eingabedatei oder streamen in ffmpeg und Rohr mit einem H.264-Video mit MP3-Audio in Apples segmenter. Der Segmentierer spuckt segmentierte Videodateien und M3U-Wiedergabelisten aus, die auf die segmentierten Dateien zeigen. Sie würden die segmentierten Dateien und Wiedergabelisten über einen Webserver wie Apache bereitstellen.

Offensichtlich möchten Sie die ffmpeg und segmenter Optionen wesentlich optimieren, um die gewünschten Ergebnisse zu erhalten.

+0

Alle Windows-Server-Lösungen? – postalservice14

+0

Wer hat das eigentlich schon mit einem Livestream von einer DV Quelle? Ich habe versucht und bekomme immer Fehler vom Segmentierer ... –

+0

Ich habe festgestellt, dass die FFmpeg-Version SVN-r21627 mit dem Open-Source-Segmentierer http://code.google.com/p/httpsegmenter/ funktioniert. Hat jemand eine Vorstellung davon, was sich seit dieser Version geändert hat? –

12

Für diejenigen, die interessiert sind, habe ich einen Open-Source-Segmentierer mit einem Skript gebündelt, mit dem Sie ffmpeg dazu verwenden können, siehe mein segmented streaming on the iphone-Projekt. Es kann Multi-Bitrate-Segmente für die Eingabestreams erstellen und überträgt die Stream-Segmente über scp, ftp und sogar bis zu aws s3 an ein konfigurierbares Ziel.

0

Was ist falsch an der Verwendung von QuickTime zum Konvertieren von Filmen in das "iPhone" -Format? Sie tun einfach Datei> Exportieren> iPhone Format ... Fehle ich etwas?

mediafilesegmenter -t 10 -f folderName/ nameOfInputFile.m4v 

(Anmerkung: der Ordnername/Ordner muss vorhanden sein)

Zeigen Sie dann Ihr iPhone auf eine Website

Nach dem iPhone-Format zu konvertieren, ich habe es mit mediafilesegmenter (gefunden bei Apple Developer Connection, Http Live Streaming Tools) zerhacken mit

<video src='folderName/prog_index.m3u8' height=45 width=70 
     controls='on'>Your browser does not support the video tag</video> 
+3

Nicht jeder benutzt Mac, und die Apple Tools funktionieren nur auf Mac. – Haqa

+1

@yujean Ihr Link ist tot. – Brad

3

Dies ist ein ganz altes Thema, aber HLS-Unterstützung, eine scheinbar neue Funktion von FFmpeg könnte jemand nützlich sein.

Ein Beispiel wäre die Verwendung wie folgt:

ffmpeg -i <input_file> -c:v libx264 -preset slow -map 0 -an -flags -global_header -f hls -hls_time <segment_length> <m3u8_file> 

Wenn Sie Live-Streaming tun möchte, wäre dies ein weiteres Beispiel:

ffmpeg -i <input_stream> -c:v libx264 -preset ultrafast -map 0 -an -flags -global_header -f hls -hls_time <segment_length> -hls_list_size <playlist_entries> -hls_wrap <wrap> <m3u8_file> 

Das -hls_list_size Argument begrenzt die Anzahl der Dateien in Die Wiedergabeliste und das Argument -hls-wrap begrenzen die Anzahl der Dateien insgesamt und werden die Dateinamen umbrechen, sobald sie diesen Punkt erreicht haben (zB: test0.ts, test1.ts ... test7.ts, test0.ts, test1.ts ... wenn der Umschlag 8 ist).

Weitere Informationen finden Sie unter the documentation. Bitte beachten Sie, die obigen Beispiele streichen Audio mit der Flagge, wie ich persönlich nie gebraucht habe.

+0

perfekte Antwort ... funktioniert gut –

+0

Sieht gut aus, aber es scheint, dass das Ausgabeformat für HLS falsch ist; Ich bekomme "Missing Plugin", wenn ich die m3u8-Datei mit Safari anschaue? – Jonny