Skip to content

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 fps en todas las calidades;
  • GOP rígido: -g = -keyint_min, -sc_threshold 0 y scenecut=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.

Qué sigue