online - Transmisión en vivo de HTTP, FFMPEG y FFSERVER y iPhone OS 3
iphone xr (4)
En iPhone OS 3, Apple ha introducido HTTP Live Streaming que debería permitir la transmisión en vivo de video desde Internet. Actualmente estoy operando una cámara web, que se alimenta a mi servidor, y luego se convierte en una transmisión flv con ffmpeg, y luego se retransmite mediante ffserver. ¿Alguien sabe cómo configurar un flujo de video que el iPhone puede usar usando ffmpeg y ffserver? Debería poder volver a codificar en casi cualquier formato sobre la marcha.
¿Qué hay de malo en usar QuickTime para convertir películas al formato "iPhone"? Solo haces Archivo> Exportar> formato de iPhone ... ¿Me estoy perdiendo algo?
Después de convertir al formato de iPhone, lo comparto con mediafilesegmenter (que se encuentra en Apple Developer Connection, Http Live Streaming Tools ):
mediafilesegmenter -t 10 -f folderName/ nameOfInputFile.m4v
(Nota: la carpeta nombre / carpeta debe existir)
Luego apunta tu iPhone a un sitio web con
<video src=''folderName/prog_index.m3u8'' height=45 width=70
controls=''on''>Your browser does not support the video tag</video>
Deberá compilar una copia de ffmpeg con una versión> = e109a29d6ddb02b2dd58c6c385ebec27f2d23b58 (git) o 18793 (svn). Asegúrate de especificar también el indicador --enable-libx264 cuando estés construyendo. Una vez que lo hayas puesto en marcha, puedes hacer lo siguiente:
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/
es decir, traiga un archivo de entrada o flujo a ffmpeg y canalice un video H.264 con audio MP3 al segmentador de Apple. El segmentador escupe los archivos de video segmentados y las listas de reproducción M3U que apuntan a los archivos segmentados. Serviría los archivos segmentados y las listas de reproducción a través de un servidor web como Apache.
Obviamente, querrá modificar sustancialmente las opciones de ffmpeg y segmentador para obtener los resultados que está buscando.
Este es un tema bastante antiguo, pero el soporte de HLS, una característica aparentemente nueva de FFmpeg puede ser útil para alguien.
Un ejemplo de uso sería el siguiente:
ffmpeg -i <input_file> -c:v libx264 -preset slow -map 0 -an -flags -global_header -f hls -hls_time <segment_length> <m3u8_file>
Si desea hacer transmisión en vivo, este sería otro ejemplo:
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>
El argumento -hls_list_size
limita el número de archivos en la lista de reproducción, y el argumento -hls-wrap
limita el número total de archivos y ajustará los nombres de archivo una vez que llegue a ese punto (por ejemplo: test0.ts, test1.ts ... test7 .ts, test0.ts, test1.ts ... cuando el ajuste es 8).
Para más información, consulte la documentación . Tenga en cuenta que los ejemplos anteriores eliminan el audio con la marca -an
, ya que personalmente nunca lo necesité.
Para aquellos que estén interesados, he incluido un segmentador de código abierto con un script que le permitirá usar ffmpeg para hacer esto, vea mi transmisión segmentada en el proyecto de iPhone . Puede realizar segmentos de múltiples tasas de bits para los flujos de entrada y transferirá los segmentos de flujos a un destino configurable a través de scp, ftp e incluso hasta aws s3.