FILE¶
media.ingest.file
Descripción¶
La entrada file convierte un archivo MP4 o Matroska local en un stream en vivo pleno: el archivo se reproduce en bucle. Es una herramienta de producción para canales de cortinilla: un canal técnico de «volvemos enseguida», un canal de promoción y un respaldo para cuando caen las fuentes.
Configuración¶
Configure el stream mediante la API de central. Fragmento de configuración:
streams:
- name: promo
inputs:
- file:
path: /storage/promo.mp4
dvr: {}
Parámetros¶
| Parámetro | Descripción |
|---|---|
path |
ruta del archivo MP4 o Matroska en el streamer. El proceso Sapsan debe poder leerlo. |
Opciones de transporte¶
Sistema de archivos local, contenedor MP4 o Matroska. La reproducción es cíclica; no requiere conexión de red.
Códecs admitidos¶
- H.264
- HEVC / H.265
- AV1
- JPEG (MP4)
- AAC
- AC-3
- E-AC-3
- MPEG Audio (MP4: Layer II / III; Matroska: MP3)
- Opus
MP4 y Matroska son contenedores. El lector Matroska procesa los archivos .mkv y .webm; las demás rutas usan el lector MP4. Matroska admite vídeo H.264, HEVC y AV1; JPEG corresponde a MP4. En MP4, AV1 requiere av01/av1C, Opus requiere Opus/dOps y MPEG Audio se identifica mediante esds o una sample entry MP3. La sample entry mp4a por sí sola no significa AAC. Leer frames comprimidos del archivo no los transcodifica automáticamente.
Comportamiento ante errores¶
El estado de la entrada y la causa del fallo están en las estadísticas del stream. Ante desconexión o ausencia de fotogramas se aplican los mecanismos de reintento y conmutación a reserva.
Aplicación de cambios¶
Aplique los cambios mediante la API de central. Cambiar la dirección o el formato vuelve a abrir la captura y puede interrumpirla durante la conexión. Compruebe después el estado y la llegada de fotogramas.
Contadores¶
Las tablas indican los nombres exactos de los campos de estadísticas del protocolo, incluidos contadores de eventos e indicadores del valor actual. Los campos nulos pueden omitirse. API y Prometheus exponen proyecciones distintas; un único resultado de Admin API no incluye necesariamente toda la lista. El detalle depende de la licencia de contadores.
Totales comunes de entrada: bytes, frames, errors, warnings. Agregan datos del protocolo; no deben sumarse otra vez a los contadores del protocolo.
FilePlay¶
| Campo | Tipo |
|---|---|
bytes |
counter |
frames |
counter |
memory_bytes |
gauge |
Otros detalles¶
Cómo preparar el archivo con ffmpeg¶
Para que un archivo MBR se reproduzca sin costuras, todas las calidades deben estar perfectamente alineadas: timestamps idénticos y keyframes en los mismos sitios. Se logra con una sola pasada de ffmpeg con el filtro split:
ffmpeg -y -i source.mkv \
-filter_complex "\
[0:v:0]split=3[vhi][vme][vlo]; \
[vhi]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,setpts=PTS-STARTPTS[v1]; \
[vme]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,setpts=PTS-STARTPTS[v2]; \
[vlo]scale=960:540:force_original_aspect_ratio=decrease,pad=960:540:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,setpts=PTS-STARTPTS[v3]" \
-map "[v1]" -c:v:0 libx264 -b:v:0 6000k -g:v:0 100 -keyint_min:v:0 100 \
-sc_threshold:v:0 0 -x264-params:v:0 "scenecut=0:open_gop=0" \
-map "[v2]" -c:v:1 libx264 -b:v:1 3000k -g:v:1 100 -keyint_min:v:1 100 \
-sc_threshold:v:1 0 -x264-params:v:1 "scenecut=0:open_gop=0" \
-map "[v3]" -c:v:2 libx264 -b:v:2 1200k -g:v:2 100 -keyint_min:v:2 100 \
-sc_threshold:v:2 0 -x264-params:v:2 "scenecut=0:open_gop=0" \
-map 0:a:0 -c:a:0 aac -b:a:0 192k -ac 2 -ar 48000 \
-metadata:s:v:0 title="1080p" -metadata:s:v:1 title="720p" -metadata:s:v:2 title="540p" \
-metadata:s:a:0 language=eng \
-movflags +faststart \
promo.mp4
Lo que aquí importa:
- una sola pasada, una sola fuente,
split— todas las calidades obtienen timestamps idénticos; setpts=PTS-STARTPTS— la línea de tiempo de cada calidad empieza en cero;- el mismo
fpsen todas las calidades; - GOP rígido:
-g=-keyint_min,-sc_threshold 0yscenecut=0:open_gop=0— keyframes estrictamente cada N fotogramas y en los mismos sitios; el codificador no puede insertarlos en los cambios de escena; - audio AAC a 48 kHz estéreo;
-movflags +faststart— el índice al principio del archivo;-metadata:s:v title=.../language=...— las etiquetas de calidad y los idiomas de las pistas acaban en las playlists.
Un ejemplo completo y funcional con varias pistas de audio está en el repositorio de sapsan: storage/king.sh.
Comprobación¶
Abra http://server/streaming/v/promo/index.m3u8 — en la playlist master deben estar todas las calidades, y la conmutación entre ellas no debe dar tirones.