In iPhone OS 3, Apple ha introdotto HTTP Live Streaming che dovrebbe consentire lo streaming live di video da Internet. Attualmente sto operando una webcam, che si alimenta nel mio server, e viene quindi convertita in un flusso flv da ffmpeg, e in streaming indietro usando ffserver. Qualcuno sa come configurare un flusso video che l'iPhone può usare usando ffmpeg e ffserver? Dovrei essere in grado di ricodificare in qualsiasi formato al volo.HTTP Live Streaming, FFMPEG e FFSERVER e iPhone OS 3
risposta
Avrai bisogno di costruire una copia di ffmpeg con una versione> = e109a29d6ddb02b2dd58c6c385ebec27f2d23b58 (Git) o 18793 (SVN). Assicurati di specificare anche il flag --enable-libx264 quando stai costruendo. Una volta che hai installato e funzionante che, si può fare più o meno il seguente:
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/
cioè Portare un file di flusso in entrata o in ffmpeg e tubo un video H.264 con audio MP3 in segmenter di Apple. Il segmentatore sputa file video segmentati e playlist M3U che puntano ai file segmentati. Serviresti i file segmentati e le playlist tramite un server web come Apache.
Ovviamente ti consigliamo di modificare sostanzialmente le opzioni ffmpeg e segmenter per ottenere i risultati che desideri.
Per chi è interessato, ho raggruppato un segmenter open source con uno script che consente di utilizzare ffmpeg per fare ciò, vedere il mio progetto segmented streaming on the iphone. Può eseguire segmenti multi-bitrate per i flussi di input e trasferire i segmenti del flusso in una destinazione configurabile tramite scp, ftp e anche fino a aws s3.
Cosa c'è di sbagliato nell'usare QuickTime per convertire i film in formato "iPhone"? Devi solo fare File> Esporta> formato iPhone ... Mi manca qualcosa?
Dopo la conversione in formato iPhone, ho tritarlo con mediafilesegmenter (che si trova a Apple Developer Connection, Http Live Streaming Tools):
mediafilesegmenter -t 10 -f folderName/ nameOfInputFile.m4v
(Nota: il nomeCartella/cartella deve esistere)
Poi puntare il vostro iPhone a un sito web con
<video src='folderName/prog_index.m3u8' height=45 width=70
controls='on'>Your browser does not support the video tag</video>
Questo è piuttosto un argomento vecchio, ma il supporto HLS, un apparentemente nuova caratteristica di FFmpeg potrebbe essere utile a qualcuno.
Un esempio di utilizzo potrebbe essere il seguente:
ffmpeg -i <input_file> -c:v libx264 -preset slow -map 0 -an -flags -global_header -f hls -hls_time <segment_length> <m3u8_file>
Se volete fare lo streaming dal vivo, questo sarebbe un altro esempio:
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>
L'argomento -hls_list_size
limita il numero di file in la playlist e l'argomento -hls-wrap
limita il numero di file totali e avvolgerà i nomi dei file una volta arrivati a quel punto (es: test0.ts, test1.ts ... test7.ts, test0.ts, test1.ts ... quando l'involucro è 8).
Per ulteriori informazioni, vedere the documentation. Si prega di notare che gli esempi sopra riportati escludono l'audio con il flag , poiché personalmente non ne avevo mai avuto bisogno.
risposta perfetta ... funziona bene –
Sembra bello, ma sembra che il formato di output non sia corretto per HLS; Ottengo "plugin mancante" quando guardo il file m3u8 con Safari? – Jonny
Qualsiasi soluzione per server Windows? – postalservice14
Chiunque ha ancora funzionato con un live streaming da una fonte dv? Ho cercato e continuo a ricevere errori dal segmenter ... –
Ho trovato che la versione FFmpeg SVN-r21627 funziona con il segmentatore open source http://code.google.com/p/httpsegmenter/ Qualcuno ha un'idea di cosa è cambiato da quella versione? –