Skip to content

Transcodificación

El transcodificador de Sapsan (basado en FFmpeg) recodifica el stream de entrada: cambia códecs, bitrate y resolución, y prepara una escalera de calidades multibitrate (MBR) a partir de una sola fuente.

Configuración

La sección transcoder.output describe las pistas de salida. Cada pista toma una fuente (!content video o !content audio) y define un códec:

streams:
  - name: tv1
    inputs:
    - udp: {host: 239.0.0.1, port: 5000}
    transcoder:
      output:
      - source: !content video          # 1080p — la cima de la escalera
        codec: !set h264
        bitrate: 2800000
        params: !video
          gop_size: 28
          gop_structure: ibbbp
      - source: !content video          # 720p
        codec: !set h264
        bitrate: 1200000
        params: !video
          gop_size: 28
          gop_structure: ibbbp
          resize: !fit
            height: 720
      - source: !content audio
        codec: !set aac

Selección de la pista de origen

source Qué toma
!content video / !content audio una pista según el tipo de contenido
!exact v1 una pista concreta por identificador
!best_quality video la mejor calidad disponible
!language_codec [eng, aac] una pista por idioma y códec

El parámetro if_missing define el comportamiento cuando la pista no existe: drop (por defecto — la salida no se crea), blank (señal vacía) o substitute.

Códecs y parámetros

  • codec: !set <name> — recodificar (h264, hevc, av1, aac, opus); codec: same — pasar sin recodificar (por ejemplo, solo reempaquetar el audio).
  • Las salidas de códecs diferentes a partir de una misma fuente mantienen alineados los timestamps y los fotogramas clave — una escalera h264/hevc/av1 se mantiene coherente.
  • gop_size, gop_structure (ip, ibp, ibbp, ibbbp, ibbbbp) — control de la estructura del GOP, importante para los segmentos MBR alineados.
  • Audio: recodificación G.711 → AAC/Opus 48 kHz con conservación de la línea de tiempo — el caso típico de una cámara IP.
  • Las pistas JPEG de capturas pasan por el transcodificador intactas.

Cambio de tamaño

resize Qué hace
!scale escalado exacto a las dimensiones indicadas
!fit encajar conservando la proporción de aspecto (con relleno, color de fondo configurable)
!crop recortar a las dimensiones indicadas

Note

TODO: aceleración por hardware (Nvenc/Vulkan), desentrelazado, overlays/logotipos, referencia de parámetros de audio.

Comprobación

Abra el playlist maestro http://server/streaming/v/tv1/index.m3u8 — en él deben aparecer todas las calidades de salida.

Siguientes pasos