⚠️ Este es un sitio de traducción no oficial, sin relación con el proyecto FFmpeg. Para información autorizada, consulte la página original (https://ffmpeg.org/ffmpeg-formats.html).

Documentación de formatos de FFmpeg

1 Descripción

Este documento describe los formatos admitidos (muxers y demuxers) que proporciona la biblioteca libavformat.

2 Opciones de formato

La biblioteca libavformat ofrece algunas opciones globales genéricas, que pueden establecerse en todos los muxers y demuxers. Además, cada muxer o demuxer puede admitir las llamadas opciones privadas, específicas de ese componente.

Las opciones pueden establecerse indicando -option value en las herramientas de FFmpeg, o definiendo el valor explícitamente en las opciones de AVFormatContext, o bien mediante la API de libavutil/opt.h para uso programático.

A continuación, la lista de opciones admitidas:

avioflags flags (input/output)

Valores posibles:

‘direct’

Reduce el uso de búfer.

probesize integer (input)

Establece el tamaño de sondeo en bytes, es decir, la cantidad de datos que se analiza para obtener información de los flujos. Un valor más alto permite detectar más información cuando esta se encuentra dispersa a lo largo del flujo, pero aumenta la latencia. Debe ser un entero no menor que 32. El valor predeterminado es 5000000.

max_probe_packets integer (input)

Establece el número máximo de paquetes almacenados en búfer al sondear un codec. El valor predeterminado es 2500 paquetes.

packetsize integer (output)

Establece el tamaño de paquete.

fflags flags

Establece los flags de formato. Algunos solo están implementados para un número limitado de formatos.

Valores posibles para archivos de entrada:

‘discardcorrupt’

Descarta los paquetes corruptos.

‘fastseek’

Habilita búsquedas rápidas pero inexactas para algunos formatos.

‘genpts’

Genera PTS ausentes si hay DTS presente.

‘igndts’

Ignora el DTS si también está establecido el PTS. En caso de que el PTS esté establecido, el valor de DTS se fija en NOPTS. Esto se ignora cuando está activado el flag nofillin.

‘ignidx’

Ignora el índice.

‘nobuffer’

Reduce la latencia introducida por el almacenamiento en búfer durante el análisis inicial de los flujos de entrada.

‘nofillin’

No rellena los valores ausentes en los campos de paquete que pueden calcularse con exactitud.

‘noparse’

Desactiva los AVParsers; esto requiere también +nofillin.

‘sortdts’

Intenta intercalar los paquetes de salida por DTS. Por el momento, solo disponible para AVI con índice.

Valores posibles para archivos de salida:

‘autobsf’

Aplica automáticamente los filtros de bitstream que requiera el formato de salida. Habilitado de forma predeterminada.

‘bitexact’

Escribe únicamente datos independientes de la plataforma, la compilación y el tiempo. Esto garantiza que las sumas de comprobación de archivos y datos sean reproducibles y coincidan entre plataformas. Su uso principal es para pruebas de regresión.

‘flush_packets’

Escribe los paquetes de inmediato.

‘shortest’

Detiene el muxing al final del flujo más corto. Puede ser necesario aumentar max_interleave_delta para evitar vaciar los flujos más largos antes del EOF.

seek2any integer (input)

Permite buscar en fotogramas que no son keyframes a nivel de demuxer, cuando el formato lo admite, si se fija en 1. El valor predeterminado es 0.

analyzeduration integer (input)

Especifica cuántos microsegundos se analizan para sondear la entrada. Un valor más alto permite detectar información más precisa, pero aumenta la latencia. El valor predeterminado es 5.000.000 microsegundos = 5 segundos.

cryptokey hexadecimal string (input)

Establece la clave de descifrado.

indexmem integer (input)

Establece la memoria máxima usada para el índice de marcas de tiempo (por flujo).

rtbufsize integer (input)

Establece la memoria máxima usada para el almacenamiento en búfer de fotogramas en tiempo real.

fdebug flags (input/output)

Imprime información de depuración específica.

Valores posibles:

‘ts’

Imprime información de marcas de tiempo.

‘id3v2’

Imprime los datos del frame ID3v2 al hacer demuxing de archivos que contienen etiquetas ID3v2.

max_delay integer (input/output)

Establece el retardo máximo de muxing o demuxing en microsegundos.

fpsprobesize integer (input)

Establece el número de fotogramas usados para sondear los fps.

audio_preload integer (output)

Establece los microsegundos con los que los paquetes de audio deben intercalarse antes.

chunk_duration integer (output)

Establece los microsegundos de cada fragmento.

chunk_size integer (output)

Establece el tamaño en bytes de cada fragmento.

err_detect, f_err_detect flags (input)

Establece los flags de detección de errores. f_err_detect está obsoleto y solo debería usarse a través de la herramienta ffmpeg.

Valores posibles:

‘crccheck’

Verifica los CRC incrustados.

‘bitstream’

Detecta desviaciones respecto a la especificación del bitstream.

‘buffer’

Detecta una longitud de bitstream incorrecta.

‘explode’

Aborta la decodificación al detectar un error menor.

‘careful’

Considera como errores las cosas que infringen la especificación y que no se han observado en la práctica.

‘compliant’

Considera errores todos los incumplimientos de la especificación.

‘aggressive’

Considera un error las cosas que un encoder sensato no debería hacer.

max_interleave_delta integer (output)

Establece la duración máxima de almacenamiento en búfer para el intercalado. La duración se expresa en microsegundos y su valor predeterminado es 10000000 (10 segundos).

Para garantizar que todos los flujos se intercalen correctamente, libavformat esperará a tener al menos un paquete de cada flujo antes de escribir realmente ningún paquete en el archivo de salida. Cuando algunos flujos son "dispersos" (es decir, hay grandes huecos entre paquetes sucesivos), esto puede provocar un almacenamiento en búfer excesivo.

Este campo especifica la diferencia máxima entre las marcas de tiempo del primer y el último paquete en la cola de muxing, por encima de la cual libavformat generará un paquete independientemente de si tiene o no un paquete en cola para todos los flujos.

Si se fija en 0, libavformat seguirá almacenando paquetes en búfer hasta tener un paquete de cada flujo, sin importar la diferencia máxima de marcas de tiempo entre los paquetes en búfer.

use_wallclock_as_timestamps integer (input)

Usa el reloj de pared como marcas de tiempo si se fija en 1. El valor predeterminado es 0.

avoid_negative_ts integer (output)

Valores posibles:

‘make_non_negative’

Desplaza las marcas de tiempo para que no sean negativas. Tenga en cuenta que esto solo afecta a las marcas de tiempo negativas iniciales, no a las marcas de tiempo negativas no monótonas.

‘make_zero’

Desplaza las marcas de tiempo de modo que la primera sea 0.

‘auto (default)’

Habilita el desplazamiento cuando lo requiere el formato de destino.

‘disabled’

Desactiva el desplazamiento de marcas de tiempo.

Cuando el desplazamiento está habilitado, todas las marcas de tiempo de salida se desplazan en la misma cantidad. Se conservan la desincronización entre audio, vídeo y subtítulos, así como las diferencias relativas de marcas de tiempo, tal como habrían sido sin el desplazamiento.

skip_initial_bytes integer (input)

Establece el número de bytes que se omiten antes de leer la cabecera y los fotogramas si se fija en 1. El valor predeterminado es 0.

correct_ts_overflow integer (input)

Corrige los desbordamientos de marca de tiempo simples si se fija en 1. El valor predeterminado es 1.

flush_packets integer (output)

Vacía el flujo de E/S subyacente después de cada paquete. El valor predeterminado es -1 (auto), lo que significa que el protocolo subyacente decidirá; 1 lo habilita, con el efecto de reducir la latencia, y 0 lo deshabilita, lo que puede aumentar el rendimiento de E/S en algunos casos.

output_ts_offset offset (output)

Establece el desplazamiento de tiempo de salida.

offset debe ser una especificación de duración temporal; consulte (ffmpeg-utils) la sección Time duration del manual ffmpeg-utils(1).

El muxer añade este desplazamiento a las marcas de tiempo de salida.

Especificar un desplazamiento positivo significa que los flujos correspondientes se retrasan la duración indicada en offset. El valor predeterminado es 0 (es decir, no se aplica ningún desplazamiento).

format_whitelist list (input)

Lista de demuxers permitidos separados por ",". De forma predeterminada, todos están permitidos.

dump_separator string (input)

Separador usado para separar los campos que se imprimen en la línea de comandos sobre los parámetros del flujo. Por ejemplo, para separar los campos con saltos de línea y sangría:

ffprobe -dump_separator "
                          "  -i ~/videos/matrixbench_mpeg2.mpg

max_streams integer (input)

Especifica el número máximo de flujos. Puede usarse para rechazar archivos que requerirían demasiados recursos debido a un número elevado de flujos.

skip_estimate_duration_from_pts bool (input)

Omite la estimación de la duración de entrada si requiere un sondeo adicional del PTS al final del archivo. Por el momento, aplicable a MPEG-PS y MPEG-TS.

duration_probesize integer (input)

Establece el tamaño de sondeo, en bytes, para la estimación de la duración de entrada cuando realmente requiere un sondeo adicional del PTS al final del archivo (por el momento: MPEG-PS y MPEG-TS). Está pensado para usuarios interesados en un mejor sondeo de duraciones por sí mismos, o indirectamente por usar, por ejemplo, el demuxer concat. El caso de uso típico es un MPEG-TS CBR con una tasa de bits alta, un búfer de vídeo grande y un final limpio con PTS similares para vídeo y audio: en tal escenario, la gran distancia física entre el último paquete de vídeo y el último paquete de audio hace necesario leer muchos bytes para obtener la duración del flujo de vídeo. Otro caso de uso es aquel en el que el comportamiento de sondeo predeterminado solo alcanza un único fotograma de vídeo que no es el último del flujo debido a la reordenación de fotogramas, por lo que la duración no es precisa. Establecer esta opción tiene impacto en el rendimiento incluso para archivos pequeños, porque el tamaño de sondeo es fijo. El comportamiento predeterminado es una solución de compromiso de propósito general, en gran medida adaptativa, pero el tamaño de sondeo no se ampliará para obtener las duraciones de los flujos a toda costa. Debe ser un entero no menor que 1, o 0 para el comportamiento predeterminado.

strict, f_strict integer (input/output)

Especifica con qué rigor se siguen los estándares. f_strict está obsoleto y solo debería usarse a través de la herramienta ffmpeg.

Valores posibles:

‘very’

Se ajusta estrictamente a una versión anterior, más estricta, de la especificación o del software de referencia.

‘strict’

Se ajusta estrictamente a todo lo indicado en la especificación, sin importar las consecuencias.

‘normal’ ‘unofficial’

Permite extensiones no oficiales.

‘experimental’

Permite elementos experimentales no estandarizados, así como decoders y encoders experimentales (inacabados, en desarrollo o no bien probados). Nota: los decoders experimentales pueden suponer un riesgo de seguridad; no los use para decodificar entradas no confiables.

2.1 Especificadores de flujo de formato

Los especificadores de flujo de formato permiten seleccionar uno o más flujos que coincidan con propiedades concretas.

La semántica exacta de los especificadores de flujo se define en la función avformat_match_stream_specifier() declarada en la cabecera libavformat/avformat.h y documentada en la (ffmpeg) sección Stream specifiers del manual ffmpeg(1).

3 Demuxers

Los demuxers son elementos configurados dentro de FFmpeg que pueden leer los flujos multimedia de un tipo de archivo determinado.

Al configurar su compilación de FFmpeg, todos los demuxers admitidos se habilitan de forma predeterminada. Puede listar todos los disponibles con la opción de configure --list-demuxers.

Puede deshabilitar todos los demuxers con la opción de configure --disable-demuxers, y habilitar selectivamente un demuxer concreto con la opción --enable-demuxer=DEMUXER, o deshabilitarlo con la opción --disable-demuxer=DEMUXER.

La opción -demuxers de las herramientas ff* mostrará la lista de demuxers habilitados. Use -formats para ver una lista combinada de demuxers y muxers habilitados.

A continuación, la descripción de algunos de los demuxers disponibles actualmente.

3.1 aa

Demuxer de Audible Format 2, 3 y 4.

Este demuxer se usa para hacer demuxing de archivos Audible Format 2, 3 y 4 (.aa).

3.2 aac

Demuxer de Raw Audio Data Transport Stream AAC.

Este demuxer se usa para hacer demuxing de una entrada ADTS que contiene un único flujo AAC junto con las etiquetas ID3v1/2 o APE que pueda incluir.

3.3 apng

Demuxer de Animated Portable Network Graphics.

Este demuxer se usa para hacer demuxing de archivos APNG. Todas las cabeceras, salvo la firma PNG, hasta el primer fragmento fcTL (sin incluirlo), se transmiten como extradata. Los fotogramas se dividen entonces como todos los fragmentos entre dos fcTL, o entre el último fcTL y el fragmento IEND.

-ignore_loop bool

Ignora la variable de bucle del archivo si está establecida. Habilitado de forma predeterminada.

-max_fps int

Velocidad de fotogramas máxima en fotogramas por segundo. El valor predeterminado 0 no impone ningún límite.

-default_fps int

Velocidad de fotogramas predeterminada, en fotogramas por segundo, cuando no se especifica ninguna en el archivo (0 significa lo más rápido posible). El valor predeterminado es 15.

3.4 asf

Demuxer de Advanced Systems Format.

Este demuxer se usa para hacer demuxing de archivos ASF y flujos de red MMS.

-no_resync_search bool

No intenta resincronizarse buscando un determinado código de inicio opcional.

3.5 concat

Demuxer de script de concatenación virtual.

Este demuxer lee una lista de archivos y otras directivas de un archivo de texto y hace demuxing de ellos uno tras otro, como si todos sus paquetes se hubieran muxado juntos.

Las marcas de tiempo de los archivos se ajustan de modo que el primer archivo empiece en 0 y cada archivo siguiente empiece donde termina el anterior. Tenga en cuenta que esto se hace de forma global y puede producir huecos si no todos los flujos tienen exactamente la misma duración.

Todos los archivos deben tener los mismos flujos (mismos codecs, misma base de tiempo, etc.).

La duración de cada archivo se usa para ajustar las marcas de tiempo del archivo siguiente: si la duración es incorrecta (por ejemplo, porque se calculó a partir de la tasa de bits o porque el archivo está truncado), puede producir artefactos. La directiva duration puede usarse para anular la duración almacenada en cada archivo.

3.5.1 Sintaxis

El script es un archivo de texto en ASCII extendido, con una directiva por línea. Las líneas vacías, los espacios iniciales y las líneas que empiezan por ’#’ se ignoran. Se reconoce la siguiente directiva:

file path

Ruta a un archivo que leer; los caracteres especiales y los espacios deben escaparse con barra invertida o comillas simples.

Todas las directivas relacionadas con archivos que sigan se aplican a ese archivo.

ffconcat version 1.0

Identifica el tipo y la versión del script.

Para que FFmpeg reconozca el formato automáticamente, esta directiva debe aparecer exactamente así (sin espacio adicional ni marca de orden de bytes) en la primera línea del script.

duration dur

Duración del archivo. Esta información puede especificarse a partir del archivo; indicarla aquí puede ser más eficiente o ayudar si la información del archivo no está disponible o no es exacta.

Si se establece la duración para todos los archivos, entonces es posible buscar en todo el vídeo concatenado.

inpoint timestamp

Punto de entrada del archivo. Cuando el demuxer abre el archivo, salta instantáneamente a la marca de tiempo especificada. La búsqueda se realiza de modo que todos los flujos puedan presentarse correctamente en el punto de entrada.

Esta directiva funciona mejor con codecs de fotograma intra, porque con los que no lo son normalmente se obtendrán paquetes adicionales antes del punto de entrada real y el contenido decodificado probablemente también contendrá fotogramas anteriores a dicho punto.

Para cada archivo, los paquetes anteriores al punto de entrada del archivo tendrán marcas de tiempo menores que la marca de tiempo de inicio calculada del archivo (negativa en el caso del primer archivo), y la duración de los archivos (si no la especifica la directiva duration) se reducirá en función de su punto de entrada especificado.

Debido a los posibles paquetes anteriores al punto de entrada especificado, las marcas de tiempo de los paquetes pueden solaparse entre dos archivos concatenados.

outpoint timestamp

Punto de salida del archivo. Cuando el demuxer alcanza la marca de tiempo de decodificación especificada en cualquiera de los flujos, lo trata como una condición de fin de archivo y omite el paquete actual y todos los restantes de todos los flujos.

El punto de salida es exclusivo, lo que significa que el demuxer no generará paquetes con una marca de tiempo de decodificación mayor o igual que el punto de salida.

Esta directiva funciona mejor con codecs de fotograma intra y formatos en los que todos los flujos están estrechamente intercalados. Con codecs que no son de fotograma intra normalmente se obtendrán paquetes adicionales con marca de tiempo de presentación posterior al punto de salida, por lo que el contenido decodificado probablemente también contendrá fotogramas posteriores a dicho punto. Si sus flujos no están estrechamente intercalados, es posible que no obtenga todos los paquetes de todos los flujos antes del punto de salida y que solo pueda decodificar el flujo más temprano hasta el punto de salida.

La duración de los archivos (si no la especifica la directiva duration) se reducirá en función de su punto de salida especificado.

file_packet_metadata key=value

Metadatos de los paquetes del archivo. Los metadatos especificados se establecerán para cada paquete del archivo. Puede especificar esta directiva varias veces para añadir varias entradas de metadatos. Esta directiva está obsoleta; use file_packet_meta en su lugar.

file_packet_meta key value

Metadatos de los paquetes del archivo. Los metadatos especificados se establecerán para cada paquete del archivo. Puede especificar esta directiva varias veces para añadir varias entradas de metadatos.

option key value

Opción para acceder, abrir y sondear el archivo. Puede estar presente varias veces.

stream

Introduce un flujo en el archivo virtual. Todas las directivas relacionadas con flujos que sigan se aplican al último flujo introducido. Algunas propiedades de los flujos deben establecerse para poder identificar los flujos coincidentes en los subarchivos. Si no se define ningún flujo en el script, se copian los flujos del primer archivo.

exact_stream_id id

Establece el id del flujo. Si se indica esta directiva, se usará la cadena con el id correspondiente en los subarchivos. Esto es especialmente útil para archivos MPEG-PS (VOB), donde el orden de los flujos no es fiable.

stream_meta key value

Metadatos del flujo. Puede estar presente varias veces.

stream_codec value

Codec del flujo.

stream_extradata hex_string

Extradata del flujo, codificada en hexadecimal.

chapter id start end

Añade un capítulo. id es un identificador único, posiblemente breve y consecutivo.

3.5.2 Opciones

Este demuxer acepta la siguiente opción:

safe

Si se fija en 1, rechaza rutas de archivo y directivas no seguras. Se considera que una ruta de archivo es segura si no contiene una especificación de protocolo, es relativa, y todos sus componentes contienen únicamente caracteres del conjunto de caracteres portable (letras, dígitos, punto, guion bajo y guion) y no empiezan por un punto.

Si se fija en 0, se acepta cualquier nombre de archivo.

El valor predeterminado es 1.

auto_convert

Si se fija en 1, intenta realizar conversiones automáticas en los datos de los paquetes para que los flujos puedan concatenarse. El valor predeterminado es 1.

Actualmente, la única conversión es añadir el filtro de bitstream h264_mp4toannexb a los flujos H.264 en formato MP4. Esto es necesario en particular si hay cambios de resolución.

segment_time_metadata

Si se fija en 1, cada paquete contendrá los valores de metadatos lavf.concat.start_time y lavf.concat.duration, que son el instante de inicio y la duración de los respectivos segmentos de archivo en la salida concatenada, expresados en microsegundos. Los metadatos de duración solo se establecen si se conocen a partir del archivo concat. El valor predeterminado es 0.

3.5.3 Ejemplos

  • Usar nombres de archivo absolutos e incluir algunos comentarios:

    # my first filename
    file /mnt/share/file-1.wav
    # my second filename including whitespace
    file '/mnt/share/file 2.wav'
    # my third filename including whitespace plus single quote
    file '/mnt/share/file 3'\''.wav'
    
  • Permitir la autodetección del formato de entrada, usar nombres de archivo seguros y establecer la duración del primer archivo:

    ffconcat version 1.0
    
    file file-1.wav
    duration 20.0
    
    file subdir/file-2.wav
    

3.6 dash

Demuxer de Dynamic Adaptive Streaming over HTTP.

Este demuxer presenta todos los AVStreams encontrados en el manifiesto. Al establecer los flags de descarte en los AVStreams, quien realiza la llamada puede decidir qué flujos recibir realmente. Cada flujo refleja las propiedades id y bandwidth de la <Representation> como claves de metadatos llamadas "id" y "variant_bitrate" respectivamente.

3.6.1 Opciones

Este demuxer acepta la siguiente opción:

cenc_decryption_key

Clave predeterminada de 16 bytes, en hexadecimal, para descifrar archivos cifrados mediante ISO Common Encryption (CENC/AES-128 CTR; ISO/IEC 23001-7).

cenc_decryption_keys

Diccionario de id de clave de 16 bytes => clave de 16 bytes, ambos en hexadecimal, para descifrar archivos cifrados mediante ISO Common Encryption (CENC/AES-128 CTR; ISO/IEC 23001-7).

3.7 dvdvideo

Demuxer de DVD-Video, basado en libdvdnav y libdvdread.

Puede ingerir directamente títulos de DVD, en concreto PGC secuenciales, dentro de un flujo de conversión. Los recursos de menú, como el vídeo o el audio de fondo, también pueden extraerse con demuxing dadas las coordenadas del menú (con el mejor esfuerzo posible).

Se aceptan dispositivos de bloques (unidades de DVD), archivos ISO y estructuras de directorios. Actívelo con -f dvdvideo delante de una de estas entradas.

Este demuxer NO dispone de ningún tipo de código de descifrado. Está usted por su cuenta al trabajar con DVD cifrados, y no debe esperar asistencia al respecto.

La reproducción subyacente la gestiona libdvdnav, y el análisis de la estructura, libdvdread. FFmpeg debe compilarse con compatibilidad con biblioteca GPL disponible, además de las opciones de configure --enable-libdvdnav y --enable-libdvdread.

Deberá indicar el "número de título" deseado, o bien las coordenadas exactas de PGC/PG. Muchos reproductores y herramientas de DVD de código abierto pueden ayudar a proporcionar esta información. Si no se especifica, el demuxer usará de forma predeterminada el título 1, que funciona para muchos discos. Sin embargo, debido a la flexibilidad del formato, se recomienda comprobarlo manualmente. Hay muchos discos creados de forma extraña o con cabeceras no válidas.

Si la entrada es una unidad de DVD real, tenga en cuenta que hay unidades que pueden fallar silenciosamente al leer sectores dañados del disco, devolviendo en su lugar bits aleatorios, lo que equivale a datos corruptos. Esto es especialmente frecuente en discos antiguos o deteriorados. Sería necesaria una segunda pasada con comprobaciones de integridad para detectar la corrupción. Esto no es un problema de FFmpeg.

3.7.1 Antecedentes

DVD-Video no es un formato container directamente accesible y lineal en el sentido tradicional. En su lugar, permite una reproducción compleja y programática de flujos MPEG-PS cuidadosamente muxados que se almacenan en archivos VOB sin cabecera. Para el usuario final, estos flujos se conocen simplemente como "títulos", pero la secuencia lógica real de reproducción la define uno o más "PGC", o Program Group Chains (cadenas de grupos de programa), dentro del título. El PGC, a su vez, se compone de varios "PG", o "Programs" (programas), que son los segmentos de vídeo reales (y, en un contenido de vídeo típico, ordenados secuencialmente). La estructura del PGC, junto con la disposición de los flujos y los metadatos, se almacena en archivos IFO que deben analizarse. Los PGC pueden entenderse, en términos más sencillos, como listas de reproducción.

Un reproductor de DVD real depende de la interacción del usuario con la GUI a través de menús y de una máquina virtual interna que dirige el demuxing. Por lo general, el usuario navega (mediante menús) o es redirigido automáticamente al PGC de su elección. Durante este proceso y la reproducción posterior, la máquina virtual interna del reproductor de DVD también mantiene un estado y ejecuta instrucciones que pueden provocar saltos a distintos sectores durante la reproducción. Por eso interviene libdvdnav, ya que una lectura lineal de los blobs MPEG-PS del disco (VOB) no basta para producir la secuencia correcta en muchos casos.

Existen otras muchas estructuras de DVD (un tema extenso) que no se tratarán aquí. Los paquetes NAV, en particular, los gestiona este demuxer para construir una temporización precisa, pero no se emiten como flujo. Para una buena comprensión de alto nivel, consulte: https://code.videolan.org/videolan/libdvdnav/-/blob/master/doc/dvd_structures

3.7.2 Opciones

Este demuxer acepta las siguientes opciones:

title int

El número de título que reproducir. Debe establecerse si no se establecen pgc y pg. No aplicable a menús. El valor predeterminado es 0 (auto), que actualmente solo selecciona el primer título disponible (título 1) y notifica al usuario las implicaciones.

chapter_start int

El número de capítulo, o PTT (part-of-title), en el que empezar. No aplicable a menús. El valor predeterminado es 1.

chapter_end int

El número de capítulo, o PTT (part-of-title), en el que terminar. No aplicable a menús. El valor predeterminado es 0, un valor especial que indica terminar en el último capítulo posible.

angle int

El número de ángulo de vídeo, que hace referencia a lo que es esencialmente un flujo de vídeo adicional compuesto por fotogramas alternos intercalados en los VOB. No aplicable a menús. El valor predeterminado es 1.

region int

El código de región que usar para la reproducción. Algunos discos pueden usarlo para establecer de forma predeterminada la reproducción en un ángulo concreto según la región. Esta opción no afecta al código de región de una unidad de DVD real usada como entrada. No aplicable a menús. El valor predeterminado es 0, "mundial".

menu bool

Extrae los recursos del menú en lugar de navegar por un título. Requiere las coordenadas exactas del menú (menu_lu, menu_vts, pgc, pg). El valor predeterminado es false.

menu_lu int

El idioma del menú que extraer. En DVD, los menús se agrupan por idioma. El valor predeterminado es 1, la primera unidad de idioma.

menu_vts int

El VTS en el que reside el menú, o 0 si es un menú VMG (de nivel raíz). El valor predeterminado es 1, el menú del primer VTS.

pgc int

El PGC de entrada en el que iniciar la reproducción, junto con pg. Alternativa a establecer title. Los marcadores de capítulo no se admiten por el momento. Debe establecerse explícitamente para los menús. El valor predeterminado es 0, que resuelve automáticamente a partir del valor de title.

pg int

El PG de entrada en el que iniciar la reproducción, junto con pgc. Alternativa a establecer title. Los marcadores de capítulo no se admiten por el momento. El valor predeterminado es 1, el primer PG del PGC.

preindex bool

Actívelo para tener marcadores de capítulo (PTT) precisos y medición de duración, lo que requiere una segunda pasada de lectura lenta para indexar las marcas de tiempo de los marcadores de capítulo a partir de los paquetes NAV. Esto supone un trabajo adicional no ideal para unidades ópticas reales. Se recomienda, y es más rápido, usar esta opción con una copia de seguridad de la estructura del DVD almacenada en un disco duro. No compatible con pgc y pg. El valor predeterminado es 0, false.

trim bool

Omite las celdas de relleno (es decir, celdas de menos de 1 segundo) desde el principio. Existen muchos discos con segmentos de relleno al principio del PGC, a menudo con datos basura destinados a controlar la velocidad de almacenamiento en búfer de un reproductor de DVD real y sin ningún otro valor de datos relevante. No aplicable a menús. El valor predeterminado es 1, true.

3.7.3 Ejemplos

  • Abrir el título 3 de una estructura de DVD dada:

    ffmpeg -f dvdvideo -title 3 -i <path to DVD> ...
    
  • Abrir los capítulos 3 a 6 del título 1 de una estructura de DVD dada:

    ffmpeg -f dvdvideo -chapter_start 3 -chapter_end 6 -title 1 -i <path to DVD> ...
    
  • Abrir solo el capítulo 5 del título 1 de una estructura de DVD dada:

    ffmpeg -f dvdvideo -chapter_start 5 -chapter_end 5 -title 1 -i <path to DVD> ...
    
  • Extraer el menú con idioma 1 del VTS 1, PGC 1, empezando en PG 1:

    ffmpeg -f dvdvideo -menu 1 -menu_lu 1 -menu_vts 1 -pgc 1 -pg 1 -i <path to DVD> ...
    

3.8 ea

Demuxer del formato multimedia de Electronic Arts.

Este formato lo usan varios juegos de Electronic Arts.

3.8.1 Opciones

merge_alpha bool

Normalmente el canal alfa VP6 (si existe) se devuelve como un flujo de vídeo secundario; al establecer esta opción puede hacer que el demuxer devuelva un único flujo de vídeo que contenga el canal alfa además del vídeo normal.

3.9 imf

Demuxer de Interoperable Master Format.

Este demuxer presenta los flujos de audio y vídeo encontrados en una Composition IMF, según se especifica en SMPTE ST 2067-2.

ffmpeg [-assetmaps <path of ASSETMAP1>,<path of ASSETMAP2>,...] -i <path of CPL> ...

Si no se especifica -assetmaps, el demuxer busca un archivo llamado ASSETMAP.xml en el mismo directorio que el CPL.

3.10 flv, live_flv, kux

Demuxer del formato Adobe Flash Video.

Este demuxer se usa para hacer demuxing de archivos FLV y flujos de red RTMP. En el caso de flujos de red en directo, si fuerza el formato, puede usar la opción live_flv en lugar de flv para sobrellevar las discontinuidades de marcas de tiempo. KUX es una variante de flv usada en la plataforma Youku.

ffmpeg -f flv -i myfile.flv ...
ffmpeg -f live_flv -i rtmp://<any.server>/anything/key ....

-flv_metadata bool

Asigna los flujos según el contenido del array onMetaData.

-flv_ignore_prevtag bool

Ignora el tamaño del valor de la etiqueta anterior.

-flv_full_metadata bool

Muestra todo el contenido de onMetadata.

3.11 gif

Demuxer de GIF animado.

Acepta las siguientes opciones:

min_delay

Establece el retardo mínimo válido entre fotogramas, en centésimas de segundo. El rango es de 0 a 6000. El valor predeterminado es 2.

max_gif_delay

Establece el retardo máximo válido entre fotogramas, en centésimas de segundo. El rango es de 0 a 65535. El valor predeterminado es 65535 (casi once minutos), el máximo permitido por la especificación.

default_delay

Establece el retardo predeterminado entre fotogramas, en centésimas de segundo. El rango es de 0 a 6000. El valor predeterminado es 10.

ignore_loop

Los archivos GIF pueden contener información para repetirse un número determinado de veces (o indefinidamente). Si ignore_loop se fija en 1, se ignorará la configuración de bucle de la entrada y no se producirá repetición. Si se fija en 0, se producirá la repetición y se repetirá el número de veces indicado en el GIF. El valor predeterminado es 1.

Por ejemplo, con el filtro overlay, para superponer un GIF con bucle infinito sobre otro vídeo:

ffmpeg -i input.mp4 -ignore_loop 0 -i input.gif -filter_complex overlay=shortest=1 out.mkv

Tenga en cuenta que en el ejemplo anterior se usa la opción shortest del filtro overlay para terminar el vídeo de salida a la duración del archivo de entrada más corto, que en este caso es input.mp4, ya que el GIF de este ejemplo se repite indefinidamente.

3.12 hls

Demuxer HLS

Demuxer de Apple HTTP Live Streaming.

Este demuxer presenta todos los AVStreams de todos los flujos de variantes. El campo id se fija en el número de índice de la variante de tasa de bits. Al establecer los flags de descarte en los AVStreams (pulsando ’a’ o ’v’ en ffplay), quien realiza la llamada puede decidir qué flujos de variantes recibir realmente. La tasa de bits total de la variante a la que pertenece el flujo está disponible en una clave de metadatos llamada "variant_bitrate".

Acepta las siguientes opciones:

live_start_index

índice de segmento en el que iniciar los flujos en directo (los valores negativos se cuentan desde el final).

prefer_x_start

prefiere usar #EXT-X-START si está en la lista de reproducción, en lugar de live_start_index.

allowed_extensions

Lista de extensiones de archivo, separadas por ’,’, a las que hls tiene permiso de acceder.

extension_picky

Esto bloquea las extensiones no permitidas al sondear. También requiere que todos los segmentos disponibles tengan extensiones coincidentes con el formato, excepto mpegts, que siempre está permitido. Se recomienda configurar correctamente las listas blancas en lugar de depender de las extensiones. Habilitado de forma predeterminada.

max_reload

Número máximo de veces que se intenta recargar una lista insuficiente. El valor predeterminado es 1000.

m3u8_hold_counters

Número máximo de veces que se carga el m3u8 cuando se actualiza sin nuevos segmentos. El valor predeterminado es 1000.

http_persistent

Usa conexiones HTTP persistentes. Aplicable solo a flujos HTTP. Habilitado de forma predeterminada.

http_multiple

Usa varias conexiones HTTP para descargar segmentos HTTP. Habilitado de forma predeterminada para servidores HTTP/1.1.

http_seekable

Usa solicitudes HTTP parciales para descargar segmentos HTTP. 0 = deshabilitar, 1 = habilitar, -1 = auto. El valor predeterminado es auto.

seg_format_options

Establece opciones para el demuxer de los segmentos de medios mediante una lista de pares clave=valor separados por :.

seg_max_retry

Número máximo de veces que se recarga un segmento tras un error, útil cuando no se desea omitir el segmento en caso de error de red. El valor predeterminado es 0.

3.13 image2

Demuxer de archivos de imagen.

Este demuxer lee a partir de una lista de archivos de imagen especificada mediante un patrón. La sintaxis y el significado del patrón los especifica la opción pattern_type.

El patrón puede contener un sufijo que se usa para determinar automáticamente el formato de las imágenes contenidas en los archivos.

El tamaño, el pixel format y el formato de cada imagen deben ser iguales para todos los archivos de la secuencia.

Este demuxer acepta las siguientes opciones:

framerate

Establece la velocidad de fotogramas del flujo de vídeo. El valor predeterminado es 25.

loop

Si se fija en 1, repite la entrada en bucle. El valor predeterminado es 0.

pattern_type

Selecciona el tipo de patrón usado para interpretar el nombre de archivo indicado.

pattern_type acepta uno de los siguientes valores.

none

Desactiva la coincidencia de patrones, de modo que el vídeo contendrá únicamente la imagen especificada. Debe usar esta opción si no desea crear secuencias a partir de varias imágenes y sus nombres de archivo pueden contener caracteres de patrón especiales.

sequence

Selecciona un tipo de patrón de secuencia, usado para especificar una secuencia de archivos indexados por números secuenciales.

Un patrón de secuencia puede contener la cadena "%d" o "%0Nd", que especifica la posición de los caracteres que representan un número secuencial en cada nombre de archivo que coincide con el patrón. Si se usa la forma "%d0Nd", la cadena que representa el número en cada nombre de archivo se rellena con ceros, y N es el número total de dígitos rellenados con ceros que representan el número. El carácter literal ’%’ puede especificarse en el patrón con la cadena "%%".

Si el patrón de secuencia contiene "%d" o "%0Nd", el primer nombre de archivo de la lista de archivos especificada por el patrón debe contener un número comprendido, de forma inclusiva, entre start_number y start_number+start_number_range-1, y todos los números siguientes deben ser secuenciales.

Por ejemplo, el patrón "img-%03d.bmp" coincidirá con una secuencia de nombres de archivo de la forma img-001.bmp, img-002.bmp, ..., img-010.bmp, etc.; el patrón "i%%m%%g-%d.jpg" coincidirá con una secuencia de nombres de archivo de la forma i%m%g-1.jpg, i%m%g-2.jpg, ..., i%m%g-10.jpg, etc.

Tenga en cuenta que el patrón no tiene por qué contener necesariamente "%d" ni "%0Nd"; por ejemplo, para convertir un único archivo de imagen img.jpeg puede usar el siguiente comando:

ffmpeg -i img.jpeg img.png

glob

Selecciona un tipo de patrón de comodín glob.

El patrón se interpreta como un patrón glob(). Esto solo puede seleccionarse si libavformat se compiló con compatibilidad con globbing.

El valor predeterminado es sequence.

pixel_format

Establece el pixel format de las imágenes que leer. Si no se especifica, el pixel format se deduce a partir del primer archivo de imagen de la secuencia.

start_number

Establece el índice del archivo, según el patrón de nombre de archivo de imagen, a partir del cual empezar a leer. El valor predeterminado es 0.

start_number_range

Establece el intervalo de índices que comprobar al buscar el primer archivo de imagen de la secuencia, empezando desde start_number. El valor predeterminado es 5.

ts_from_file

Si se fija en 1, establecerá la marca de tiempo del fotograma según la fecha de modificación del archivo de imagen. Tenga en cuenta que no se garantiza la monotonía de las marcas de tiempo: las imágenes se procesan en el mismo orden que sin esta opción. El valor predeterminado es 0. Si se fija en 2, establecerá la marca de tiempo del fotograma según la fecha de modificación del archivo de imagen con precisión de nanosegundos.

video_size

Establece el tamaño de vídeo de las imágenes que leer. Si no se especifica, el tamaño de vídeo se deduce a partir del primer archivo de imagen de la secuencia.

export_path_metadata

Si se fija en 1, añadirá dos campos adicionales a los metadatos encontrados en la entrada, haciéndolos también disponibles para otros filtros (véase el filtro drawtext para ejemplos). El valor predeterminado es 0. Los campos adicionales se describen a continuación:

lavf.image2dec.source_path

Corresponde a la ruta completa del archivo de entrada que se está leyendo.

lavf.image2dec.source_basename

Corresponde al nombre del archivo que se está leyendo.

3.13.1 Ejemplos

  • Use ffmpeg para crear un vídeo a partir de las imágenes de la secuencia de archivos img-001.jpeg, img-002.jpeg, ..., suponiendo una velocidad de fotogramas de entrada de 10 fotogramas por segundo:

    ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv
    
  • Como en el caso anterior, pero empezando a leer desde un archivo con índice 100 en la secuencia:

    ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv
    
  • Lea las imágenes que coincidan con el patrón glob "*.png", es decir, todos los archivos que terminan con el sufijo ".png":

    ffmpeg -framerate 10 -pattern_type glob -i "*.png" out.mkv
    

3.14 libgme

La biblioteca Game Music Emu es una colección de emuladores de archivos de música de videojuegos.

Consulte https://bitbucket.org/mpyne/game-music-emu/overview para más información.

Acepta las siguientes opciones:

track_index

Establece el índice de la pista que se va a demuxear. El demuxer solo puede exportar una pista. Los índices de pista empiezan en 0. El valor predeterminado es elegir la primera pista. El número de pistas se exporta como entrada de metadatos tracks.

sample_rate

Establece la frecuencia de muestreo de la pista exportada. El rango es de 1000 a 999999. El valor predeterminado es 44100.

max_size (bytes)

El demuxer almacena todo el archivo en memoria. Ajuste este valor para establecer el tamaño máximo del búfer, que a su vez actúa como límite superior para el tamaño de los archivos que se pueden leer. El valor predeterminado es 50 MiB.

3.15 libmodplug

Demuxer de módulos basado en ModPlug

Consulte https://github.com/Konstanty/libmodplug

Exportará un flujo de audio de 2 canales, 16 bits y 44.1 kHz. Opcionalmente, se puede exportar un flujo de vídeo pal8 de 16 colores con o sin metadatos impresos.

Acepta las siguientes opciones:

noise_reduction

Aplica un filtro paso bajo simple. Puede ser 1 (activado) o 0 (desactivado). El valor predeterminado es 0.

reverb_depth

Establece la cantidad de reverberación. Rango 0-100. El valor predeterminado es 0.

reverb_delay

Establece el retardo en ms, limitado a 40-250 ms. El valor predeterminado es 0.

bass_amount

Aplica expansión de graves, también conocida como XBass o megabass. El rango va de 0 (suave) a 100 (fuerte). El valor predeterminado es 0.

bass_range

Establece el corte, es decir, el límite superior de las frecuencias graves. El rango es de 10-100 Hz. El valor predeterminado es 0.

surround_depth

Aplica un efecto envolvente Dolby Pro-Logic. El rango va de 0 (suave) a 100 (intenso). El valor predeterminado es 0.

surround_delay

Establece el retardo del sonido envolvente en ms, limitado a 5-40 ms. El valor predeterminado es 0.

max_size

El demuxer almacena todo el archivo en memoria. Ajuste este valor para establecer el tamaño máximo del búfer, que a su vez actúa como límite superior para el tamaño de los archivos que se pueden leer. El rango es de 0 a 100 MiB. 0 elimina el límite de tamaño del búfer (no recomendado). El valor predeterminado es 5 MiB.

video_stream_expr

Cadena que se evalúa mediante la API eval para asignar colores al flujo de vídeo generado. Las variables que se pueden usar son x, y, w, h, t, speed, tempo, order, pattern y row.

video_stream

Genera el flujo de vídeo. Puede ser 1 (activado) o 0 (desactivado). El valor predeterminado es 0.

video_stream_w

Establece el ancho del fotograma de vídeo en ’chars’, donde cada char representa 8 píxeles. El rango es de 20-512. El valor predeterminado es 30.

video_stream_h

Establece la altura del fotograma de vídeo en ’chars’, donde cada char representa 8 píxeles. El rango es de 20-512. El valor predeterminado es 30.

video_stream_ptxt

Imprime metadatos en el flujo de vídeo. Incluye speed, tempo, order, pattern, row y ts (tiempo en ms). Puede ser 1 (activado) o 0 (desactivado). El valor predeterminado es 1.

3.16 libopenmpt

Demuxer de módulos basado en libopenmpt

Consulte https://lib.openmpt.org/libopenmpt/ para más información.

Algunos archivos tienen varias subcanciones (pistas); esto se puede configurar con la opción subsong.

Acepta las siguientes opciones:

subsong

Establece el índice de la subcanción. Puede ser ’all’, ’auto’, o el índice de la subcanción. Los índices de subcanción empiezan en 0. El valor predeterminado es ’auto’.

El valor predeterminado consiste en dejar que libopenmpt elija.

layout

Establece la disposición de canales. Los valores válidos son disposiciones de 1, 2 y 4 canales. El valor predeterminado es STEREO.

sample_rate

Establece la frecuencia de muestreo de salida de libopenmpt. El rango va de 1000 a INT_MAX. El valor predeterminado es 48000.

3.17 mcc

Demuxer para archivos MacCaption MCC, admite las versiones 1.0 y 2.0 de MCC. Los archivos MCC almacenan datos VANC, que pueden incluir subtítulos ocultos (EIA-608 y CEA-708), código de tiempo auxiliar, datos pan-scan, etc. De forma predeterminada, por compatibilidad con versiones anteriores, el demuxer MCC extrae solo los subtítulos ocultos EIA-608 y CEA-708 y devuelve un flujo EIA_608, ignorando el resto de los datos VANC. Puede cambiarlo para devolver todos los datos VANC en un flujo de datos SMPTE_436M_ANC estableciendo -eia608_extract 0

3.17.1 Ejemplos

  • Convierta un archivo MCC al formato Scenarist (SCC):
    ffmpeg -i CC.mcc -c:s copy CC.scc
    

Tenga en cuenta que el formato SCC solo admite EIA-608, por lo que se descartarán todos los demás datos, como las extensiones CEA-708.

  • Combine un archivo MCC en un archivo MXF:
    ffmpeg -i video_and_audio.mxf -eia608_extract 0 -i CC.mcc -c copy -map 0 -map 1 out.mxf
    

Esto conserva todos los datos VANC y los inserta en el archivo MXF de salida como un flujo de datos SMPTE_436M_ANC.

3.18 mov/mp4/3gp

Demuxer para el formato de archivo Quicktime y el formato de archivo multimedia base ISO/IEC (ISO/IEC 14496-12 o MPEG-4 parte 12, ISO/IEC 15444-12 o JPEG 2000 parte 12).

Extensiones registradas: mov, mp4, m4a, 3gp, 3g2, mj2, psp, m4b, ism, ismv, isma, f4v

3.18.1 Opciones

Este demuxer acepta las siguientes opciones:

enable_drefs

Activa la carga de pistas externas; está desactivado de forma predeterminada. Activar esta opción podría, en teoría, filtrar información en algunos casos de uso.

use_absolute_path

Permite cargar pistas externas mediante rutas absolutas; está desactivado de forma predeterminada. Activar esta opción supone un riesgo de seguridad. Solo debe activarse si se sabe que el origen no es malicioso.

seek_streams_individually

Al buscar, identifica el punto más cercano en cada flujo de forma individual y demuxea los paquetes de ese flujo a partir del punto identificado. Esto puede dar lugar a una secuencia de paquetes distinta de la que se obtendría demuxeando linealmente desde el principio. De forma predeterminada, está activado.

ignore_editlist

Ignora cualquier átomo de lista de edición. De forma predeterminada, el demuxer modifica el índice del flujo para reflejar la línea de tiempo descrita por la lista de edición. De forma predeterminada, está desactivado.

advanced_editlist

Modifica el índice del flujo para reflejar la línea de tiempo descrita por la lista de edición. ignore_editlist debe estar en false para que esta opción tenga efecto. Si tanto ignore_editlist como esta opción están en false, entonces solo se modifica el inicio del índice del flujo para reflejar el tiempo de permanencia inicial o la marca de tiempo de inicio descrita por la lista de edición. De forma predeterminada, está activado.

ignore_chapters

No analiza los capítulos. Esto incluye las etiquetas/momentos ’HiLight’ de GoPro. Tenga en cuenta que los capítulos solo se analizan cuando la entrada admite búsqueda. De forma predeterminada, está desactivado.

use_mfra_for

Para entradas fragmentadas que admiten búsqueda, establece la marca de tiempo de inicio del fragmento a partir del cuadro de acceso aleatorio a fragmentos de medios (mfra), si está presente.

Están disponibles las siguientes opciones:

‘auto’

Detecta automáticamente si se deben establecer las marcas de tiempo mfra como PTS o DTS (predeterminado)

‘dts’

Establece las marcas de tiempo mfra como DTS

‘pts’

Establece las marcas de tiempo mfra como PTS

‘0’

No usa el cuadro mfra para establecer las marcas de tiempo

use_tfdt

Para entradas fragmentadas, establece la marca de tiempo de inicio del fragmento con el valor baseMediaDecodeTime del cuadro tfdt. De forma predeterminada, está activado, lo que hará que se prefiera usar el cuadro tfdt para establecer el DTS. Desactívelo para usar earliest_presentation_time del cuadro sidx. En cualquier caso, se usará la marca de tiempo del cuadro mfra si está disponible y use_mfra_for está en pts o dts.

export_all

Exporta los cuadros no reconocidos dentro del cuadro udta como entradas de metadatos. Los primeros cuatro caracteres del tipo de cuadro se usan como clave. De forma predeterminada, está desactivado.

export_xmp

Exporta el contenido completo del cuadro XMP_ y del cuadro uuid como una cadena con la clave xmp. Tenga en cuenta que si export_all está activado y esta opción no lo está, el contenido del cuadro XMP_ igualmente se exporta, pero con la clave XMP_. De forma predeterminada, está desactivado.

activation_bytes

Clave de 4 bytes necesaria para descifrar archivos Audible AAX y AAX+. Consulte el apartado sobre Audible AAX más abajo.

audible_fixed_key

Clave fija usada para procesar archivos Audible AAX/AAX+. Ya viene preconfigurada, por lo que no debería ser necesario especificarla.

decryption_key

Clave predeterminada de 16 bytes, en hexadecimal, para descifrar archivos cifrados con ISO Common Encryption (CENC/AES-128 CTR; ISO/IEC 23001-7).

decryption_keys

Diccionario de ID de clave de 16 bytes => clave de 16 bytes, ambos en hexadecimal, para descifrar archivos cifrados con ISO Common Encryption (CENC/AES-128 CTR; ISO/IEC 23001-7).

max_stts_delta

Los deltas de muestra muy altos escritos en el cuadro stts de un trak pueden ser intencionados en algunos casos, pero por lo general se escriben por error o se usan para almacenar un valor negativo destinado a la corrección del dts cuando se tratan como enteros de 32 bits con signo. Esta opción permite al usuario establecer un límite superior, por encima del cual el delta se limita a 1. Los valores superiores al límite que resultan negativos al convertirse a int32 se usan para ajustar el dts posterior.

La unidad es la escala de tiempo de la pista. El rango es de 0 a UINT_MAX. El valor predeterminado es UINT_MAX - 48000*10, lo que permite una corrección de dts de hasta 10 segundos para flujos de audio de 48 kHz, cubriendo el 99.9% del rango de uint32.

interleaved_read

Intercala los paquetes de varias pistas a nivel del demuxer. En archivos mal intercalados, esto evita problemas de reproducción causados por grandes huecos entre paquetes de distintas pistas, ya que MOV/MP4 no impone requisitos de ubicación de paquetes. Sin embargo, esto puede provocar búsquedas excesivas en archivos muy mal intercalados, debido a la búsqueda entre pistas, por lo que desactivarlo puede evitar problemas de E/S a costa de la reproducción.

3.18.2 Audible AAX

Los archivos Audible AAX son archivos M4B cifrados, y se pueden descifrar especificando un secreto de activación de 4 bytes.

ffmpeg -activation_bytes 1CEB00DA -i test.aax -vn -c:a copy output.mp4

3.19 mpegts

Demuxer de transport stream MPEG-2.

Este demuxer acepta las siguientes opciones:

resync_size

Establece el límite de tamaño para buscar una nueva sincronización. El valor predeterminado es 65536.

skip_unknown_pmt

Omite las PMT de los programas no definidos en la PAT. El valor predeterminado es 0.

fix_teletext_pts

Sobrescribe los valores PTS y DTS de los paquetes de teletexto con las marcas de tiempo calculadas a partir del PCR del primer programa del que forma parte el flujo de teletexto y que no se descarta. El valor predeterminado es 1; establezca esta opción en 0 si desea que los valores PTS y DTS de los paquetes de teletexto no se modifiquen.

ts_packetsize

Opción de salida que indica el tamaño del paquete en bruto en bytes. Muestra el tamaño de paquete en bruto detectado; el usuario no puede establecerlo.

scan_all_pmts

Analiza y combina todas las PMT. El valor es un entero de -1 a 1 (-1 significa configuración automática, 1 significa activado, 0 significa desactivado). El valor predeterminado es -1.

merge_pmt_versions

Reutiliza los flujos existentes cuando se actualiza la versión de una PMT y los flujos elementales se mueven a otros PID. El valor predeterminado es 0.

max_packet_size

Establece el tamaño máximo, en bytes, de los paquetes emitidos por el demuxer. Las cargas útiles que superen este tamaño se dividen en varios paquetes. El rango es de 1 a INT_MAX/2. El valor predeterminado es 204800 bytes.

3.20 mpjpeg

Demuxer de MJPEG encapsulado en MIME multiparte.

Este demuxer permite leer MJPEG, donde cada fotograma se representa como una parte de un flujo multipart/x-mixed-replace.

strict_mime_boundary

La implementación predeterminada aplica un criterio flexible para la detección del límite MIME multiparte, con el fin de evitar regresiones con numerosos servidores existentes que no generan un flujo MIME MJPEG correcto. Al activar esta opción, estableciéndola en 1, se aplicará una comprobación más estricta del valor del límite.

3.21 rawvideo

Demuxer de vídeo en bruto.

Este demuxer permite leer datos de vídeo en bruto. Dado que no hay ninguna cabecera que especifique los parámetros de vídeo asumidos, el usuario debe especificarlos para poder decodificar los datos correctamente.

Este demuxer acepta las siguientes opciones:

framerate

Establece la velocidad de fotogramas del vídeo de entrada. El valor predeterminado es 25.

pixel_format

Establece el pixel format del vídeo de entrada. El valor predeterminado es yuv420p.

stride

Establece el tamaño de línea del fotograma en bytes; solo es necesario si hay relleno adicional. Para formatos multiplano, stride es una lista con el tamaño de línea de cada plano.

video_size

Establece el tamaño del vídeo de entrada. Este valor debe especificarse explícitamente.

Por ejemplo, para leer un archivo rawvideo input.raw con ffplay, suponiendo un pixel format rgb24, un tamaño de vídeo de 320x240 y una velocidad de fotogramas de 10 imágenes por segundo, use el siguiente comando:

ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw

Lea un rawvideo con ffplay, suponiendo un pixel format yuv420p, un tamaño de vídeo de 1080x1920, con 8 bytes de relleno en cada línea del plano Y y 4 bytes de relleno en el plano UV,

ffplay -f rawvideo -pixel_format yuv420p -video_size 1080x1920 -stride 1088,544,544 input.raw

3.22 rcwt

RCWT (Raw Captions With Time) es un formato nativo de ccextractor, una herramienta de código abierto muy usada para procesar fuentes de subtítulos ocultos (CC) 608/708. Para más información sobre el formato, consulte (ffmpeg-formats)rcwtenc.

Este demuxer implementa la especificación vigente en marzo de 2024, que se ha mantenido estable y sin cambios desde abril de 2014.

3.22.1 Ejemplos

  • Renderice CC a ASS usando el decoder integrado:
    ffmpeg -i CC.rcwt.bin CC.ass
    

Tenga en cuenta que si la salida parece estar vacía, es posible que tenga que establecer manualmente la opción data_field del decoder para elegir el subflujo CC deseado.

  • Convierta una copia de seguridad RCWT al formato Scenarist (SCC):
    ffmpeg -i CC.rcwt.bin -c:s copy CC.scc
    

Tenga en cuenta que el formato SCC no admite todas las extensiones CC posibles que se pueden almacenar en RCWT (como EIA-708).

3.23 sbg

Demuxer de scripts SBaGen.

Este demuxer lee el lenguaje de scripts usado por SBaGen http://uazu.net/sbagen/ para generar sesiones de pulsos binaurales. Un script SBG tiene este aspecto:

-SE
a: 300-2.5/3 440+4.5/0
b: 300-2.5/0 440+4.5/3
off: -
NOW      == a
+0:07:00 == b
+0:14:00 == a
+0:21:00 == b
+0:30:00    off

Un script SBG puede combinar marcas de tiempo absolutas y relativas. Si el script usa únicamente marcas de tiempo absolutas (incluida la hora de inicio del script) o únicamente relativas, entonces su estructura es fija y la conversión es directa. En cambio, si el script combina ambos tipos de marcas de tiempo, la referencia NOW para las marcas relativas se tomará de la hora actual del día en el momento en que se lea el script, y la estructura del script quedará fijada según esa referencia. Esto significa que si el script se reproduce directamente, los tiempos reales coincidirán con las marcas de tiempo absolutas con la precisión del reloj del controlador de sonido, pero si el usuario pausa la reproducción o busca de algún modo, todos los tiempos se desplazarán en consecuencia.

3.24 tedcaptions

Subtítulos JSON usados para las TED Talks.

TED no proporciona enlaces a los subtítulos, pero se pueden deducir a partir de la página. El archivo tools/bookmarklets.html del árbol de fuentes de FFmpeg contiene un bookmarklet para obtenerlos.

Este demuxer acepta la siguiente opción:

start_time

Establece la hora de inicio de la charla TED, en milisegundos. El valor predeterminado es 15000 (15 s). Se usa para sincronizar los subtítulos con los vídeos descargables, ya que estos incluyen una introducción de 15 s.

Ejemplo: convierta los subtítulos a un formato que la mayoría de los reproductores entiendan:

ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt

3.25 vapoursynth

Envoltorio de Vapoursynth.

Por motivos de seguridad, los scripts de Vapoursynth no se detectan automáticamente, por lo que hay que forzar el formato de entrada. En las herramientas ff* de línea de comandos, añada -f vapoursynth antes de la entrada -i yourscript.vpy.

Este demuxer acepta la siguiente opción:

max_script_size

El demuxer almacena todo el script en memoria. Ajuste este valor para establecer el tamaño máximo del búfer, que a su vez actúa como límite superior para el tamaño de los scripts que se pueden leer. El valor predeterminado es 1 MiB.

3.26 w64

Demuxer de audio Sony Wave64.

Este demuxer acepta las siguientes opciones:

max_size

Consulte la misma opción para el demuxer wav.

3.27 wav

Demuxer de audio RIFF Wave.

Este demuxer acepta las siguientes opciones:

ignore_length bool

Si se activa, ignora el tamaño del bloque data y sigue leyendo hasta el final del archivo. Puede ser útil para leer archivos dañados o parciales cuya cabecera no se actualizó correctamente, pero interpretará mal los archivos con bloques que no son de audio después del bloque data. De forma predeterminada, está desactivado.

max_size

Especifica el tamaño máximo en bytes de los paquetes que entrega el demuxer. De forma predeterminada, está en 0, lo que significa que se elige un valor razonable en función del formato de entrada.

3.28 webp

Demuxer de WebP animado.

Acepta las siguientes opciones:

-min_delay int

Establece el retardo mínimo válido entre fotogramas en milisegundos. El rango es de 0 a 60000. El valor predeterminado es 10.

-max_webp_delay int

Establece el retardo máximo válido entre fotogramas en milisegundos. El rango es de 0 a 16777215. El valor predeterminado es 16777215 (más de cuatro horas), el valor máximo permitido por la especificación.

-default_delay int

Establece el retardo predeterminado entre fotogramas en milisegundos. El rango es de 0 a 60000. El valor predeterminado es 100.

-ignore_loop bool

Los archivos WebP pueden contener información para repetirse un número determinado de veces (o infinitamente). Si ignore_loop está en true, se ignorará la configuración de bucle de la entrada y no se producirá repetición. Si está en false, se producirá la repetición y se repetirá el número de veces indicado en el WebP. El valor predeterminado es true.

usebgcolor bool

Los archivos WebP contienen una sugerencia de color de fondo en el bloque ANIM, pero la especificación WebP indica que las aplicaciones visualizadoras no están obligadas a usarla. Si usebgcolor está en true, se usará la sugerencia de color de fondo; en caso contrario, se usará negro transparente para el fondo. El valor predeterminado es false.

4 Muxers

Los muxers son elementos configurados en FFmpeg que permiten escribir flujos multimedia en un tipo de archivo concreto.

Al configurar su compilación de FFmpeg, todos los muxers admitidos están activados de forma predeterminada. Puede listar todos los muxers disponibles con la opción de configuración --list-muxers.

Puede desactivar todos los muxers con la opción de configuración --disable-muxers y activar/desactivar muxers individuales de forma selectiva con las opciones --enable-muxer=MUXER / --disable-muxer=MUXER.

La opción -muxers de las herramientas ff* mostrará la lista de muxers activados. Use -formats para ver una lista combinada de los demuxers y muxers activados.

A continuación se describen algunos de los muxers disponibles actualmente.

4.1 Muxers en bruto

Esta sección trata los muxers en bruto. Aceptan un único flujo que coincide con el codec designado. No almacenan marcas de tiempo ni metadatos. La extensión reconocida es la misma que el nombre del muxer, salvo que se indique lo contrario.

Comprende los siguientes muxers. También se muestran el tipo de medio y las posibles extensiones usadas para seleccionar automáticamente el muxer a partir de las extensiones de salida.

‘ac3 audio

Dolby Digital, también conocido como AC-3.

‘adx audio

Audio ADX de CRI Middleware.

Este muxer escribirá el recuento total de muestras cerca del inicio del primer paquete cuando la salida admita búsqueda y el recuento se pueda almacenar en 32 bits.

‘aptx audio

aptX (Audio Processing Technology for Bluetooth)

‘aptx_hd audio (aptxdh)’

Audio aptX HD (Audio Processing Technology for Bluetooth)

‘avs2 video (avs, avs2)’

Vídeo AVS2-P2 (Audio Video Standard - Second generation - Part 2) / IEEE 1857.4

‘avs3 video (avs3)’

Vídeo AVS3-P2 (Audio Video Standard - Third generation - Part 2) / IEEE 1857.10

‘cavsvideo video (cavs)’

AVS chino (Audio Video Standard - First generation)

‘codec2raw audio

Audio Codec 2.

No se registra ninguna extensión, por lo que hay que indicar el nombre del formato, p. ej. con la herramienta de línea de comandos ffmpeg mediante -f codec2raw.

‘data any

Muxer de datos genérico.

Este muxer acepta un único flujo con cualquier codec de cualquier tipo. El flujo de entrada debe seleccionarse con la opción -map de la herramienta de línea de comandos ffmpeg.

No se registra ninguna extensión, por lo que hay que indicar el nombre del formato, p. ej. con la herramienta de línea de comandos ffmpeg mediante -f data.

‘dfpwm audio (dfpwm)’

Muxer de audio DFPWM1a en bruto (Dynamic Filter Pulse With Modulation).

‘dirac video (drc, vc2)’

Vídeo BBC Dirac.

El codec Dirac Pro es un subconjunto y está estandarizado como SMPTE VC-2.

‘dnxhd video (dnxhd, dnxhr)’

Vídeo Avid DNxHD.

Está estandarizado como SMPTE VC-3. Acepta flujos DNxHR.

‘dts audio

Audio DTS Coherent Acoustics (DCA)

‘eac3 audio

Dolby Digital Plus, también conocido como Enhanced AC-3

‘evc video (evc)’

Vídeo MPEG-5 Essential Video Coding (EVC) / EVC / MPEG-5 parte 1 EVC

‘g722 audio

Audio ITU-T G.722

‘g723_1 audio (tco, rco)’

Audio ITU-T G.723.1

‘g726 audio

Audio ITU-T G.726 big-endian ("alineado a la izquierda").

No se registra ninguna extensión, por lo que hay que indicar el nombre del formato, p. ej. con la herramienta de línea de comandos ffmpeg mediante -f g726.

‘g726le audio

Audio ITU-T G.726 little-endian ("alineado a la derecha").

No se registra ninguna extensión, por lo que hay que indicar el nombre del formato, p. ej. con la herramienta de línea de comandos ffmpeg mediante -f g726le.

‘gsm audio

Audio Global System for Mobile Communications

‘h261 video

Vídeo ITU-T H.261

‘h263 video

Vídeo ITU-T H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 versión 2

‘h264 video (h264, 264)’

Vídeo ITU-T H.264 / MPEG-4 parte 10 AVC. El bitstream se convertirá a la sintaxis Annex B si está en modo con prefijo de longitud.

‘hevc video (hevc, h265, 265)’

Vídeo ITU-T H.265 / MPEG-H parte 2 HEVC. El bitstream se convertirá a la sintaxis Annex B si está en modo con prefijo de longitud.

‘m4v video

Vídeo MPEG-4 parte 2

‘mjpeg video (mjpg, mjpeg)’

Vídeo Motion JPEG

‘mlp audio

Meridian Lossless Packing, también conocido como Packed PCM

‘mp2 audio (mp2, m2a, mpa)’

Audio MPEG-1 Audio Layer II

‘mpeg1video video (mpg, mpeg, m1v)’

Vídeo MPEG-1 parte 2.

‘mpeg2video video (m2v)’

Vídeo ITU-T H.262 / MPEG-2 parte 2

‘obu video

Muxer AV1 de Open Bitstream Units de bajo overhead.

Se insertarán OBU delimitadoras temporales en todas las unidades temporales del flujo.

‘rawvideo video (yuv, rgb)’

Vídeo sin comprimir en bruto.

‘sbc audio (sbc, msbc)’

Audio con codec de subbanda de baja complejidad Bluetooth SIG (SBC)

‘truehd audio (thd)’

Audio Dolby TrueHD

‘vc1 video

Vídeo SMPTE 421M / VC-1

4.1.1 Ejemplos

  • Almacene fotogramas de vídeo en bruto con el muxer ‘rawvideo’ usando ffmpeg:
    ffmpeg -f lavfi -i testsrc -t 10 -s hd1080p testsrc.yuv
    

Dado que el muxer rawvideo no almacena la información relativa al tamaño y al formato, esta información debe proporcionarse al demuxear el archivo:

    ffplay -video_size 1920x1080 -pixel_format rgb24 -f rawvideo testsrc.rgb

4.2 Muxers PCM en bruto

Esta sección trata los muxers de audio PCM (Pulse-Code Modulation) en bruto.

Aceptan un único flujo que coincide con el codec designado. No almacenan marcas de tiempo ni metadatos. La extensión reconocida es la misma que el nombre del muxer.

Comprende los siguientes muxers. También se muestra entre paréntesis la extensión adicional opcional usada para seleccionar automáticamente el muxer a partir de la extensión de salida.

‘alaw (al)’

PCM A-law

‘f32be’

PCM de coma flotante de 32 bits big-endian

‘f32le’

PCM de coma flotante de 32 bits little-endian

‘f64be’

PCM de coma flotante de 64 bits big-endian

‘f64le’

PCM de coma flotante de 64 bits little-endian

‘mulaw (ul)’

PCM mu-law

‘s16be’

PCM con signo de 16 bits big-endian

‘s16le’

PCM con signo de 16 bits little-endian

‘s24be’

PCM con signo de 24 bits big-endian

‘s24le’

PCM con signo de 24 bits little-endian

‘s32be’

PCM con signo de 32 bits big-endian

‘s32le’

PCM con signo de 32 bits little-endian

‘s8 (sb)’

PCM con signo de 8 bits

‘u16be’

PCM sin signo de 16 bits big-endian

‘u16le’

PCM sin signo de 16 bits little-endian

‘u24be’

PCM sin signo de 24 bits big-endian

‘u24le’

PCM sin signo de 24 bits little-endian

‘u32be’

PCM sin signo de 32 bits big-endian

‘u32le’

PCM sin signo de 32 bits little-endian

‘u8 (ub)’

PCM sin signo de 8 bits

‘vidc’

PCM Archimedes VIDC

4.3 Muxers de program stream MPEG-1/MPEG-2

Esta sección trata los formatos pertenecientes a la familia MPEG-1 y MPEG-2 Systems.

El formato MPEG-1 Systems (también conocido como ISO/IEEC 11172-1 o MPEG-1 program stream) se ha adoptado para el formato de las pistas multimedia almacenadas en VCD (Video Compact Disc).

El estándar MPEG-2 Systems (también conocido como ISO/IEEC 13818-1) abarca dos formatos de container, uno conocido como transport stream y otro como program stream; aquí solo se trata este último.

El formato MPEG-2 program stream (también conocido como VOB por la extensión de archivo correspondiente) es una extensión del MPEG-1 program stream: además de admitir distintos codecs para los flujos de audio y vídeo, también almacena subtítulos y metadatos de navegación. El MPEG-2 program stream se ha adoptado para almacenar flujos multimedia en dispositivos de almacenamiento SVCD y DVD.

Esta sección comprende los siguientes muxers.

‘mpeg (mpg,mpeg)’

Muxer MPEG-1 Systems / MPEG-1 program stream.

‘vcd’

Muxer MPEG-1 Systems / MPEG-1 program stream (VCD).

Este muxer se puede usar para generar pistas en el formato aceptado por los dispositivos de almacenamiento VCD (Video Compact Disc).

Es igual que el muxer ‘mpeg’, con algunas diferencias.

‘vob’

Muxer de MPEG-2 program stream (VOB).

‘dvd’

Muxer de MPEG-2 program stream (DVD VOB).

Este muxer se puede usar para generar pistas en el formato aceptado por los dispositivos de almacenamiento DVD (Digital Versatile Disc).

Es igual que el muxer ‘vob’, con algunas diferencias.

‘svcd (vob)’

Muxer de MPEG-2 program stream (SVCD VOB).

Este muxer se puede usar para generar pistas en el formato aceptado por los dispositivos de almacenamiento SVCD (Super Video Compact Disc).

Es igual que el muxer ‘vob’, con algunas diferencias.

4.3.1 Opciones

muxrate rate

Establece la tasa de mux definida por el usuario, expresada en bits por segundo. Si no se especifica, se emplea la tasa de mux calculada automáticamente. El valor predeterminado es 0.

preload delay

Establece el retardo inicial de demux-decode en microsegundos. El valor predeterminado es 500000.

4.4 Muxers MOV/MPEG-4/ISOMBFF

Esta sección cubre los formatos pertenecientes a la familia QuickTime / MOV, incluido el formato MPEG-4 Part 14 y el formato de archivo multimedia base ISO (ISOBMFF). Estos formatos comparten una estructura común basada en el formato de archivo multimedia base ISO (ISOBMFF).

El formato MOV se desarrolló originalmente para usarse con Apple QuickTime. Más tarde se empleó como base para el formato MPEG-4 Part 1 (posteriormente Part 14), también conocido como ISO/IEC 14496-1. Ese formato se generalizó después en ISOBMFF, también denominado formato MPEG-4 Part 12, ISO/IEC 14496-12 o ISO/IEC 15444-12.

Comprende los siguientes muxers.

‘3gp’

Formato Third Generation Partnership Project (3GPP) para servicios multimedia 3G UMTS

‘3g2’

Formato Third Generation Partnership Project 2 (3GP2 o 3GPP2) para servicios multimedia 3G CDMA2000, similar a ‘3gp’ con extensiones y limitaciones

‘f4v’

Formato Adobe Flash Video

‘ipod’

Formato de archivo de audio MPEG-4, como MOV/MP4 pero limitado a contener únicamente flujos de audio, reproducido normalmente en el dispositivo Apple ipod

‘ismv’

Formato Microsoft IIS (Internet Information Services) Smooth Streaming Audio/Video (ISMV o ISMA). Se basa en el formato MPEG-4 Part 14 con algunas variantes incompatibles, usado para transmitir archivos multimedia con el servidor Microsoft IIS.

‘mov’

Formato del reproductor QuickTime identificado por la extensión .mov

‘mp4’

Formato MP4 o MPEG-4 Part 14

‘psp’

Variante del formato MP4/MPEG-4 Part 14 para PlayStation Portable. Se basa en el formato MPEG-4 Part 14 con algunas variantes incompatibles, usado para reproducir archivos en dispositivos PlayStation.

4.4.1 Fragmentación

Los muxers ‘mov’, ‘mp4’ e ‘ismv’ admiten la fragmentación. Normalmente, un archivo MOV/MP4 almacena en un único lugar todos los metadatos relativos a todos los paquetes.

Estos datos suelen escribirse al final del archivo, pero pueden trasladarse al principio para mejorar la reproducción añadiendo +faststart a -movflags, o usando la herramienta qt-faststart).

Un archivo fragmentado consta de varios fragmentos, en los que los paquetes y los metadatos correspondientes se almacenan juntos. Escribir un archivo fragmentado tiene la ventaja de que el archivo es decodificable incluso si la escritura se interrumpe (mientras que un MOV/MP4 normal no es decodificable si no se ha finalizado correctamente), y requiere menos memoria al escribir archivos muy largos (dado que al escribir archivos MOV/MP4 normales se almacena en memoria la información de cada paquete hasta que se cierra el archivo). El inconveniente es que resulta menos compatible con otras aplicaciones.

La fragmentación se habilita estableciendo una de las opciones que definen cómo dividir el archivo en fragmentos:

frag_duration frag_size min_frag_duration movflags +frag_keyframe movflags +frag_custom

Si se especifica más de una condición, los fragmentos se cortan cuando se cumple alguna de las condiciones especificadas. La excepción es la opción min_frag_duration, que debe cumplirse para que cualquiera de las demás condiciones se aplique.

4.4.2 Opciones

brand brand_string

Sobrescribe la marca principal.

empty_hdlr_name bool

Actívela para omitir la escritura del nombre dentro de un cuadro hdlr. El valor predeterminado es false.

encryption_key key

establece la clave de cifrado del medio en formato hexadecimal

encryption_kid kid

establece el identificador de la clave de cifrado del medio en formato hexadecimal

encryption_scheme scheme

configura el esquema de cifrado; los valores permitidos son ‘none’ y ‘cenc-aes-ctr’

frag_duration duration

Crea fragmentos de una duración de duration microsegundos.

frag_interleave number

Intercala las muestras dentro de los fragmentos (número máximo de muestras consecutivas; cuanto menor sea el valor, más ajustado será el entrelazado, aunque con más sobrecarga). Su valor predeterminado es 0.

frag_size size

crea fragmentos que contienen hasta size bytes de datos útiles

iods_audio_profile profile

especifica el número iods del átomo de perfil de audio (de -1 a 255); el valor predeterminado es -1

iods_video_profile profile

especifica el número iods del átomo de perfil de vídeo (de -1 a 255); el valor predeterminado es -1

ism_lookahead num_entries

especifica el número de entradas de anticipación para archivos ISM (de 0 a 255); el valor predeterminado es 0

min_frag_duration duration

no crea fragmentos con una duración inferior a duration microsegundos

moov_size bytes

Reserva espacio para el átomo moov al principio del archivo en lugar de colocarlo al final. Si el espacio reservado es insuficiente, el muxing fallará.

mov_gamma gamma

especifica el valor de gamma para el átomo gama (número decimal de 0 a 10); el valor predeterminado es 0.0 y debe establecerse junto con + movflags

movflags flags

Establece varios interruptores de muxing. Pueden usarse las siguientes flags:

‘cmaf’

escribe una salida MP4 fragmentada compatible con CMAF (Common Media Application Format)

‘dash’

escribe una salida MP4 fragmentada compatible con DASH (Dynamic Adaptive Streaming over HTTP)

‘default_base_moof’

Al igual que la flag ‘omit_tfhd_offset’, esta flag evita escribir el campo base_data_offset absoluto en los átomos tfhd, pero lo consigue mediante la nueva flag default-base-is-moof. Esta flag es nueva a partir de 14496-12:2012. Esto puede facilitar el análisis de los fragmentos en determinadas circunstancias (evitando basar los cálculos de ubicación de los fragmentos de pista en el final implícito del fragmento de pista anterior).

‘delay_moov’

retrasa la escritura del moov inicial hasta que se corte el primer fragmento, o hasta el primer vaciado (flush) del primer fragmento

‘disable_chpl’

Deshabilita los marcadores de capítulo Nero (átomo chpl). Normalmente se escriben en el archivo tanto los capítulos Nero como una pista de capítulos de QuickTime. Con esta opción activada, solo se escribirá la pista de capítulos de QuickTime. Los capítulos Nero pueden provocar fallos al reprocesar el archivo con ciertos programas de etiquetado, como mp3Tag 2.61a e iTunes 11.3; es probable que otras versiones también se vean afectadas.

‘faststart’

Ejecuta una segunda pasada que traslada el índice (átomo moov) al principio del archivo. Esta operación puede tardar un tiempo y no funciona en diversas situaciones, como con la salida fragmentada, por lo que no está habilitada de forma predeterminada.

‘frag_custom’

Permite que quien invoca la función elija manualmente cuándo cortar los fragmentos, llamando a av_write_frame(ctx, NULL) para escribir un fragmento con los paquetes escritos hasta ese momento. (Esto solo es útil en otras aplicaciones que integran libavformat, no desde ffmpeg.)

‘frag_discont’

indica que el siguiente fragmento es discontinuo respecto a los anteriores

‘frag_every_frame’

fragmenta en cada fotograma

‘frag_keyframe’

inicia un nuevo fragmento en cada keyframe de vídeo

‘global_sidx’

escribe un índice sidx global al principio del archivo

‘isml’

crea un feed de Smooth Streaming en vivo (para enviarlo a un punto de publicación)

‘negative_cts_offsets’

Habilita el uso de la versión 1 del cuadro CTTS, en la que los desplazamientos CTS pueden ser negativos. Esto permite que la muestra inicial tenga DTS/CTS igual a cero y reduce la necesidad de listas de edición en algunos casos, como pistas de vídeo con B-frames. Además, facilita la conformidad con las directrices de interoperabilidad de DASH-IF.

Esta opción se establece implícitamente al escribir archivos ‘ismv’ (Smooth Streaming).

‘omit_tfhd_offset’

No escribe ningún base_data_offset absoluto en los átomos tfhd. Esto evita vincular los fragmentos a posiciones de byte absolutas dentro del archivo o de los flujos.

‘prefer_icc’

Si se escribe el átomo colr, prioriza el uso del perfil ICC si existe en los datos secundarios del paquete de flujo.

‘rtphint’

añade pistas de sugerencia RTP al archivo de salida

‘separate_moof’

Escribe un átomo moof (fragmento de película) independiente para cada pista. Normalmente, los paquetes de todas las pistas se escriben en un único átomo moof (lo cual es ligeramente más eficiente), pero con esta opción activada, el muxer escribe un par moof/mdat por cada pista, lo que facilita separar las pistas.

‘skip_sidx’

Omite la escritura del átomo sidx. Cuando la sobrecarga de tasa de bits debida al átomo sidx es alta, esta opción puede usarse en los casos en que el átomo sidx no sea obligatorio. Cuando la flag ‘global_sidx’ está habilitada, esta opción se ignora.

‘skip_trailer’

omite la escritura del trailer mfra/tfra/mfro en archivos fragmentados

‘use_metadata_tags’

usa el átomo mdta para los metadatos

‘write_colr’

escribe el átomo colr incluso si la información de color no está especificada. Esta flag es experimental, puede cambiar de nombre o modificarse; no la use en scripts.

‘write_gama’

escribe el átomo gama obsoleto

‘hybrid_fragmented’

Para facilitar la recuperación: escribe el archivo de salida como un archivo fragmentado. Esto permite leer el archivo intermedio mientras se está escribiendo (en particular, si el proceso de escritura se interrumpe de forma abrupta). Cuando la escritura finaliza, el archivo se convierte en un archivo normal no fragmentado, lo cual es más compatible y permite una búsqueda (seek) más fácil y rápida.

Si la escritura se interrumpe, el archivo intermedio puede volver a multiplexarse (remux) manualmente para obtener un archivo normal no fragmentado con lo que se había escrito en el archivo inconcluso.

movie_timescale scale

Establece la escala de tiempo escrita en el cuadro de cabecera de película (mvhd). El rango es de 1 a INT_MAX. El valor predeterminado es 1000.

rtpflags flags

Añade pistas de sugerencia RTP al archivo de salida.

Pueden usarse las siguientes flags:

‘h264_mode0’

usa el modo 0 para H.264 en RTP

‘latm’

usa la empaquetación MP4A-LATM en lugar de MPEG4-GENERIC para AAC

‘rfc2190’

usa la empaquetación RFC 2190 en lugar de RFC 4629 para H.263

‘send_bye’

envía paquetes RTCP BYE al finalizar

‘skip_rtcp’

no envía informes de emisor RTCP

skip_iods bool

omite la escritura del átomo iods (el valor predeterminado es true)

use_editlist bool

usa lista de edición (el valor predeterminado es auto)

use_stream_ids_as_track_ids bool

usa los ID de flujo como ID de pista (el valor predeterminado es false)

video_track_timescale scale

Establece la escala de tiempo usada para las pistas de vídeo. El rango es de 0 a INT_MAX. Si se establece en 0, la escala de tiempo se define automáticamente según la base de tiempo nativa del flujo. El valor predeterminado es 0.

write_btrt bool

Fuerza o deshabilita la escritura del cuadro bitrate dentro del cuadro stsd de una pista. El cuadro contiene el tamaño del búfer de decodificación (en bytes), la tasa de bits máxima y la tasa de bits media de la pista. El cuadro se omitirá si no se puede calcular ninguno de estos valores. El valor predeterminado es -1 o auto, lo que escribirá el cuadro únicamente en modo MP4.

write_prft option

Escribe el cuadro de referencia de tiempo del productor (PRFT) con la fuente de tiempo especificada para el campo NTP del cuadro PRFT. Establezca el valor en ‘wallclock’ para indicar como fuente de tiempo el reloj de pared, y en ‘pts’ para indicar como fuente de tiempo los valores PTS de los paquetes de entrada.

write_tmcd bool

Especifique on para forzar la escritura de una pista de timecode, off para deshabilitarla, y auto para escribir una pista de timecode solo en salidas mov y mp4 (predeterminado).

Establecer el valor en ‘pts’ solo es aplicable a un caso de codificación en vivo, en el que los valores PTS se establecen como tiempo de reloj de pared en el origen. Por ejemplo, un caso de codificación con una fuente de captura decklink en la que video_pts y audio_pts se establecen en ‘abs_wallclock’.

4.4.3 Ejemplos

  • Enviar contenido de Smooth Streaming en tiempo real a un punto de publicación en IIS con el muxer ‘ismv’ usando ffmpeg:
    ffmpeg -re <normal input/transcoding options> -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
    

4.5 a64

Muxer de vídeo A64 Commodore 64.

Este muxer acepta un único flujo de vídeo con codec a64_multi o a64_multi5.

4.6 ac4

Muxer de audio AC-4 sin procesar.

Este muxer acepta un único flujo de audio ac4.

4.6.1 Opciones

write_crc bool

si está habilitado, escribe una suma de comprobación CRC para cada paquete en la salida; el valor predeterminado es false

4.7 adts

Muxer Audio Data Transport Stream.

Acepta un único flujo AAC.

4.7.1 Opciones

write_id3v2 bool

Actívela para escribir etiquetas ID3v2.4 al principio del flujo. Deshabilitado de forma predeterminada.

write_apetag bool

Actívela para escribir etiquetas APE al final del flujo. Deshabilitado de forma predeterminada.

write_mpeg2 bool

Actívela para establecer en 1 el bit de versión MPEG en la cabecera de la trama ADTS, lo que indica MPEG-2. El valor predeterminado es 0, que indica MPEG-4.

4.8 aea

Muxer de audio MD STUDIO.

Este muxer acepta un único flujo de audio ATRAC1 con uno o dos canales y una frecuencia de muestreo de 44100Hz.

Dado que AEA admite el almacenamiento del título de la pista, este muxer también escribirá en el container el título procedente de los metadatos del flujo.

4.9 aiff

Muxer Audio Interchange File Format.

4.9.1 Opciones

write_id3v2 bool

Active la escritura de etiquetas ID3v2 estableciendo el valor en 1. Predeterminado 0 (deshabilitado).

id3v2_version bool

Selecciona la versión de ID3v2 a escribir. Actualmente solo se admiten las versiones 3 y 4 (también llamadas ID3v2.3 e ID3v2.4). El valor predeterminado es la versión 4.

4.10 alp

Muxer de audio del juego Lego Racers de High Voltage Software.

Acepta un único flujo ADPCM_IMA_ALP con no más de 2 canales y una frecuencia de muestreo no superior a 44100 Hz.

Extensiones: tun, pcm

4.10.1 Opciones

type type

Establece el tipo de archivo.

type acepta los siguientes valores:

‘tun’

Establece el tipo de archivo como música. Debe tener una frecuencia de muestreo de 22050 Hz.

‘pcm’

Establece el tipo de archivo como sfx.

‘auto’

Establece el tipo de archivo según la extensión del archivo de salida. .pcm da como resultado el tipo pcm; en caso contrario, se establece el tipo tun. (predeterminado)

4.11 amr

Muxer de audio 3GPP AMR (Adaptive Multi-Rate).

Acepta un único flujo de audio que contiene un flujo AMR NB.

4.12 amv

Muxer de formato AMV (Actions Media Video).

4.13 apm

Muxer de audio Ubisoft Rayman 2 APM.

Acepta un único flujo de audio ADPCM IMA APM.

4.14 apng

Muxer Animated Portable Network Graphics.

Acepta un único flujo de vídeo APNG.

4.14.1 Opciones

final_delay delay

Fuerza un retardo expresado en segundos tras el último fotograma de cada repetición. El valor predeterminado es 0.0.

plays repetitions

especifica cuántas veces se reproduce el contenido; 0 provoca un bucle infinito, con 1 no hay bucle

4.14.2 Ejemplos

  • Usar ffmpeg para generar una salida APNG con 2 repeticiones y un retardo de medio segundo tras la primera repetición:
    ffmpeg -i INPUT -final_delay 0.5 -plays 2 out.apng
    

4.15 argo_asf

Muxer de audio Argonaut Games ASF.

Acepta un único flujo de audio ADPCM.

4.15.1 Opciones

version_major version

sobrescribe la versión mayor del archivo, especificada como un entero; el valor predeterminado es 2

version_minor version

sobrescribe la versión menor del archivo, especificada como un entero; el valor predeterminado es 1

name name

Incorpora el nombre de archivo en el archivo; si no se especifica, usa el nombre del archivo de salida. El nombre se trunca a 8 caracteres.

4.16 argo_cvg

Muxer de audio Argonaut Games CVG.

Acepta un único flujo de audio ADPCM de un canal a 22050Hz.

Las opciones loop y reverb establecen las flags correspondientes en la cabecera, que después pueden recuperarse para procesar el flujo de audio en consecuencia.

4.16.1 Opciones

skip_rate_check bool

omite la comprobación de la frecuencia de muestreo (el valor predeterminado es false)

loop bool

establece la flag de bucle (el valor predeterminado es false)

reverb boolean

establece la flag de reverberación (el valor predeterminado es true)

4.17 asf, asf_stream

Muxer de audio Advanced / Active Systems (o Streaming) Format.

Para streaming debe seleccionarse la variante ‘asf_stream’.

Tenga en cuenta que Windows Media Audio (wma) y Windows Media Video (wmv) también usan este muxer.

4.17.1 Opciones

packet_size size

Establece el tamaño del paquete del muxer en número de bytes. Ajustar este valor puede reducir la fragmentación de datos o la sobrecarga del muxer según la fuente. El valor predeterminado es 3200, el mínimo es 100 y el máximo es 64Ki.

4.18 ass

Muxer de subtítulos ASS/SSA (SubStation Alpha).

Acepta un único flujo de subtítulos ASS.

4.18.1 Opciones

ignore_readorder bool

Escribe los eventos de diálogo de inmediato, aunque estén desordenados. El valor predeterminado es false, en cuyo caso se almacenan en caché hasta encontrar el evento del instante esperado.

4.19 ast

Muxer AST (Audio Stream).

Este formato se usa para reproducir audio en algunos juegos de Nintendo Wii.

Acepta un único flujo de audio.

Las opciones loopstart y loopend permiten definir una sección del archivo que se repita en bucle para los reproductores que respeten dichas opciones.

4.19.1 Opciones

loopstart start

Especifica la posición de inicio del bucle expresada en milisegundos, de -1 a INT_MAX; si se establece -1 no se especifica ningún bucle (predeterminado -1) y se ignora el valor de loopend.

loopend end

Especifica la posición de fin del bucle expresada en milisegundos, de 0 a INT_MAX; el valor predeterminado es 0; si se establece 0 se asume la duración total del flujo.

4.20 au

Muxer de audio SUN AU.

Acepta un único flujo de audio.

4.21 avi

Muxer Audio Video Interleaved.

AVI es un formato propietario desarrollado por Microsoft, especificado formalmente más tarde mediante la especificación Open DML.

Debido a las diferencias entre las implementaciones de los reproductores, puede ser necesario establecer algunas opciones para garantizar que la salida generada se reproduzca correctamente en el reproductor de destino.

4.21.1 Opciones

flipped_raw_rgb bool

Si se establece en true, almacena una altura positiva para los mapas de bits RGB sin procesar, lo que indica que el mapa de bits se almacena de abajo hacia arriba (bottom-up). Tenga en cuenta que esta opción no invierte el mapa de bits, lo cual debe hacerse manualmente de antemano, por ejemplo con el filtro ‘vflip’. El valor predeterminado es false e indica que el mapa de bits se almacena de arriba hacia abajo (top down).

reserve_index_space size

Reserva la cantidad especificada de bytes para el índice maestro OpenDML de cada flujo dentro de la cabecera del archivo. De forma predeterminada, los índices maestros adicionales se incrustan en los paquetes de datos si no queda espacio en el primer índice maestro, y se enlazan formando una cadena de índices. Esta estructura de índice puede causar problemas en algunos casos de uso, por ejemplo con software de terceros que dependa estrictamente de la especificación de índice OpenDML, o cuando la búsqueda (seek) en el archivo es lenta. Reservar suficiente espacio de índice en la cabecera del archivo evita estos problemas.

El espacio de índice necesario depende del tamaño del archivo de salida y debería rondar los 16 bytes por gigabyte. Cuando se omite esta opción o se establece en cero, el espacio de índice necesario se estima automáticamente.

El valor predeterminado es 0.

write_channel_mask bool

Escribe la máscara de disposición de canales en la cabecera del flujo de audio.

Esta opción está habilitada de forma predeterminada. Deshabilitar la máscara de canales puede ser útil en escenarios concretos, por ejemplo al combinar varios flujos de audio en uno solo para compatibilidad con software que solo admite un único flujo de audio en AVI (véase la sección "amerge" del manual de ffmpeg-filters).

4.22 avif

Muxer de formato de imagen AV1 (Alliance for Open Media Video codec 1).

Este muxer almacena imágenes codificadas con el codec AV1.

Acepta uno o dos flujos de vídeo. En caso de proporcionarse dos flujos de vídeo, el segundo debe contener un único plano que almacene la máscara alfa.

En caso de proporcionarse más de una imagen, la salida generada se considera un AVIF animado, y el número de bucles puede especificarse con la opción loop.

Esto se basa en la especificación de Alliance for Open Media disponible en la URL https://aomediacodec.github.io/av1-avif.

4.22.1 Opciones

loop count

número de veces que se repite un AVIF animado; 0 especifica un bucle infinito, el valor predeterminado es 0

movie_timescale timescale

Establece la escala de tiempo escrita en el cuadro de cabecera de película (mvhd). El rango es de 1 a INT_MAX. El valor predeterminado es 1000.

4.23 avm2

Muxer de formato ShockWave Flash (SWF) / ActionScript Virtual Machine 2 (AVM2).

Acepta un flujo de audio, un flujo de vídeo, o ambos.

4.24 bit

Muxer de formato de archivo G.729 (.bit).

Acepta un único flujo de audio G.729.

4.25 caf

Muxer Apple CAF (Core Audio Format).

Acepta un único flujo de audio.

4.26 codec2

Muxer de audio Codec2.

Acepta un único flujo de audio codec2.

4.27 chromaprint

Muxers de huella digital (fingerprint) Chromaprint.

Para habilitar la compilación de este filtro, debe configurar FFmpeg con --enable-chromaprint.

Este muxer envía los datos de audio a la biblioteca Chromaprint, que genera una huella digital a partir de los datos de audio proporcionados. Véase: https://acoustid.org/chromaprint

Toma un único flujo de audio sin procesar de 16 bits con signo, en formato nativo de endianness, de como máximo 2 canales.

4.27.1 Opciones

algorithm version

Selecciona la versión del algoritmo con la que generar la huella digital. El rango es de 0 a 4. La versión 3 habilita la detección de silencio. El valor predeterminado es 1.

fp_format format

Formato en el que generar la huella digital. Acepta las siguientes opciones:

‘base64’

Huella digital comprimida en Base64 (predeterminado)

‘compressed’

Huella digital binaria comprimida

‘raw’

Huella digital binaria sin procesar

silence_threshold threshold

Umbral para detectar el silencio. El rango es de -1 a 32767, donde -1 deshabilita la detección de silencio. La detección de silencio solo puede usarse con la versión 3 del algoritmo.

La detección de silencio debe deshabilitarse para usarla con el servicio AcoustID. El valor predeterminado es -1.

4.28 crc

Muxer CRC (Cyclic Redundancy Check).

Este muxer calcula e imprime el CRC Adler-32 de todos los fotogramas de audio y vídeo de entrada. De forma predeterminada, los fotogramas de audio se convierten a audio sin procesar de 16 bits con signo, y los fotogramas de vídeo a vídeo sin procesar, antes de calcular el CRC.

La salida del muxer consiste en una única línea con el formato: CRC=0xCRC, donde CRC es un número hexadecimal rellenado con ceros a 8 dígitos que contiene el CRC de todos los fotogramas de entrada decodificados.

Véase también el muxer framecrc.

4.28.1 Ejemplos

  • Usar ffmpeg para calcular el CRC de la entrada y almacenarlo en el archivo out.crc:

    ffmpeg -i INPUT -f crc out.crc
    
  • Usar ffmpeg para imprimir el CRC en stdout con el comando:

    ffmpeg -i INPUT -f crc -
    
  • Con ffmpeg puede seleccionar el formato de salida de cada fotograma especificando el codec y el formato de audio y vídeo. Por ejemplo, para calcular el CRC del audio de entrada convertido a PCM sin signo de 8 bits y del vídeo de entrada convertido a vídeo MPEG-2, use el comando:

    ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
    

4.29 dash

Muxer Dynamic Adaptive Streaming over HTTP (DASH).

Este muxer crea segmentos y archivos de manifiesto conforme al estándar MPEG-DASH ISO/IEC 23009-1:2014 y las actualizaciones posteriores del estándar.

Para más información, véase:

Este muxer crea un archivo de manifiesto MPD (Media Presentation Description) y archivos de segmento para cada flujo. Los archivos de segmento se colocan en el mismo directorio que el archivo de manifiesto MPD.

El nombre de archivo del segmento puede contener identificadores predefinidos usados en la sección SegmentTemplate del manifiesto, tal como se define en la sección 5.3.9.4.4 del estándar.

Los identificadores disponibles son $RepresentationID$, $Number$, $Bandwidth$ y $Time$. Además de los identificadores estándar, también se admite un identificador propio de ffmpeg, $ext$. Cuando se especifica, ffmpeg sustituirá $ext$ en el nombre de archivo por la extensión del formato de muxing, como mp4, webm, etc.

4.29.1 Opciones

adaptation_sets adaptation_sets

Asigna flujos a conjuntos de adaptación, especificados en la sección AdaptationSets del manifiesto MPD.

Un conjunto de adaptación contiene un conjunto de uno o más flujos a los que se accede como un único subconjunto; por ejemplo, flujos correspondientes codificados a distintos tamaños que el usuario puede seleccionar según el ancho de banda disponible, o distintos flujos de audio en un idioma diferente.

Cada conjunto de adaptación se especifica con la sintaxis:

id=index,streams=streams

donde index debe ser un índice numérico, y streams es una secuencia de índices de flujo separados por ,. Pueden especificarse varios conjuntos de adaptación separados por espacios.

Para asignar todos los flujos de vídeo (o de audio) a un conjunto de adaptación, puede usarse v (o a) como identificador de flujo en lugar de los ID.

Cuando no se define ninguna asignación, esto se establece de forma predeterminada en un conjunto de adaptación por cada flujo.

También pueden especificarse los siguientes campos opcionales:

descriptor

Define el descriptor tal como se define en ISO/IEC 23009-1:2014/Amd.2:2015.

Por ejemplo:

<SupplementalProperty schemeIdUri=\"urn:mpeg:dash:srd:2014\" value=\"0,0,0,1,1,2,2\"/>

La cadena del descriptor debe ser una etiqueta XML autocontenida (self-closing).

frag_duration

Sobrescribe la duración de fragmento global especificada con la opción frag_duration.

frag_type

Sobrescribe el tipo de fragmento global especificado con la opción frag_type.

seg_duration

Sobrescribe la duración de segmento global especificada con la opción seg_duration.

trick_id

Marca un conjunto de adaptación como container de flujos destinados a usarse en modo Trick para el conjunto de adaptación referenciado.

A continuación, algunos ejemplos de valores posibles para la opción adaptation_sets:

id=0,seg_duration=2,frag_duration=1,frag_type=duration,streams=v id=1,seg_duration=2,frag_type=none,streams=a



id=0,seg_duration=2,frag_type=none,streams=0 id=1,seg_duration=10,frag_type=none,trick_id=0,streams=1

dash_segment_type type

Establece el tipo de archivos de segmento DASH.

Valores posibles:

‘auto’

El formato de los archivos de segmento dash se selecciona según el codec del flujo. Este es el modo predeterminado.

‘mp4’

los archivos de segmento dash estarán en formato ISOBMFF/MP4

‘webm’

los archivos de segmento dash estarán en formato WebM

extra_window_size size

Establece el número máximo de segmentos conservados fuera del manifiesto antes de eliminarlos del disco.

format_options options_list

Establece las opciones del formato de container (mp4/webm) mediante una lista de parámetros key=value separados por :. Los valores que contengan el carácter especial : deben escaparse.

frag_duration duration

Establece la duración en segundos de los fragmentos dentro de los segmentos; también puede establecerse un valor fraccionario.

frag_type type

Establece el tipo de intervalo para la fragmentación.

Valores posibles:

‘auto’

establece un fragmento por segmento

‘every_frame’

fragmenta en cada fotograma

‘duration’

fragmenta en intervalos de tiempo específicos

‘pframes’

fragmenta en los keyframes y según la reordenación de P-frames (solo vídeo, experimental)

global_sidx bool

Escribe el átomo SIDX global. Aplicable únicamente a un archivo único, salida mp4, en modo no streaming.

hls_master_name file_name

Nombre de la lista de reproducción maestra HLS. El valor predeterminado es master.m3u8.

hls_playlist bool

Genera archivos de lista de reproducción HLS. La lista de reproducción maestra se genera con el nombre de archivo especificado por la opción hls_master_name. Se genera un archivo de lista de reproducción de medios por cada flujo, con nombres de archivo media_0.m3u8, media_1.m3u8, etc.

http_opts http_opts

Especifica una lista de opciones key=value separadas por : para pasar al protocolo HTTP subyacente. Aplicable únicamente a la salida HTTP.

http_persistent bool

Usa conexiones HTTP persistentes. Aplicable únicamente a la salida HTTP.

http_user_agent user_agent

Sobrescribe el campo User-Agent en la cabecera HTTP. Aplicable únicamente a la salida HTTP.

ignore_io_errors bool

Ignora los errores de E/S durante la apertura y la escritura. Útil en ejecuciones de larga duración con salida de red. Deshabilitado de forma predeterminada.

index_correction bool

Habilita o deshabilita la lógica de corrección del índice de segmento. Aplicable únicamente cuando use_template está habilitado y use_timeline está deshabilitado. Deshabilitado de forma predeterminada.

Cuando está habilitada, la lógica supervisa el flujo de los índices de segmento. Si el valor del índice de segmento de un flujo no se encuentra en la posición en tiempo real esperada, la lógica corrige ese valor de índice.

Normalmente esta lógica es necesaria en casos de streaming en vivo. Las fluctuaciones del ancho de banda de red son habituales durante transmisiones de larga duración. Cada fluctuación puede hacer que los índices de segmento se retrasen respecto a la posición en tiempo real esperada.

init_seg_name init_name

Nombre con plantilla DASH usado para el segmento de inicialización. El valor predeterminado es init-stream$RepresentationID$.$ext$. $ext$ se sustituye por la extensión de nombre de archivo específica del formato de segmento.

ldash bool

Habilita el DASH de baja latencia restringiendo la presencia y los valores de algunos elementos. Deshabilitado de forma predeterminada.

lhls bool

Habilita el HLS de baja latencia (LHLS). Añade la etiqueta #EXT-X-PREFETCH con el URI del segmento actual. La comunidad del reproductor hls.js está intentando estandarizar una especificación LHLS abierta. El borrador de la especificación está disponible en https://github.com/video-dev/hlsjs-rfcs/blob/lhls-spec/proposals/0001-lhls.md.

Esta opción intenta ajustarse a la especificación abierta anterior. Habilita automáticamente las opciones streaming y hls_playlist. Es una función experimental.

Nota: esto no es la versión LHLS de Apple. Véase https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis

master_m3u8_publish_rate segment_intervals_count

Publica la lista de reproducción maestra repetidamente tras el número especificado de intervalos de segmento.

max_playback_rate rate

Establece la tasa de reproducción máxima indicada como apropiada para que los clientes ajusten automáticamente la latencia de reproducción y la ocupación del búfer durante la reproducción normal.

media_seg_name segment_name

Nombre con plantilla DASH usado para los segmentos de medios. El valor predeterminado es chunk-stream$RepresentationID$-$Number%05d$.$ext$. $ext$ se sustituye por la extensión de nombre de archivo específica del formato de segmento.

method method

Usa el método HTTP indicado para crear los archivos de salida. Generalmente se establece en PUT o POST.

min_playback_rate rate

Establece la tasa de reproducción mínima indicada como apropiada para que los clientes ajusten automáticamente la latencia de reproducción y la ocupación del búfer durante la reproducción normal.

mpd_profile flags

Establece uno o más perfiles de manifiesto MPD.

Valores posibles:

‘dash’

Perfil en vivo MPEG-DASH ISO Base media file format

‘dvb_dash’

Perfil DVB-DASH

El valor predeterminado es dash.

remove_at_exit bool

Habilita o deshabilita la eliminación de todos los segmentos al finalizar. Deshabilitado de forma predeterminada.

seg_duration duration

Establece la duración del segmento en segundos (puede establecerse un valor fraccionario). El valor se trata como duración de segmento media cuando la opción use_template está habilitada y la opción use_timeline está deshabilitada, y como duración de segmento mínima en el resto de los casos.

El valor predeterminado es 5.

single_file bool

Habilita o deshabilita el almacenamiento de todos los segmentos en un único archivo, accedido mediante rangos de bytes. Deshabilitado de forma predeterminada.

El nombre del archivo único puede especificarse con la opción single_file_name; si no se especifica, se asume el nombre base del archivo de manifiesto con la extensión del formato de salida.

single_file_name file_name

Nombre con plantilla DASH usado para el elemento baseURL del manifiesto. Implica que la opción single_file se establece en true. En la plantilla, $ext$ se sustituye por la extensión de nombre de archivo específica del formato de segmento.

availability_start_time_ms milliseconds

Establece el atributo availabilityStartTime del MPD como tiempo Unix epoch en milisegundos. Si se establece en 0, se usa el reloj de pared en el momento en que se escribe el primer paquete. Esto es útil para salidas en vivo que necesitan un tiempo de inicio de disponibilidad estable entre reinicios.

streaming bool

Habilita o deshabilita el modo de streaming por fragmentos (chunk) de la salida. En el modo de streaming por fragmentos, cada fotograma será un fragmento moof que forma un chunk. Deshabilitado de forma predeterminada.

suggested_presentation_delay duration

Establece el atributo suggestedPresentationDelay del MPD. Si se establece en 0, se usa la duración del último segmento.

target_latency target_latency

Establece una latencia objetivo prevista, en segundos, para el servicio (puede establecerse un valor fraccionario). Aplicable únicamente cuando las opciones streaming y write_prft están habilitadas. Es un campo informativo que los clientes pueden usar para medir la latencia del servicio.

timeout timeout

Establece el tiempo de espera de las operaciones de E/S de socket, expresado en segundos (puede establecerse un valor fraccionario). Aplicable únicamente a la salida HTTP.

update_period period

Establece el periodo de actualización del MPD para contenido dinámico. La unidad es el segundo. Si se establece en 0, el periodo se calcula automáticamente.

El valor predeterminado es 0.

use_template bool

Habilita o deshabilita el uso de SegmentTemplate en lugar de SegmentList en el manifiesto. Habilitado de forma predeterminada.

use_timeline bool

Habilita o deshabilita el uso de SegmentTimeline dentro de la sección SegmentTemplate del manifiesto. Habilitado de forma predeterminada.

utc_timing_url url

URL de la página que devuelve la marca de tiempo UTC en formato ISO, por ejemplo https://time.akamai.com/?iso

window_size size

Establece el número máximo de segmentos conservados en el manifiesto, descartando el más antiguo. Esto es útil para el streaming en vivo.

Si el valor es 0, todos los segmentos se conservan en el manifiesto. El valor predeterminado es 0.

write_prft write_prft

Escribe elementos Producer Reference Time en los flujos compatibles. Esto también habilita la escritura de cajas prft en el muxer subyacente. Aplicable únicamente cuando la opción utc_url está habilitada. Se establece en auto de forma predeterminada, en cuyo caso el muxer intentará habilitarlo solo en los modos que lo requieran.

4.29.2 Ejemplo

Genere una salida DASH leyendo desde una fuente de entrada en tiempo real con ffmpeg.

A partir del archivo de entrada se generan dos flujos multimedia, ambos con un flujo de vídeo codificado mediante ‘libx264’ y un flujo de audio codificado con ‘libfdk_aac’. El primer flujo multimedia contiene vídeo con una tasa de bits de 800k y audio a la frecuencia de muestreo predeterminada; el segundo, con vídeo escalado a 320x170 píxeles a 300k y audio remuestreado a 22005 Hz.

La opción window_size conserva solo los últimos 5 segmentos con la duración predeterminada de 5 segundos.

ffmpeg -re -i <input> -map 0 -map 0 -c:a libfdk_aac -c:v libx264 \
-b:v:0 800k -profile:v:0 main \
-b:v:1 300k -s:v:1 320x170 -profile:v:1 baseline -ar:a:1 22050 \
-bf 1 -keyint_min 120 -g 120 -sc_threshold 0 -b_strategy 0 \
-use_timeline 1 -use_template 1 -window_size 5 \
-adaptation_sets "id=0,streams=v id=1,streams=a" \
-f dash /path/to/out.mpd

4.30 daud

Muxer de audio D-Cinema.

Acepta un único flujo de audio de 6 canales remuestreado a 96000 Hz y codificado con el codec ‘pcm_24daud’.

4.30.1 Ejemplo

Use ffmpeg para multiplexar el audio de entrada en una disposición de canales ‘5.1’ remuestreada a 96000Hz:

ffmpeg -i INPUT -af aresample=96000,pan=5.1 slow.302

En versiones de ffmpeg anteriores a la 7.0 puede que necesite usar el filtro ‘asetnsamples’ para limitar el tamaño de paquete multiplexado, ya que este formato no admite multiplexar paquetes de más de 65535 bytes (3640 muestras). En versiones de ffmpeg más recientes, el audio se empaqueta automáticamente en paquetes de 36000 bytes (2000 muestras).

4.31 dv

Muxer DV (Digital Video).

Acepta exactamente un flujo de vídeo ‘dvvideo’ y como máximo dos flujos de audio ‘pcm_s16’. Existen restricciones adicionales definidas por las propiedades del vídeo, que debe corresponder a un perfil de vídeo DV admitido, y por la velocidad de fotogramas.

4.31.1 Ejemplo

Use ffmpeg para convertir la entrada:

ffmpeg -i INPUT -s:v 720x480 -pix_fmt yuv411p -r 29.97 -ac 2 -ar 48000 -y out.dv

4.32 ffmetadata

Muxer de metadatos de FFmpeg.

Este muxer escribe los metadatos de los flujos en el formato ‘ffmetadata’.

Consulte (ffmpeg-formats)el capítulo de metadatos para más información sobre el formato.

4.32.1 Ejemplo

Use ffmpeg para extraer los metadatos de un archivo de entrada a un archivo metadata.ffmeta en formato ‘ffmetadata’:

ffmpeg -i INPUT -f ffmetadata metadata.ffmeta

4.33 fifo

Muxer FIFO (First-In First-Out).

El pseudo-muxer ‘fifo’ permite separar la codificación de la multiplexación mediante el uso de una cola FIFO (primero en entrar, primero en salir) que ejecuta el muxer real en un hilo aparte.

Esto resulta especialmente útil combinado con el muxer tee y puede usarse para enviar datos a varios destinos con distinta fiabilidad, velocidad de escritura o latencia.

El muxer de destino se selecciona a partir del nombre de salida, o bien se especifica mediante la opción fifo_format.

El comportamiento del muxer ‘fifo’ cuando la cola se llena o cuando falla la salida (por ejemplo, si no se puede escribir un paquete en la salida) es configurable:

  • La salida puede reiniciarse de forma transparente con un retraso configurable entre reintentos, basado en el tiempo real o en el tiempo del flujo procesado.
  • La codificación puede bloquearse durante un fallo temporal, o bien continuar de forma transparente descartando paquetes en caso de que la cola FIFO se llene.

Los usuarios de la API deben tener en cuenta que las funciones de retrollamada (interrupt_callback, io_open e io_close) usadas dentro de su AVFormatContext deben ser thread-safe.

4.33.1 Opciones

attempt_recovery bool

Si se produce un fallo, intenta recuperar la salida. Esto resulta especialmente útil cuando se usa con salida de red, ya que permite reiniciar la transmisión de forma transparente. De forma predeterminada, esta opción está establecida en false.

drop_pkts_on_overflow bool

Si se establece en true, cuando la cola fifo se llena, los paquetes se descartan en lugar de bloquear el encoder. Esto permite continuar la transmisión sin retrasar la entrada, a costa de omitir parte del flujo. De forma predeterminada, esta opción está establecida en false, de modo que en tales casos el encoder se bloqueará hasta que el muxer procese parte de los paquetes, sin que se pierda ninguno.

fifo_format format_name

Especifica el nombre del formato. Útil cuando no se puede deducir a partir del sufijo del nombre de salida.

format_opts options

Especifica las opciones de formato para el muxer subyacente. Las opciones del muxer pueden indicarse como una lista de pares clave=valor separados por ’:’.

max_recovery_attempts count

Establece el número máximo de intentos de recuperación fallidos consecutivos, tras el cual la salida falla de forma permanente. De forma predeterminada, esta opción está establecida en 0 (sin límite).

queue_size size

Especifica el tamaño de la cola como número de paquetes. El valor predeterminado es 60.

recover_any_error bool

Si se establece en true, se intentará la recuperación sin importar el tipo de error que haya causado el fallo. De forma predeterminada, esta opción está establecida en false, y en el caso de ciertos errores (normalmente permanentes) no se intenta la recuperación aunque la opción attempt_recovery esté establecida en true.

recovery_wait_streamtime bool

Si se establece en false, se usa el tiempo real al esperar el intento de recuperación (es decir, la recuperación se intentará una vez transcurrido el tiempo especificado por la opción recovery_wait_time).

Si se establece en true, en su lugar se tiene en cuenta el tiempo del flujo procesado (es decir, la recuperación se intentará tras descartar los paquetes correspondientes a la opción recovery_wait_time).

De forma predeterminada, esta opción está establecida en false.

recovery_wait_time duration

Especifica el tiempo de espera en segundos antes del siguiente intento de recuperación tras un intento fallido anterior. El valor predeterminado es 5.

restart_with_keyframe bool

Especifica si se debe esperar al keyframe tras recuperarse de un desbordamiento de la cola o de un fallo. Esta opción está establecida en false de forma predeterminada.

timeshift duration

Almacena en búfer la cantidad especificada de paquetes y retrasa la escritura de la salida. Tenga en cuenta que el valor de la opción queue_size debe ser lo bastante grande para almacenar los paquetes del timeshift. Al final de la entrada, el búfer fifo se vacía a velocidad de tiempo real.

4.33.2 Ejemplo

Use ffmpeg para transmitir a un servidor RTMP, seguir procesando el flujo a velocidad de tiempo real incluso en caso de fallo temporal (corte de red) e intentar recuperar la transmisión cada segundo de forma indefinida:

ffmpeg -re -i ... -c:v libx264 -c:a aac -f fifo -fifo_format flv \
  -drop_pkts_on_overflow 1 -attempt_recovery 1 -recovery_wait_time 1 \
  -map 0:v -map 0:a rtmp://example.com/live/stream_name

4.34 film_cpk

Muxer de Sega film (.cpk).

Este formato se usó como formato interno en varios videojuegos de Sega.

Para más información sobre el formato de archivo Sega film, visite http://wiki.multimedia.cx/index.php?title=Sega_FILM.

Acepta como máximo un flujo de vídeo ‘cinepak’ o raw, y como máximo un flujo de audio.

4.35 filmstrip

Muxer de Adobe Filmstrip.

Varias herramientas de Adobe usan este formato para almacenar una exportación de filmstrip generada. Acepta un único flujo de vídeo raw.

4.36 fits

Muxer Flexible Image Transport System (FITS).

Este formato de imagen se usa para almacenar datos astronómicos.

Para más información sobre el formato, visite https://fits.gsfc.nasa.gov.

4.37 flac

Muxer de audio FLAC raw.

Este muxer acepta exactamente un flujo de audio FLAC. Además, es posible añadir imágenes con la disposición ‘attached_pic’.

4.37.1 Opciones

write_header bool

escribe la cabecera del archivo si se establece en true; el valor predeterminado es true

4.37.2 Ejemplo

Use ffmpeg para almacenar el flujo de audio de un archivo de entrada, junto con varias imágenes usadas con la disposición ‘attached_pic’:

ffmpeg -i INPUT -i pic1.png -i pic2.jpg -map 0:a -map 1 -map 2 -disposition:v attached_pic OUTPUT

4.38 flv

Muxer de Adobe Flash Video Format.

4.38.1 Opciones

flvflags flags

Valores posibles:

‘aac_seq_header_detect’

Coloca la cabecera de secuencia AAC basándose en los datos del flujo de audio.

‘no_sequence_end’

Desactiva la etiqueta de fin de secuencia.

‘no_metadata’

Desactiva la etiqueta de metadatos.

‘no_duration_filesize’

Desactiva la duración y el tamaño de archivo en los metadatos cuando sean cero al final del flujo. (Se usa en flujos en vivo que no admiten búsqueda).

‘add_keyframe_index’

Se usa para facilitar la búsqueda, en particular para el pseudo streaming HTTP.

4.39 framecrc

Formato de prueba de CRC (Cyclic Redundancy Check) por paquete.

Este muxer calcula e imprime el CRC Adler-32 de cada paquete de audio y vídeo. De forma predeterminada, los fotogramas de audio se convierten a audio raw de 16 bits con signo y los fotogramas de vídeo a vídeo raw antes de calcular el CRC.

La salida del muxer consiste en una línea por cada paquete de audio y vídeo con el siguiente formato:

stream_index, packet_dts, packet_pts, packet_duration, packet_size, 0xCRC

CRC es un número hexadecimal rellenado con ceros a 8 dígitos que contiene el CRC del paquete.

4.39.1 Ejemplos

Por ejemplo, para calcular el CRC de los fotogramas de audio y vídeo de INPUT, convertidos a paquetes de audio y vídeo raw, y guardarlo en el archivo out.crc:

ffmpeg -i INPUT -f framecrc out.crc

Para imprimir la información en stdout, use el siguiente comando:

ffmpeg -i INPUT -f framecrc -

Con ffmpeg, puede elegir el formato de salida al que se codifican los fotogramas de audio y vídeo antes de calcular el CRC de cada paquete, especificando el codec de audio y de vídeo. Por ejemplo, para calcular el CRC de cada fotograma de audio de entrada decodificado y convertido a PCM sin signo de 8 bits, y de cada fotograma de vídeo de entrada decodificado y convertido a vídeo MPEG-2, use el siguiente comando:

ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -

Consulte también el muxer crc.

4.40 framehash

Formato de prueba de hash por paquete.

Este muxer calcula e imprime un hash criptográfico de cada paquete de audio y vídeo. Puede usarse para comprobaciones de igualdad paquete a paquete sin tener que hacer una comparación binaria individual de cada uno.

De forma predeterminada, los fotogramas de audio se convierten a audio raw de 16 bits con signo y los fotogramas de vídeo a vídeo raw antes de calcular el hash, pero también puede usarse la salida de conversiones explícitas a otros codecs. Usa la función de hash criptográfico SHA-256 de forma predeterminada, aunque admite otros algoritmos.

La salida del muxer consiste en una línea por cada paquete de audio y vídeo con el siguiente formato:

stream_index, packet_dts, packet_pts, packet_duration, packet_size, hash

hash es un número hexadecimal que representa el hash calculado para el paquete.

hash algorithm

Usa la función de hash criptográfico especificada por la cadena algorithm. Los valores admitidos incluyen MD5, murmur3, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA160, SHA224, SHA256 (predeterminado), SHA512/224, SHA512/256, SHA384, SHA512, CRC32 y adler32.

4.40.1 Ejemplos

Para calcular el hash SHA-256 de los fotogramas de audio y vídeo de INPUT, convertidos a paquetes de audio y vídeo raw, y guardarlo en el archivo out.sha256:

ffmpeg -i INPUT -f framehash out.sha256

Para imprimir la información en stdout usando la función de hash MD5, use el siguiente comando:

ffmpeg -i INPUT -f framehash -hash md5 -

Consulte también el muxer hash.

4.41 framemd5

Formato de prueba de MD5 por paquete.

Es una variante del muxer framehash. A diferencia de aquel, usa la función de hash MD5 de forma predeterminada.

4.41.1 Ejemplos

Para calcular el hash MD5 de los fotogramas de audio y vídeo de INPUT, convertidos a paquetes de audio y vídeo raw, y guardarlo en el archivo out.md5:

ffmpeg -i INPUT -f framemd5 out.md5

Para imprimir la información en stdout, use el siguiente comando:

ffmpeg -i INPUT -f framemd5 -

Consulte también los muxers framehash y md5.

4.42 gif

Muxer de GIF animado.

Tenga en cuenta que el formato GIF tiene una base de tiempo muy amplia: por ello, el retraso entre dos fotogramas no puede ser menor de un centisegundo.

4.42.1 Opciones

loop bool

Establece el número de veces que se repite la salida en bucle. Usa -1 para no repetir, 0 para repetir indefinidamente (predeterminado).

final_delay delay

Fuerza el retraso (expresado en centisegundos) tras el último fotograma. Cada fotograma termina con un retraso hasta el siguiente fotograma. El valor predeterminado es -1, un valor especial que indica al muxer que reutilice el retraso anterior. En el caso de un bucle, puede interesarle personalizar este valor para marcar una pausa, por ejemplo.

4.42.2 Ejemplo

Codifique un gif que se repite 10 veces, con un retraso de 5 segundos entre repeticiones:

ffmpeg -i INPUT -loop 10 -final_delay 500 out.gif

Nota 1: si desea extraer los fotogramas en archivos GIF independientes, debe forzar el muxer image2:

ffmpeg -i INPUT -c:v gif -f image2 "out%d.gif"

4.43 gxf

Muxer General eXchange Format (GXF).

GXF fue desarrollado por Grass Valley Group, y posteriormente estandarizado por SMPTE como SMPTE 360M, ampliándose en SMPTE RDD 14-2007 para incluir resoluciones de vídeo de alta definición.

Acepta como máximo un flujo de vídeo con codec ‘mjpeg’, ‘mpeg1video’, ‘mpeg2video’ o ‘dvvideo’ con resolución ‘512x480’ o ‘608x576’, y varios flujos de audio con una frecuencia de 48000Hz y codec ‘pcm16_le’.

4.44 hash

Formato de prueba de hash.

Este muxer calcula e imprime un hash criptográfico de todos los fotogramas de audio y vídeo de entrada. Puede usarse para comprobaciones de igualdad sin tener que hacer una comparación binaria completa.

De forma predeterminada, los fotogramas de audio se convierten a audio raw de 16 bits con signo y los fotogramas de vídeo a vídeo raw antes de calcular el hash, pero también puede usarse la salida de conversiones explícitas a otros codecs. Se ignoran las marcas de tiempo. Usa la función de hash criptográfico SHA-256 de forma predeterminada, aunque admite otros algoritmos.

La salida del muxer consiste en una única línea con el formato: algo=hash, donde algo es una cadena corta que representa la función de hash usada, y hash es un número hexadecimal que representa el hash calculado.

hash algorithm

Usa la función de hash criptográfico especificada por la cadena algorithm. Los valores admitidos incluyen MD5, murmur3, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA160, SHA224, SHA256 (predeterminado), SHA512/224, SHA512/256, SHA384, SHA512, CRC32 y adler32.

4.44.1 Ejemplos

Para calcular el hash SHA-256 de la entrada convertida a audio y vídeo raw, y guardarlo en el archivo out.sha256:

ffmpeg -i INPUT -f hash out.sha256

Para imprimir un hash MD5 en stdout, use el siguiente comando:

ffmpeg -i INPUT -f hash -hash md5 -

Consulte también el muxer framehash.

4.45 hds

Muxer HTTP Dynamic Streaming (HDS).

HTTP dynamic streaming, o HDS, es un método de streaming de tasa de bits adaptable desarrollado por Adobe. HDS distribuye contenido de vídeo MP4 a través de conexiones HTTP. HDS puede usarse tanto para streaming bajo demanda como para streaming en directo.

Este muxer crea un manifiesto .f4m (Adobe Flash Media Manifest File), un archivo .abst (Adobe Bootstrap File) para cada flujo, y archivos de segmento en un directorio especificado como salida.

Un reproductor HDS debe acceder a ellos mediante HTTPS para poder reproducir el flujo generado.

4.45.1 Opciones

extra_window_size int

número de fragmentos que se conservan fuera del manifiesto antes de eliminarlos del disco

min_frag_duration microseconds

duración mínima del fragmento (en microsegundos); el valor predeterminado es 1 segundo (10000000)

remove_at_exit bool

elimina todos los fragmentos al finalizar si se establece en true

window_size int

número de fragmentos que se conservan en el manifiesto, si se establece en un valor distinto de 0. De forma predeterminada, todos los segmentos se conservan en el directorio de salida.

4.45.2 Ejemplo

Use ffmpeg para generar archivos HDS en el directorio output.hds a velocidad de tiempo real:

ffmpeg -re -i INPUT -f hds -b:v 200k output.hds

4.46 hls

Muxer HTTP Live Streaming de Apple que segmenta MPEG-TS de acuerdo con la especificación HTTP Live Streaming (HLS).

Crea un archivo de lista de reproducción y uno o más archivos de segmento. El nombre del archivo de salida especifica el nombre de la lista de reproducción.

De forma predeterminada, el muxer crea un archivo por cada segmento generado. Estos archivos tienen el mismo nombre que la lista de reproducción, seguido de un número secuencial y una extensión .ts.

Asegúrese de exigir un GOP cerrado al codificar y de ajustar el tamaño del GOP para que se adapte a la duración de segmento requerida.

Por ejemplo, para convertir un archivo de entrada con ffmpeg:

ffmpeg -i in.mkv -c:v h264 -flags +cgop -g 30 -hls_time 1 out.m3u8

Este ejemplo generará la lista de reproducción out.m3u8 y los archivos de segmento out0.ts, out1.ts, out2.ts, etc.

Consulte también el muxer segment, que ofrece una implementación de segmentador más genérica y flexible, y puede usarse para realizar la segmentación HLS.

4.46.1 Opciones

hls_init_time duration

Establece la duración objetivo inicial del segmento. El valor predeterminado es 0.

duration debe ser una especificación de duración de tiempo; consulte (ffmpeg-utils)la sección de duración de tiempo del manual ffmpeg-utils(1).

El segmento se cortará en el siguiente keyframe tras haber transcurrido este tiempo en la primera lista m3u8. Una vez llena la lista de reproducción inicial, ffmpeg cortará los segmentos con una duración igual a hls_time.

hls_time duration

Establece la duración objetivo del segmento. El valor predeterminado es 2.

duration debe ser una especificación de duración de tiempo; consulte (ffmpeg-utils)la sección de duración de tiempo del manual ffmpeg-utils(1). El segmento se cortará en el siguiente keyframe tras haber transcurrido este tiempo.

hls_list_size size

Establece el número máximo de entradas de la lista de reproducción. Si se establece en 0, el archivo de lista contendrá todos los segmentos. El valor predeterminado es 5.

hls_delete_threshold size

Establece el número de segmentos no referenciados que se conservan en disco antes de que hls_flags delete_segments los elimine. Auméntelo para permitir que los clientes que siguen conectados descarguen segmentos referenciados recientemente en la lista de reproducción. El valor predeterminado es 1, lo que significa que se eliminarán los segmentos anteriores a hls_list_size+1.

hls_start_number_source source

Inicia el número de secuencia de la lista de reproducción (#EXT-X-MEDIA-SEQUENCE) según la fuente especificada. A menos que se establezca hls_flags single_file, también especifica el origen de los números de secuencia iniciales de los nombres de archivo de segmento y de subtítulos. En cualquier caso, si se establece hls_flags append_list y el número de secuencia de la lista de reproducción leído es mayor que el número de secuencia inicial especificado, se usará ese valor como valor inicial.

Acepta los siguientes valores:

generic (default)

Establece los números iniciales según el valor de la opción start_number.

epoch

Establece el número inicial como los segundos transcurridos desde el epoch (1970-01-01 00:00:00).

epoch_us

Establece el número inicial como los microsegundos transcurridos desde el epoch (1970-01-01 00:00:00).

datetime

Establece el número inicial a partir de la fecha y hora actuales en formato YYYYmmddHHMMSS. Por ejemplo, 20161231235759.

start_number number

Inicia el número de secuencia de la lista de reproducción (#EXT-X-MEDIA-SEQUENCE) desde el número especificado cuando el valor de hls_start_number_source es generic (este es el caso predeterminado). A menos que se establezca hls_flags single_file, también especifica los números de secuencia iniciales de los nombres de archivo de segmento y de subtítulos. El valor predeterminado es 0.

hls_allow_cache bool

Establece explícitamente si el cliente PUEDE (1) o NO DEBE (0) cachear los segmentos multimedia.

hls_base_url baseurl

Añade baseurl a cada entrada de la lista de reproducción. Útil para generar listas de reproducción con rutas absolutas.

Tenga en cuenta que el número de secuencia de la lista de reproducción debe ser único para cada segmento, y no debe confundirse con el número de secuencia del nombre de archivo del segmento, que puede ser cíclico, por ejemplo si se especifica la opción wrap.

hls_segment_filename filename

Establece el nombre de archivo del segmento. A menos que la opción hls_flags se establezca con ‘single_file’, filename se usa como una cadena de formato a la que se añade el número de segmento.

Por ejemplo:

ffmpeg -i in.nut -hls_segment_filename 'file%03d.ts' out.m3u8

generará la lista de reproducción out.m3u8 y los archivos de segmento file000.ts, file001.ts, file002.ts, etc.

filename puede contener una ruta completa o relativa, pero solo la parte del nombre de archivo, sin ninguna ruta, se incluirá en la lista de segmentos m3u8. Si se especifica una ruta relativa, la ruta de los archivos de segmento creados será relativa al directorio de trabajo actual. Cuando se establece strftime_mkdir, el valor completo expandido de filename se escribirá en la lista de segmentos m3u8.

Cuando var_stream_map se establece con dos o más flujos de variantes, el patrón de filename debe contener la cadena "%v", que se expandirá a la posición del índice de flujo de variante en los nombres de archivo de segmento generados.

Por ejemplo:

ffmpeg -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
  -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \
  -hls_segment_filename 'file_%v_%03d.ts' out_%v.m3u8

generará los conjuntos de archivos de segmento de las listas de reproducción: file_0_000.ts, file_0_001.ts, file_0_002.ts, etc. y file_1_000.ts, file_1_001.ts, file_1_002.ts, etc.

La cadena "%v" puede estar presente en el nombre de archivo o en el nombre del último directorio que contiene el archivo, pero solo en uno de los dos. (Además, %v puede aparecer varias veces en el último subdirectorio o nombre de archivo). Si la cadena %v está presente en el nombre del directorio, se crean subdirectorios tras expandir el patrón del nombre del directorio. Esto permite crear segmentos correspondientes a distintos flujos de variantes en subdirectorios.

Por ejemplo:

ffmpeg -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
  -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \
  -hls_segment_filename 'vs%v/file_%03d.ts' vs%v/out.m3u8

generará los conjuntos de archivos de segmento de las listas de reproducción: vs0/file_000.ts, vs0/file_001.ts, vs0/file_002.ts, etc. y vs1/file_000.ts, vs1/file_001.ts, vs1/file_002.ts, etc.

strftime bool

Usa strftime() en filename para expandir el nombre de archivo del segmento con la hora local. El número de segmento también está disponible en este modo, pero para usarlo debe establecer ‘second_level_segment_index’ en hls_flag, y %%d será el especificador.

Por ejemplo:

ffmpeg -i in.nut -strftime 1 -hls_segment_filename 'file-%Y%m%d-%s.ts' out.m3u8

generará la lista de reproducción out.m3u8 y los archivos de segmento file-20160215-1455569023.ts, file-20160215-1455569024.ts, etc. Nota: en algunos sistemas/entornos el especificador %s no está disponible. Consulte la documentación de strftime().

Por ejemplo:

ffmpeg -i in.nut -strftime 1 -hls_flags second_level_segment_index -hls_segment_filename 'file-%Y%m%d-%%04d.ts' out.m3u8

generará la lista de reproducción out.m3u8 y los archivos de segmento file-20160215-0001.ts, file-20160215-0002.ts, etc.

strftime_mkdir bool

Usada junto con strftime, creará todos los subdirectorios presentes en los valores expandidos de la opción hls_segment_filename.

Por ejemplo:

ffmpeg -i in.nut -strftime 1 -strftime_mkdir 1 -hls_segment_filename '%Y%m%d/file-%Y%m%d-%s.ts' out.m3u8

creará un directorio 201560215 (si no existe), y a continuación generará la lista de reproducción out.m3u8 y los archivos de segmento 20160215/file-20160215-1455569023.ts, 20160215/file-20160215-1455569024.ts, etc.

Por ejemplo:

ffmpeg -i in.nut -strftime 1 -strftime_mkdir 1 -hls_segment_filename '%Y/%m/%d/file-%Y%m%d-%s.ts' out.m3u8

creará una jerarquía de directorios 2016/02/15 (si alguno de ellos no existe), y a continuación generará la lista de reproducción out.m3u8 y los archivos de segmento 2016/02/15/file-20160215-1455569023.ts, 2016/02/15/file-20160215-1455569024.ts, etc.

hls_segment_options options_list

Establece las opciones de formato de salida mediante una lista de parámetros clave=valor separados por :. Los valores que contengan el carácter especial : deben escaparse.

hls_key_info_file key_info_file

Usa la información de key_info_file para el cifrado del segmento. La primera línea de key_info_file especifica el URI de la clave escrito en la lista de reproducción. La URL de la clave se usa para acceder a la clave de cifrado durante la reproducción. La segunda línea especifica la ruta al archivo de clave usado para obtener la clave durante el proceso de cifrado. El archivo de clave se lee como un único array empaquetado de 16 octetos en formato binario. La tercera línea, opcional, especifica el vector de inicialización (IV) como una cadena hexadecimal que se usará en lugar del número de secuencia del segmento (predeterminado) para el cifrado. Los cambios en key_info_file provocarán el cifrado del segmento con la nueva clave/IV y una entrada en la lista de reproducción para el nuevo URI de clave/IV si hls_flags periodic_rekey está activado.

Formato del archivo de información de clave:

key URI
key file path
IV (optional)

Ejemplos de URI de clave:

http://server/file.key
/path/to/file.key
file.key

Ejemplos de rutas de archivo de clave:

file.key
/path/to/file.key

Ejemplo de IV:

0123456789ABCDEF0123456789ABCDEF

Ejemplo de archivo de información de clave:

http://server/file.key
/path/to/file.key
0123456789ABCDEF0123456789ABCDEF

Ejemplo de script de shell:

#!/bin/sh
BASE_URL=${1:-'.'}
openssl rand 16 > file.key
echo $BASE_URL/file.key > file.keyinfo
echo file.key >> file.keyinfo
echo $(openssl rand -hex 16) >> file.keyinfo
ffmpeg -f lavfi -re -i testsrc -c:v h264 -hls_flags delete_segments \
  -hls_key_info_file file.keyinfo out.m3u8

hls_enc bool

Activa (1) o desactiva (0) el cifrado AES128. Cuando está activado, cada segmento generado se cifra y la clave de cifrado se guarda como name.key de la lista de reproducción.

hls_enc_key key

Especifica una clave de 16 octetos para cifrar los segmentos; de forma predeterminada se genera de manera aleatoria.

hls_enc_key_url keyurl

Si se establece, keyurl se antepone en lugar de baseurl al nombre de archivo de la clave en la lista de reproducción.

hls_enc_iv iv

Especifica el vector de inicialización de 16 octetos para cada segmento, en lugar de los generados automáticamente.

hls_segment_type flags

Valores posibles:

‘mpegts’

Genera los archivos de segmento en formato MPEG-2 Transport Stream. Es compatible con todas las versiones de HLS.

‘fmp4’

Genera los archivos de segmento en formato MP4 fragmentado, similar a MPEG-DASH. Los archivos fmp4 pueden usarse en HLS versión 7 y posteriores.

hls_fmp4_init_filename filename

Establece el nombre de archivo para el archivo de cabecera de los fragmentos; el nombre predeterminado es init.mp4.

Cuando strftime está activado, filename se expande al nombre de archivo del segmento con la hora local.

Por ejemplo:

ffmpeg -i in.nut -hls_segment_type fmp4 -strftime 1 -hls_fmp4_init_filename "%s_init.mp4" out.m3u8

generará un init como este: 1602678741_init.mp4.

hls_fmp4_init_resend bool

Reenvía el archivo init cada vez que se actualiza el archivo m3u8; el valor predeterminado es 0.

Cuando var_stream_map se establece con dos o más flujos de variantes, el patrón de filename debe contener la cadena "%v", que especifica la posición del índice de flujo de variante en los nombres de archivo init generados. La cadena "%v" puede estar presente en el nombre de archivo o en el nombre del último directorio que contiene el archivo. Si la cadena está presente en el nombre del directorio, se crean subdirectorios tras expandir el patrón del nombre del directorio. Esto permite crear archivos init correspondientes a distintos flujos de variantes en subdirectorios.

hls_flags flags

Valores posibles:

‘single_file’

Si se establece esta flag, el muxer almacenará todos los segmentos en un único archivo MPEG-TS y usará rangos de bytes en la lista de reproducción. Las listas de reproducción HLS generadas de esta forma tendrán el número de versión 4.

Por ejemplo:

ffmpeg -i in.nut -hls_flags single_file out.m3u8

generará la lista de reproducción out.m3u8 y un único archivo de segmento, out.ts.

‘delete_segments’

Los archivos de segmento eliminados de la lista de reproducción se borran tras un período de tiempo igual a la duración del segmento más la duración de la lista de reproducción.

‘append_list’

Añade los nuevos segmentos al final de la lista de segmentos antigua y elimina #EXT-X-ENDLIST de la lista de segmentos antigua.

‘round_durations’

Redondea la información de duración de los segmentos en el archivo de lista de reproducción a valores enteros, en lugar de usar coma flotante. Si no hay otras funciones que requieran versiones superiores de HLS, esto permitirá que ffmpeg genere un m3u8 de HLS versión 2.

‘discont_start’

Añade la etiqueta #EXT-X-DISCONTINUITY a la lista de reproducción, antes de la información del primer segmento.

‘omit_endlist’

No añade la etiqueta EXT-X-ENDLIST al final de la lista de reproducción.

‘periodic_rekey’

El archivo especificado por hls_key_info_file se comprobará periódicamente para detectar actualizaciones de la información de cifrado. Asegúrese de reemplazar este archivo de forma atómica, incluido el archivo que contiene la clave de cifrado AES.

‘independent_segments’

Añade la etiqueta #EXT-X-INDEPENDENT-SEGMENTS a las listas de reproducción que tienen segmentos de vídeo, cuando se garantiza que todos los segmentos de esa lista comienzan con un keyframe.

‘iframes_only’

Añade la etiqueta #EXT-X-I-FRAMES-ONLY a las listas de reproducción que tienen segmentos de vídeo y que solo pueden reproducir fotogramas I en el modo #EXT-X-BYTERANGE.

‘split_by_time’

Permite que los segmentos comiencen en fotogramas distintos de los keyframes. Esto mejora el comportamiento en algunos reproductores cuando el tiempo entre keyframes es inconsistente, pero puede empeorarlo en otros, y puede causar algunas anomalías al buscar. Esta flag debe usarse junto con la opción hls_time.

‘program_date_time’

Genera etiquetas EXT-X-PROGRAM-DATE-TIME.

‘second_level_segment_index’

Permite usar índices de segmento como %%d en la expresión de la opción hls_segment_filename, además de valores de fecha/hora, cuando la opción strftime está activada. Para obtener números de ancho fijo con ceros finales, está disponible el formato %%0xd, donde x es el ancho requerido.

‘second_level_segment_size’

Permite usar tamaños de segmento (en bytes) como %%s en la expresión de la opción hls_segment_filename, además de valores de fecha/hora, cuando strftime está activado. Para obtener números de ancho fijo con ceros finales, está disponible el formato %%0xs, donde x es el ancho requerido.

‘second_level_segment_duration’

Permite usar la duración del segmento (calculada en microsegundos) como %%t en la expresión de la opción hls_segment_filename, además de valores de fecha/hora, cuando strftime está activado. Para obtener números de ancho fijo con ceros finales, está disponible el formato %%0xt, donde x es el ancho requerido.

Por ejemplo:

ffmpeg -i sample.mpeg \
   -f hls -hls_time 3 -hls_list_size 5 \
   -hls_flags second_level_segment_index+second_level_segment_size+second_level_segment_duration \
   -strftime 1 -strftime_mkdir 1 -hls_segment_filename "segment_%Y%m%d%H%M%S_%%04d_%%08s_%%013t.ts" stream.m3u8

generará segmentos como estos: segment_20170102194334_0003_00122200_0000003000000.ts, segment_20170102194334_0004_00120072_0000003000000.ts, etc.

‘temp_file’

Escribe los datos del segmento en filename.tmp y renombra a filename solo una vez que el segmento está completo.

Un servidor web que sirve los segmentos puede configurarse para rechazar solicitudes a *.tmp, con el fin de impedir el acceso a segmentos en curso antes de que se hayan añadido a la lista de reproducción m3u8.

Esta flag también afecta a cómo se crean los archivos de lista de reproducción m3u8. Si se establece esta flag, todos los archivos de lista de reproducción se escribirán en un archivo temporal y se renombrarán una vez completados, de forma similar a como se gestionan los segmentos. Pero las listas de reproducción con protocolo file y con hls_playlist_type distinto de ‘vod’ siempre se escriben en un archivo temporal, independientemente de esta flag.

Los archivos de lista de reproducción maestra especificados con master_pl_name, si los hay, con protocolo file, siempre se escriben en un archivo temporal independientemente de esta flag si el valor de master_pl_publish_rate es distinto de cero.

hls_playlist_type type

Si type es ‘event’, emite #EXT-X-PLAYLIST-TYPE:EVENT en la cabecera del m3u8. Esto fuerza hls_list_size a 0; a la lista de reproducción solo se le pueden añadir elementos.

Si type es ‘vod’, emite #EXT-X-PLAYLIST-TYPE:VOD en la cabecera del m3u8. Esto fuerza hls_list_size a 0; la lista de reproducción no debe cambiar.

method method

Usa el método HTTP indicado para crear los archivos hls.

Por ejemplo:

ffmpeg -re -i in.ts -f hls -method PUT http://example.com/live/out.m3u8

subirá todos los archivos de segmento mpegts al servidor HTTP usando el método HTTP PUT, y actualizará los archivos m3u8 cada refresh veces usando el mismo método. Tenga en cuenta que el servidor HTTP debe admitir el método indicado para subir archivos.

http_user_agent agent

Sobrescribe el campo User-Agent en la cabecera HTTP. Aplicable solo para salida HTTP.

var_stream_map stream_map

Especifica una cadena de mapeo que define cómo agrupar los flujos de audio, vídeo y subtítulos en distintos flujos de variantes. Los grupos de flujos de variantes se separan con espacios.

El formato de cadena esperado es como este: "a:0,v:0 a:1,v:1 ....". Aquí a:, v:, s: son las claves para especificar los flujos de audio, vídeo y subtítulos respectivamente. Los valores permitidos van de 0 a 9 (limitado solo por razones prácticas).

Cuando hay dos o más flujos de variantes, el patrón del nombre de archivo de salida debe contener la cadena "%v": esta cadena especifica la posición del índice de flujo de variante en los nombres de archivo de la lista de reproducción multimedia de salida. La cadena "%v" puede estar presente en el nombre de archivo o en el nombre del último directorio que contiene el archivo. Si la cadena está presente en el nombre del directorio, se crean subdirectorios tras expandir el patrón del nombre del directorio. Esto permite crear flujos de variantes en subdirectorios.

A continuación se muestran algunos ejemplos.

  • Crea dos flujos de variantes hls. El primer flujo de variante contendrá un flujo de vídeo con tasa de bits de 1000k y un flujo de audio con tasa de bits de 64k, y el segundo flujo de variante contendrá un flujo de vídeo con tasa de bits de 256k y un flujo de audio con tasa de bits de 32k. Aquí se crearán dos listas de reproducción multimedia con los nombres de archivo out_0.m3u8 y out_1.m3u8.

    ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
      -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \
      http://example.com/live/out_%v.m3u8
    
  • Si prefiere un texto significativo en lugar de índices en los nombres resultantes, puede especificar nombres para cada variante o para algunas de ellas. El siguiente ejemplo creará dos flujos de variantes hls como en el ejemplo anterior. Pero aquí se crearán las dos listas de reproducción multimedia con los nombres de archivo out_my_hd.m3u8 y out_my_sd.m3u8.

    ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
      -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0,name:my_hd v:1,a:1,name:my_sd" \
      http://example.com/live/out_%v.m3u8
    
  • Crea tres flujos de variantes hls. El primer flujo de variante será un flujo solo de vídeo con tasa de bits de 1000k, el segundo flujo de variante será un flujo solo de audio con tasa de bits de 64k, y el tercer flujo de variante será un flujo solo de vídeo con tasa de bits de 256k. Aquí se crearán tres listas de reproducción multimedia con los nombres de archivo out_0.m3u8, out_1.m3u8 y out_2.m3u8.

    ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k \
      -map 0:v -map 0:a -map 0:v -f hls -var_stream_map "v:0 a:0 v:1" \
      http://example.com/live/out_%v.m3u8
    
  • Crea los flujos de variantes en subdirectorios. Aquí, la primera lista de reproducción multimedia se crea en http://example.com/live/vs_0/out.m3u8 y la segunda en http://example.com/live/vs_1/out.m3u8.

    ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
      -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \
      http://example.com/live/vs_%v/out.m3u8
    
  • Crea dos flujos de variantes solo de audio y dos solo de vídeo. Además de la etiqueta #EXT-X-STREAM-INF para cada flujo de variante en la lista de reproducción maestra, también se añade la etiqueta #EXT-X-MEDIA para los dos flujos de variantes solo de audio, y estos se asocian a los dos flujos de variantes solo de vídeo con los nombres de grupo de audio ’aud_low’ y ’aud_high’. De forma predeterminada, se crea una única variante hls que contiene todos los flujos codificados.

    ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k -b:v:1 3000k  \
      -map 0:a -map 0:a -map 0:v -map 0:v -f hls \
      -var_stream_map "a:0,agroup:aud_low a:1,agroup:aud_high v:0,agroup:aud_low v:1,agroup:aud_high" \
      -master_pl_name master.m3u8 \
      http://example.com/live/out_%v.m3u8
    
  • Crea dos flujos de variantes solo de audio y uno solo de vídeo. Además de la etiqueta #EXT-X-STREAM-INF para cada flujo de variante en la lista de reproducción maestra, también se añade la etiqueta #EXT-X-MEDIA para los dos flujos de variantes solo de audio, y estos se asocian al flujo de variante solo de vídeo con el nombre de grupo de audio ’aud_low’, cuyo estado predeterminado es NO o YES. De forma predeterminada, se crea una única variante hls que contiene todos los flujos codificados.

    ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k \
      -map 0:a -map 0:a -map 0:v -f hls \
      -var_stream_map "a:0,agroup:aud_low,default:yes a:1,agroup:aud_low v:0,agroup:aud_low" \
      -master_pl_name master.m3u8 \
      http://example.com/live/out_%v.m3u8
    
  • Crea dos flujos de variantes solo de audio y uno solo de vídeo. Además de la etiqueta #EXT-X-STREAM-INF para cada flujo de variante en la lista de reproducción maestra, también se añade la etiqueta #EXT-X-MEDIA para los dos flujos de variantes solo de audio, y estos se asocian al flujo de variante solo de vídeo con el nombre de grupo de audio ’aud_low’, cuyo estado predeterminado es NO o YES; además, uno de los audios tiene como idioma ENG y el otro CHN. De forma predeterminada, se crea una única variante hls que contiene todos los flujos codificados.

    ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k \
      -map 0:a -map 0:a -map 0:v -f hls \
      -var_stream_map "a:0,agroup:aud_low,default:yes,language:ENG a:1,agroup:aud_low,language:CHN v:0,agroup:aud_low" \
      -master_pl_name master.m3u8 \
      http://example.com/live/out_%v.m3u8
    
  • Crea un único flujo de variante. Añade la etiqueta #EXT-X-MEDIA con TYPE=SUBTITLES en la lista de reproducción maestra, con el nombre de grupo de subtítulos webvtt ’subtitle’ y un nombre de subtítulo opcional, por ejemplo ’English’. Asegúrese de que el archivo de entrada tenga al menos un flujo de subtítulos de texto.

    ffmpeg -y -i input_with_subtitle.mkv \
     -b:v:0 5250k -c:v h264 -pix_fmt yuv420p -profile:v main -level 4.1 \
     -b:a:0 256k \
     -c:s webvtt -c:a mp2 -ar 48000 -ac 2 -map 0:v -map 0:a:0 -map 0:s:0 \
     -f hls -var_stream_map "v:0,a:0,s:0,sgroup:subtitle,sname:English" \
     -master_pl_name master.m3u8 -t 300 -hls_time 10 -hls_init_time 4 -hls_list_size \
     10 -master_pl_publish_rate 10 -hls_flags \
     delete_segments+discont_start+split_by_time ./tmp/video.m3u8
    

cc_stream_map cc_stream_map

Cadena de mapeo que especifica distintos grupos de closed captions y sus atributos. Los grupos de flujos de closed captions se separan con espacios.

El formato de cadena esperado es como este: "ccgroup:,instreamid:,language: ....". ’ccgroup’ e ’instreamid’ son atributos obligatorios. ’language’ es un atributo opcional.

Los grupos de closed captions configurados con esta opción se asocian a distintos flujos de variantes proporcionando el mismo nombre ’ccgroup’ en la cadena var_stream_map.

Por ejemplo:

ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \
  -a53cc:0 1 -a53cc:1 1 \
  -map 0:v -map 0:a -map 0:v -map 0:a -f hls \
  -cc_stream_map "ccgroup:cc,instreamid:CC1,language:en ccgroup:cc,instreamid:CC2,language:sp" \
  -var_stream_map "v:0,a:0,ccgroup:cc v:1,a:1,ccgroup:cc" \
  -master_pl_name master.m3u8 \
  http://example.com/live/out_%v.m3u8

añadirá dos etiquetas #EXT-X-MEDIA con TYPE=CLOSED-CAPTIONS en la lista de reproducción maestra para los INSTREAM-ID ’CC1’ y ’CC2’. Además, añadirá el atributo CLOSED-CAPTIONS con el nombre de grupo ’cc’ para los dos flujos de variantes de salida.

Si no se establece var_stream_map, el primer ccgroup disponible en cc_stream_map se asocia al flujo de variante de salida.

Por ejemplo:

ffmpeg -re -i in.ts -b:v 1000k -b:a 64k -a53cc 1 -f hls \
  -cc_stream_map "ccgroup:cc,instreamid:CC1,language:en" \
  -master_pl_name master.m3u8 \
  http://example.com/live/out.m3u8

esto añadirá la etiqueta #EXT-X-MEDIA con TYPE=CLOSED-CAPTIONS en la lista de reproducción maestra con el nombre de grupo ’cc’, idioma ’en’ (inglés) e INSTREAM-ID ’CC1’. Además, añadirá el atributo CLOSED-CAPTIONS con el nombre de grupo ’cc’ para el flujo de variante de salida.

master_pl_name name

Crea una lista de reproducción maestra HLS con el nombre indicado.

Por ejemplo:

ffmpeg -re -i in.ts -f hls -master_pl_name master.m3u8 http://example.com/live/out.m3u8

crea una lista de reproducción maestra HLS con el nombre master.m3u8, publicada en http://example.com/live/.

master_pl_publish_rate count

Publica la lista de reproducción maestra repetidamente cada vez que transcurre el número de intervalos de segmento especificado.

Por ejemplo:

ffmpeg -re -i in.ts -f hls -master_pl_name master.m3u8 \
-hls_time 2 -master_pl_publish_rate 30 http://example.com/live/out.m3u8

crea una lista de reproducción maestra HLS con el nombre master.m3u8 y sigue publicándola repetidamente cada 30 segmentos, es decir, cada 60s.

http_persistent bool

Usa conexiones HTTP persistentes. Aplicable solo para salida HTTP.

timeout timeout

Establece el tiempo de espera para las operaciones de E/S de socket. Aplicable solo para salida HTTP.

ignore_io_errors bool

Ignora los errores de E/S durante la apertura, escritura y eliminación. Útil para ejecuciones de larga duración con salida de red.

headers headers

Establece cabeceras HTTP personalizadas; puede sobrescribir las cabeceras predeterminadas integradas. Aplicable solo para salida HTTP.

4.47 iamf

Muxer de Immersive Audio Model and Formats (IAMF).

IAMF se usa para ofrecer contenido de audio inmersivo destinado a su reproducción en una amplia variedad de dispositivos, tanto en aplicaciones de streaming como fuera de línea. Estas aplicaciones incluyen la transmisión de audio por internet, los servicios de multidifusión/radiodifusión, la descarga de archivos, los videojuegos, las comunicaciones, la realidad virtual y aumentada, entre otras. En estas aplicaciones, el audio puede reproducirse en una amplia variedad de dispositivos, por ejemplo auriculares, teléfonos móviles, tabletas, televisores, barras de sonido, sistemas de cine en casa y pantallas grandes.

Este formato fue impulsado y diseñado por la Alliance for Open Media.

Para más información sobre este formato, consulte https://aomedia.org/iamf/.

4.48 ico

Muxer de archivos ICO.

El formato de archivo de iconos de Microsoft (ICO) tiene algunas limitaciones estrictas que conviene tener en cuenta:

  • El tamaño no puede superar los 256 píxeles en ninguna dimensión
  • Solo se pueden almacenar imágenes BMP y PNG
  • Si se usa una imagen BMP, debe tener uno de los siguientes pixel formats:

    BMP Bit Depth      FFmpeg Pixel Format
    1bit               pal8
    4bit               pal8
    8bit               pal8
    16bit              rgb555le
    24bit              bgr24
    32bit              bgra
    
  • Si se usa una imagen BMP, debe utilizar la cabecera DIB BITMAPINFOHEADER

  • Si se usa una imagen PNG, debe utilizar el pixel format rgba

4.49 ilbc

Muxer raw de Internet Low Bitrate Codec (iLBC).

Acepta un único flujo de audio ‘ilbc’.

4.50 image2, image2pipe

Muxer de archivos de imagen.

El muxer ‘image2’ escribe fotogramas de vídeo en archivos de imagen.

Los nombres de archivo de salida se especifican mediante un patrón, que puede usarse para generar series de archivos numerados secuencialmente. El patrón puede contener la cadena "%d" o "%0Nd"; esta cadena indica la posición de los caracteres que representan la numeración en los nombres de archivo. Si se usa la forma "%0Nd", el número representado en cada nombre de archivo se rellena con ceros hasta N dígitos. El carácter literal ’%’ puede especificarse en el patrón con la cadena "%%".

Si el patrón contiene "%d" o "%0Nd", el primer nombre de archivo de la lista especificada contendrá el número 1, y los siguientes números serán secuenciales.

El patrón puede contener un sufijo que se usa para determinar automáticamente el formato de los archivos de imagen a escribir.

Por ejemplo, el patrón "img-%03d.bmp" especificará una secuencia de nombres de archivo de la forma img-001.bmp, img-002.bmp, ..., img-010.bmp, etc. El patrón "img%%-%d.jpg" especificará una secuencia de nombres de archivo de la forma img%-1.jpg, img%-2.jpg, ..., img%-10.jpg, etc.

El muxer de imagen admite el formato de archivo de imagen .Y.U.V. Este formato es especial porque cada fotograma de imagen consta de tres archivos, uno por cada componente YUV420P. Para leer o escribir este formato de archivo de imagen, indique el nombre del archivo ’.Y’. El muxer abrirá automáticamente los archivos ’.U’ y ’.V’ según sea necesario.

El muxer ‘image2pipe’ acepta las mismas opciones que el muxer ‘image2’, pero omite la verificación y expansión del patrón, ya que está pensado para escribir en la salida del comando en lugar de en un archivo almacenado real.

4.50.1 Opciones

frame_pts bool

Si se fija en 1, expande el nombre de archivo con el PTS (presentation time stamp) del paquete. El valor predeterminado es 0.

start_number count

Inicia la secuencia a partir del número especificado. El valor predeterminado es 1.

update bool

Si se fija en 1, el nombre de archivo siempre se interpretará como un simple nombre de archivo, no como un patrón, y el archivo correspondiente se sobrescribirá continuamente con nuevas imágenes. El valor predeterminado es 0.

strftime bool

Si se fija en 1, expande el nombre de archivo con información de fecha y hora obtenida de strftime(). El valor predeterminado es 0.

atomic_writing bool

Escribe la salida en un archivo temporal, que se renombra al nombre de archivo de destino una vez completada la escritura. Está deshabilitado de forma predeterminada.

protocol_opts options_list

Establece las opciones de protocolo como una lista de parámetros clave=valor separados por :. Los valores que contengan el carácter especial : deben escaparse.

4.50.2 Ejemplos

  • Usar ffmpeg para crear una secuencia de archivos img-001.jpeg, img-002.jpeg, ..., tomando una imagen por segundo del vídeo de entrada:
    ffmpeg -i in.avi -fps_mode cfr -r 1 -f image2 'img-%03d.jpeg'
    

Tenga en cuenta que con ffmpeg, si el formato no se especifica con la opción -f y el nombre de archivo de salida especifica un formato de archivo de imagen, el muxer image2 se selecciona automáticamente, por lo que el comando anterior puede escribirse como:

    ffmpeg -i in.avi -fps_mode cfr -r 1 'img-%03d.jpeg'

Tenga en cuenta también que el patrón no tiene por qué contener "%d" o "%0Nd"; por ejemplo, para crear un único archivo de imagen img.jpeg a partir del inicio del vídeo de entrada, puede usar el comando:

    ffmpeg -i in.avi -f image2 -frames:v 1 img.jpeg
  • La opción strftime permite expandir el nombre de archivo con información de fecha y hora. Consulte la documentación de la función strftime() para conocer la sintaxis.

Para generar archivos de imagen a partir del patrón strftime() "%Y-%m-%d_%H-%M-%S", puede usarse el siguiente comando ffmpeg:

    ffmpeg -f v4l2 -r 1 -i /dev/video0 -f image2 -strftime 1 "%Y-%m-%d_%H-%M-%S.jpg"
  • Establecer el nombre de archivo con el PTS del fotograma actual:

    ffmpeg -f v4l2 -r 1 -i /dev/video0 -copyts -f image2 -frame_pts true %d.jpg
    
  • Publicar el contenido de su escritorio directamente en un servidor WebDAV cada segundo:

    ffmpeg -f x11grab -framerate 1 -i :0.0 -q:v 6 -update 1 -protocol_opts method=PUT http://example.com/desktop.jpg
    

4.51 ircam

Muxer de formato Berkeley / IRCAM / CARL Sound Filesystem (BICSF).

El Berkeley/IRCAM/CARL Sound Format, desarrollado en la década de 1980, es el resultado de la fusión de varios formatos y sistemas de archivo de sonido anteriores, entre ellos el sistema csound desarrollado por el Dr. Gareth Loy en el Computer Audio Research Lab (CARL) de la UC San Diego, el sistema de archivos de sonido IRCAM desarrollado por Rob Gross y Dan Timis en el Institut de Recherche et Coordination Acoustique / Musique de París, y el Berkeley Fast Filesystem.

Se desarrolló inicialmente como parte del Berkeley/IRCAM/CARL Sound Filesystem, un conjunto de programas diseñado para implementar un sistema de archivos para aplicaciones de audio que se ejecutaran bajo Berkeley UNIX. Fue especialmente popular en centros académicos de investigación musical, y se empleó en numerosas ocasiones en la creación de las primeras composiciones generadas por ordenador.

Este muxer acepta un único flujo de audio que contiene datos PCM.

4.52 ivf

Muxer On2 IVF.

IVF fue desarrollado por On2 Technologies (antes conocida como Duck Corporation) para almacenar codecs desarrollados internamente.

Este muxer acepta un único flujo de vídeo ‘vp8’, ‘vp9’ o ‘av1’.

4.53 jacosub

Muxer del formato de subtítulos JACOsub.

Este muxer acepta un único flujo de subtítulos ‘jacosub’.

Para más información sobre el formato, consulte http://unicorn.us.com/jacosub/jscripts.html.

4.54 kvag

Muxer VAG de Simon & Schuster Interactive.

Este container VAG personalizado lo usan algunos juegos de Simon & Schuster Interactive, como "Real War" y "Real War: Rogue States".

Este muxer acepta un único flujo de audio ‘adpcm_ima_ssi’.

4.55 lc3

Bluetooth SIG Low Complexity Communication Codec audio (LC3), o ETSI TS 103 634 Low Complexity Communication Codec plus (LC3plus).

Este muxer acepta un único flujo de audio ‘lc3’.

4.56 lrc

Muxer del formato de archivo de letras LRC.

LRC (abreviatura de LyRiCs) es un formato de archivo informático que sincroniza la letra de una canción con un archivo de audio, como MP3, Vorbis o MIDI.

Este muxer acepta un único flujo de subtítulos ‘subrip’ o ‘text’.

4.56.1 Opciones

precision number

Establece el número de dígitos decimales usados para la parte fraccionaria (subsegundo) de las marcas de tiempo. El rango va de 1 a 6. El valor predeterminado es 2, es decir, centisegundos.

4.56.2 Metadatos

Las siguientes etiquetas de metadatos se convierten en los metadatos correspondientes del formato:

title album artist author creator encoder encoder_version

Si ‘encoder_version’ no se establece explícitamente, se fija automáticamente en la versión de libavformat.

4.57 matroska

Muxer de container Matroska.

Este muxer implementa las especificaciones de los containers matroska y webm.

4.57.1 Metadatos

Los ajustes de metadatos reconocidos por este muxer son:

title

Establece el nombre de título asignado a una única pista. Se asigna al elemento FileDescription de un flujo escrito como archivo adjunto.

language

Especifica el idioma de la pista en la forma de idiomas de Matroska.

El idioma puede expresarse mediante las 3 letras bibliográficas de la forma ISO-639-2 (ISO 639-2/B) (como "fre" para el francés), o mediante un código de idioma combinado con un código de país para variantes regionales de idiomas (como "fre-ca" para el francés canadiense).

stereo_mode

Establece la disposición del vídeo 3D estéreo de dos vistas en una única pista de vídeo.

Se reconocen los siguientes valores:

‘mono’

el vídeo no es estéreo

‘left_right’

Ambas vistas se disponen una junto a la otra; la vista del ojo izquierdo está a la izquierda

‘bottom_top’

Ambas vistas se disponen en orientación de arriba a abajo; la vista del ojo izquierdo está abajo

‘top_bottom’

Ambas vistas se disponen en orientación de arriba a abajo; la vista del ojo izquierdo está arriba

‘checkerboard_rl’

Cada vista se dispone en un patrón intercalado de tablero de ajedrez; la vista del ojo izquierdo va primero

‘checkerboard_lr’

Cada vista se dispone en un patrón intercalado de tablero de ajedrez; la vista del ojo derecho va primero

‘row_interleaved_rl’

Cada vista se compone mediante intercalado por filas; la vista del ojo derecho es la primera fila

‘row_interleaved_lr’

Cada vista se compone mediante intercalado por filas; la vista del ojo izquierdo es la primera fila

‘col_interleaved_rl’

Ambas vistas se disponen mediante intercalado por columnas; la vista del ojo derecho es la primera columna

‘col_interleaved_lr’

Ambas vistas se disponen mediante intercalado por columnas; la vista del ojo izquierdo es la primera columna

‘anaglyph_cyan_red’

Todos los fotogramas están en formato anaglifo, visibles mediante filtros rojo-cian

‘right_left’

Ambas vistas se disponen una junto a la otra; la vista del ojo derecho está a la izquierda

‘anaglyph_green_magenta’

Todos los fotogramas están en formato anaglifo, visibles mediante filtros verde-magenta

‘block_lr’

Ambos ojos entrelazados en un bloque; la vista del ojo izquierdo va primero

‘block_rl’

Ambos ojos entrelazados en un bloque; la vista del ojo derecho va primero

Por ejemplo, un clip WebM 3D puede crearse con la siguiente línea de comandos:

ffmpeg -i sample_left_right_clip.mpg -an -c:v libvpx -metadata stereo_mode=left_right -y stereo_clip.webm

4.57.2 Opciones

reserve_index_space size

De forma predeterminada, este muxer escribe el índice de búsqueda (llamado cues en la terminología de Matroska) al final del archivo, porque no puede saber de antemano cuánto espacio dejar para el índice al principio del archivo. Sin embargo, para algunos casos de uso (por ejemplo, streaming donde la búsqueda es posible pero lenta) resulta útil colocar el índice al principio del archivo.

Si esta opción se fija en un valor distinto de cero, el muxer reservará size bytes de espacio en la cabecera del archivo e intentará escribir ahí los cues cuando finalice el muxado. Si el espacio reservado no es suficiente, no se escribirán Cues, el archivo se finalizará y la escritura del trailer devolverá un error. Un tamaño seguro para la mayoría de los casos de uso debería ser de unos 50kB por hora de vídeo.

Tenga en cuenta que los cues solo se escriben si la salida permite búsqueda, y esta opción no tiene efecto si no la permite.

cues_to_front bool

Si se establece, el muxer escribirá el índice al principio del archivo desplazando los datos principales si es necesario. Esto puede combinarse con reserve_index_space, en cuyo caso los datos solo se desplazan si el espacio reservado inicialmente resulta insuficiente.

Esta opción se ignora si la salida no permite búsqueda.

cluster_size_limit size

Almacena como máximo la cantidad de bytes indicada en un cluster.

Si no se especifica, el límite se fija automáticamente a un valor fijo razonable.

cluster_time_limit duration

Almacena como máximo el número de milisegundos indicado en un cluster.

Si no se especifica, el límite se fija automáticamente a un valor fijo razonable.

dash bool

Crea un archivo WebM conforme a la especificación WebM DASH. De forma predeterminada está fijado en false.

dash_track_number index

Número de pista para el flujo DASH. De forma predeterminada está fijado en 1.

live bool

Escribe los archivos asumiendo que se trata de un flujo en directo. De forma predeterminada está fijado en false.

allow_raw_vfw bool

Permite el modo raw VFW. De forma predeterminada está fijado en false.

flipped_raw_rgb bool

Si se fija en true, almacena una altura positiva para los bitmaps RGB en bruto, lo que indica que el bitmap se almacena de abajo hacia arriba. Tenga en cuenta que esta opción no invierte el bitmap, lo cual debe hacerse manualmente de antemano, por ejemplo mediante el filtro ‘vflip’. El valor predeterminado es false e indica que el bitmap se almacena de arriba hacia abajo.

write_crc32 bool

Escribe un elemento CRC32 dentro de cada elemento de Nivel 1. De forma predeterminada está fijado en true. Esta opción se ignora para WebM.

default_mode mode

Controla cómo se fijará el FlagDefault de las pistas de salida. Influye en qué pistas deberían reproducir los reproductores de forma predeterminada. El modo predeterminado es ‘passthrough’.

‘infer’

Toda pista cuya disposición sea default tendrá el FlagDefault fijado. Además, para cada tipo de pista (audio, vídeo o subtítulos), si no existe ninguna pista con disposición default de ese tipo, se marcará como predeterminada la primera pista de ese tipo (si existe). Esto garantiza que la marca predeterminada se fije de forma sensata incluso si la entrada procede de containers que carecen del concepto de pistas predeterminadas.

‘infer_no_subs’

Este modo es igual que infer, salvo que si no existe ninguna pista de subtítulos con disposición default, no se marcará ninguna pista de subtítulos como predeterminada.

‘passthrough’

En este modo, el FlagDefault se fija si y solo si la marca AV_DISPOSITION_DEFAULT está fijada en la disposición del flujo correspondiente.

4.58 md5

Formato de prueba MD5.

Esta es una variante del muxer hash. A diferencia de aquel, usa de forma predeterminada la función hash MD5.

Véase también los muxers hash y framemd5.

4.58.1 Ejemplos

  • Para calcular el hash MD5 de la entrada convertida a audio y vídeo en bruto, y almacenarlo en el archivo out.md5:

    ffmpeg -i INPUT -f md5 out.md5
    
  • Para imprimir el hash MD5 en stdout:

    ffmpeg -i INPUT -f md5 -
    

4.59 mcc

Muxer para archivos MacCaption MCC; admite las versiones 1.0 y 2.0 de MCC. Los archivos MCC almacenan datos VANC, que pueden incluir subtítulos ocultos (EIA-608 y CEA-708), código de tiempo auxiliar, datos de pan-scan, etc.

4.59.1 Opciones

Las opciones del muxer son:

override_time_code_rate

Sobrescribe el valor de Time Code Rate en la salida. De forma predeterminada intenta deducirlo a partir del time_base del flujo, lo cual a menudo no funciona.

use_u_alias

Usa el alias U para la secuencia de bytes E1h 00h 00h 00h. Deshabilitado de forma predeterminada porque algunos archivos .mcc no coinciden en si tiene 2 o 3 bytes cero.

mcc_version

La versión del formato de archivo MCC. Debe ser 1 o 2; el valor predeterminado es 2.

creation_program

El programa de creación. El valor predeterminado es esta versión de FFmpeg.

creation_time

La hora de creación. El valor predeterminado es la hora actual.

4.59.2 Ejemplos

  • Extraer un flujo SMPTE_436M_ANC de MXF a partir de un archivo MXF y escribirlo en un archivo MCC a 30 fps.

    ffmpeg -i input.mxf -c copy -map 0:d -override_time_code_rate 30 out.mcc
    
  • Extraer subtítulos ocultos EIA-608/CTA-708 de un archivo .mp4 y escribirlos en un archivo MCC a 29.97 fps.

    ffmpeg -f lavfi -i "movie=input.mp4[out+subcc]" -c:s copy -map 0:s -override_time_code_rate 30000/1001 out.mcc
    

4.60 microdvd

Muxer del formato de subtítulos MicroDVD.

Este muxer acepta un único flujo de subtítulos ‘microdvd’.

4.61 mmf

Muxer del formato Synthetic music Mobile Application Format (SMAF).

SMAF es un formato de datos musicales especificado por Yamaha para dispositivos electrónicos portátiles, como teléfonos móviles y asistentes digitales personales.

Este muxer acepta un único flujo de audio ‘adpcm_yamaha’.

4.62 mp3

El muxer MP3 escribe un flujo MP3 en bruto con las siguientes funciones opcionales:

  • Una cabecera de metadatos ID3v2 al principio (habilitada de forma predeterminada). Se admiten las versiones 2.3 y 2.4; la opción privada id3v2_version controla cuál se usa (3 o 4). Al fijar id3v2_version en 0 se deshabilita por completo la cabecera ID3v2.

El muxer admite escribir imágenes adjuntas (frames APIC) en la cabecera ID3v2. Las imágenes se proporcionan al muxer en forma de un flujo de vídeo con un único paquete. Puede haber cualquier número de esos flujos; cada uno corresponderá a un único frame APIC. Las etiquetas de metadatos de flujo title y comment se asignan respectivamente a la descripción APIC y al tipo de imagen. Véase http://id3.org/id3v2.4.0-frames para los tipos de imagen permitidos.

Tenga en cuenta que los frames APIC deben escribirse al principio, por lo que el muxer almacenará en búfer los fotogramas de audio hasta obtener todas las imágenes. Por tanto, se recomienda proporcionar las imágenes lo antes posible para evitar un almacenamiento en búfer excesivo.

  • Un frame Xing/LAME justo después de la cabecera ID3v2 (si está presente). Está habilitado de forma predeterminada, pero solo se escribirá si la salida permite búsqueda. La opción privada write_xing puede usarse para deshabilitarlo. El frame contiene diversa información que puede ser útil para el decoder, como la duración del audio o el retardo del encoder.
  • Una etiqueta ID3v1 heredada al final del archivo (deshabilitada de forma predeterminada). Puede habilitarse con la opción privada write_id3v1, pero, dado que sus capacidades son muy limitadas, no se recomienda su uso.

Ejemplos:

Escribir un mp3 con una cabecera ID3v2.3 y un pie ID3v1:

ffmpeg -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3

Para adjuntar una imagen a un archivo mp3, seleccione tanto el flujo de audio como el de imagen con map:

ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1
-metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3

Escribir un MP3 "limpio" sin ninguna función adicional:

ffmpeg -i input.wav -write_xing 0 -id3v2_version 0 out.mp3

4.63 mpegts

Muxer de flujo de transporte MPEG.

Este muxer implementa ISO 13818-1 y parte de ETSI EN 300 468.

Los ajustes de metadatos reconocidos en el muxer mpegts son service_provider y service_name. Si no se establecen, el valor predeterminado de service_provider es ‘FFmpeg’ y el de service_name es ‘Service01’.

4.63.1 Opciones

Las opciones del muxer son:

mpegts_transport_stream_id integer

Establece el ‘transport_stream_id’. Identifica un transpondedor en DVB. El valor predeterminado es 0x0001.

mpegts_original_network_id integer

Establece el ‘original_network_id’. Es el identificador único de una red en DVB. Su uso principal es la identificación única de un servicio a través de la ruta ‘Original_Network_ID, Transport_Stream_ID’. El valor predeterminado es 0xff01.

mpegts_service_id integer

Establece el ‘service_id’, también conocido como programa en DVB. El valor predeterminado es 0x0001.

mpegts_service_type integer

Establece el ‘service_type’ del programa. El valor predeterminado es digital_tv. Acepta las siguientes opciones:

‘hex_value’

Cualquier valor hexadecimal entre 0x01 y 0xff, según se define en ETSI 300 468.

‘digital_tv’

Servicio de TV digital.

‘digital_radio’

Servicio de radio digital.

‘teletext’

Servicio de teletexto.

‘advanced_codec_digital_radio’

Servicio de radio digital con codec avanzado.

‘mpeg2_digital_hdtv’

Servicio de HDTV digital MPEG2.

‘advanced_codec_digital_sdtv’

Servicio de SDTV digital con codec avanzado.

‘advanced_codec_digital_hdtv’

Servicio de HDTV digital con codec avanzado.

‘hevc_digital_hdtv’

Servicio de televisión digital HEVC.

mpegts_pmt_start_pid integer

Establece el primer PID para las PMT. El valor predeterminado es 0x1000, el mínimo es 0x0020 y el máximo es 0x1ffa. Esta opción no tiene efecto en el modo m2ts, donde el PID de la PMT es fijo en 0x0100.

mpegts_start_pid integer

Establece el primer PID para los flujos elementales. El valor predeterminado es 0x0100, el mínimo es 0x0020 y el máximo es 0x1ffa. Esta opción no tiene efecto en el modo m2ts, donde los PID de los flujos elementales son fijos.

mpegts_m2ts_mode boolean

Habilita el modo m2ts si se fija en 1. El valor predeterminado es -1, que deshabilita el modo m2ts.

muxrate integer

Establece una tasa de muxado constante. El valor predeterminado es VBR.

pes_payload_size integer

Establece el payload mínimo de paquete PES en bytes. El valor predeterminado es 2930.

mpegts_flags flags

Establece los flags de mpegts. Acepta las siguientes opciones:

‘resend_headers’

Reemite PAT/PMT antes de escribir el siguiente paquete.

‘latm’

Usa la empaquetización LATM para AAC.

‘pat_pmt_at_frames’

Reemite PAT y PMT en cada fotograma de vídeo.

‘system_b’

Se ajusta al Sistema B (DVB) en lugar del Sistema A (ATSC).

‘initial_discontinuity’

Marca el paquete inicial de cada flujo como discontinuidad.

‘nit’

Emite la tabla NIT.

‘omit_rai’

Deshabilita la escritura del indicador de acceso aleatorio.

mpegts_copyts boolean

Conserva las marcas de tiempo originales si el valor se fija en 1. El valor predeterminado es -1, lo que hace que las marcas de tiempo se desplacen para que empiecen en 0.

omit_video_pes_length boolean

Omite la longitud del paquete PES para los paquetes de vídeo. El valor predeterminado es 1 (verdadero).

pcr_period integer

Sobrescribe el tiempo predeterminado de retransmisión de PCR en milisegundos. El valor predeterminado es -1, lo que significa que el intervalo de PCR se determinará automáticamente: se usan 20 ms para flujos CBR, y el múltiplo más alto de la duración del fotograma que sea inferior a 100 ms se usa para flujos VBR.

pat_period duration

Tiempo máximo en segundos entre tablas PAT/PMT. El valor predeterminado es 0.1.

sdt_period duration

Tiempo máximo en segundos entre tablas SDT. El valor predeterminado es 0.5.

nit_period duration

Tiempo máximo en segundos entre tablas NIT. El valor predeterminado es 0.5.

tables_version integer

Establece la versión de PAT, PMT, SDT y NIT (el valor predeterminado es 0; los valores válidos van de 0 a 31, ambos inclusive). Esta opción permite actualizar la estructura del flujo para que un consumidor estándar pueda detectar el cambio. Para ello, reabra el AVFormatContext de salida (en caso de uso de la API) o reinicie la instancia de ffmpeg, cambiando cíclicamente el valor de tables_version:

ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
...
ffmpeg -i source3.ts -codec copy -f mpegts -tables_version 31 udp://1.1.1.1:1111
ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
...

4.63.2 Ejemplo

ffmpeg -i file.mpg -c copy \
     -mpegts_original_network_id 0x1122 \
     -mpegts_transport_stream_id 0x3344 \
     -mpegts_service_id 0x5566 \
     -mpegts_pmt_start_pid 0x1500 \
     -mpegts_start_pid 0x150 \
     -metadata service_provider="Some provider" \
     -metadata service_name="Some Channel" \
     out.ts

4.64 mxf, mxf_d10, mxf_opatom

Muxer MXF.

4.64.1 Opciones

Las opciones del muxer son:

store_user_comments bool

Establece si deben almacenarse los comentarios de usuario cuando estén disponibles, o nunca. IRT D-10 no permite comentarios de usuario. Por tanto, el valor predeterminado es escribirlos para mxf y mxf_opatom, pero no para mxf_d10

4.65 null

Muxer null.

Este muxer no genera ningún archivo de salida; resulta útil principalmente para pruebas o benchmarking.

Por ejemplo, para medir el rendimiento de la decodificación con ffmpeg puede usar el comando:

ffmpeg -benchmark -i INPUT -f null out.null

Tenga en cuenta que el comando anterior no lee ni escribe el archivo out.null, pero la sintaxis de ffmpeg exige especificar el archivo de salida.

Alternativamente, puede escribir el comando como:

ffmpeg -benchmark -i INPUT -f null -

4.66 nut

-syncpoints flags

Cambia el uso de syncpoints en nut:

default usa las ayudas de búsqueda estándar de baja sobrecarga. none no usa los syncpoints en absoluto, lo que reduce la sobrecarga pero hace que el flujo no admita búsqueda;

No se recomienda usar esta opción, ya que los archivos resultantes son muy sensibles a los daños y no es posible la búsqueda. Además, en general, la sobrecarga de los syncpoints es insignificante. Tenga en cuenta que -write_index 0 puede usarse para deshabilitar todas las tablas de datos crecientes, lo que permite muxar flujos interminables con memoria limitada y sin estos inconvenientes.

timestamped extiende el syncpoint con un campo de reloj de pared.

Los flags none y timestamped son experimentales.

-write_index bool

Escribe el índice al final; de forma predeterminada se escribe un índice.

ffmpeg -i INPUT -f_strict experimental -syncpoints none - | processor

4.67 ogg

Muxer de container Ogg.

-page_duration duration

Duración de página preferida, en microsegundos. El muxer intentará crear páginas que duren aproximadamente duration microsegundos. Esto permite al usuario encontrar un equilibrio entre la granularidad de búsqueda y la sobrecarga del container. El valor predeterminado es 1 segundo. Un valor de 0 llenará todos los segmentos, haciendo las páginas lo más grandes posible. Un valor de 1 hará que, en la mayoría de las situaciones, se use efectivamente 1 paquete por página, lo que da una granularidad de búsqueda pequeña a costa de una sobrecarga adicional del container.

-serial_offset value

Valor de serie a partir del cual se fija el número de serie de los flujos. Fijarlo en valores distintos y suficientemente grandes garantiza que los archivos ogg producidos puedan encadenarse de forma segura.

4.68 pdv

Muxer Playdate Video.

Este muxer escribe el container de vídeo Playdate usado por el SDK de Playdate de Panic. Requiere una salida que admita búsqueda y un único flujo de vídeo PDV.

max_frames frames

Reserva espacio para, como máximo, frames fotogramas de vídeo en la cabecera del archivo. Esta opción es obligatoria.

4.69 rcwt

RCWT (Raw Captions With Time) es un formato nativo de ccextractor, una herramienta de código abierto muy usada para procesar fuentes de subtítulos ocultos 608/708 (CC). Puede usarse para archivar el bitstream de CC extraído originalmente y para producir un archivo fuente destinado a un procesamiento o conversión posteriores. El formato permite la interoperabilidad entre ccextractor y FFmpeg, es sencillo de analizar y puede usarse para crear una copia de seguridad de la presentación de CC.

Este muxer implementa la especificación vigente en marzo de 2024, que se ha mantenido estable e inalterada desde abril de 2014.

Este muxer presenta algunos matices respecto a la forma en que ccextractor muxa RCWT. Hasta ahora no se han observado problemas de compatibilidad al procesar la salida con ccextractor por este motivo, pero los resultados pueden variar y las salidas no coincidirán bit a bit.

Puede encontrarse una especificación libre de RCWT aquí: https://github.com/CCExtractor/ccextractor/blob/master/docs/BINARY_FILE_FORMAT.TXT

4.69.1 Ejemplos

  • Extraer subtítulos ocultos a RCWT usando lavfi:
    ffmpeg -f lavfi -i "movie=INPUT.mkv[out+subcc]" -map 0:s:0 -c:s copy -f rcwt CC.rcwt.bin
    

4.70 segment, stream_segment, ssegment

Segmentador de flujo básico.

Este muxer escribe los flujos en varios archivos independientes de duración casi fija. El patrón del nombre de archivo de salida puede establecerse de forma similar a image2, o mediante una plantilla strftime si la opción strftime está habilitada.

stream_segment es una variante del muxer usada para escribir en formatos de salida en streaming, es decir, que no requieren cabeceras globales, y se recomienda para generar, por ejemplo, segmentos de flujo de transporte MPEG. ssegment es un alias más corto de stream_segment.

Cada segmento comienza con un keyframe del flujo de referencia seleccionado, que se establece mediante la opción reference_stream.

Tenga en cuenta que, si desea una división precisa para un archivo de vídeo, debe hacer que los keyframes de entrada coincidan con los tiempos de división exactos que espera el segmentador, o el muxer segment iniciará el nuevo segmento con el keyframe encontrado inmediatamente después del tiempo de inicio especificado.

El muxer segment funciona mejor con un único vídeo de velocidad de fotogramas constante.

Opcionalmente, puede generar una lista de los segmentos creados fijando la opción segment_list. El tipo de lista se especifica mediante la opción segment_list_type. Los nombres de archivo de las entradas de la lista de segmentos se fijan de forma predeterminada al nombre base de los archivos de segmento correspondientes.

Véase también el muxer hls, que ofrece una implementación más específica para la segmentación HLS.

4.70.1 Opciones

El muxer segment admite las siguientes opciones:

increment_tc 1|0

Si se fija en 1, incrementa el código de tiempo entre cada segmento. Si se selecciona esto, la entrada debe tener un código de tiempo en el primer flujo de vídeo. El valor predeterminado es 0.

reference_stream specifier

Establece el flujo de referencia, indicado mediante la cadena specifier. Si specifier se fija en auto, el flujo de referencia se elige automáticamente. En caso contrario, debe ser un especificador de flujo (véase el capítulo "Especificadores de flujo" del manual de ffmpeg) que indique el flujo de referencia. El valor predeterminado es auto.

segment_format format

Sobrescribe el formato de container interno; de forma predeterminada se deduce a partir de la extensión del nombre de archivo.

segment_format_options options_list

Establece las opciones de formato de salida como una lista de parámetros clave=valor separados por :. Los valores que contengan el carácter especial : deben escaparse.

segment_list name

Genera también un archivo de lista llamado name. Si no se especifica, no se genera ningún archivo de lista.

segment_list_flags flags

Establece los flags que afectan a la generación de la lista de segmentos.

Actualmente admite los siguientes flags:

‘cache’

Permite el almacenamiento en caché (solo afecta a los archivos de lista M3U8).

‘live’

Permite la generación de archivos apta para directo.

segment_list_size size

Actualiza el archivo de lista para que contenga como máximo size segmentos. Si es 0, el archivo de lista contendrá todos los segmentos. El valor predeterminado es 0.

segment_list_entry_prefix prefix

Antepone prefix a cada entrada. Útil para generar rutas absolutas. De forma predeterminada no se aplica ningún prefijo.

segment_list_type type

Selecciona el formato de listado.

Se reconocen los siguientes valores:

‘flat’

Genera una lista plana de los segmentos creados, un segmento por línea.

‘csv, ext’

Genera una lista de los segmentos creados, un segmento por línea, cada línea con el siguiente formato (valores separados por comas):

segment_filename,segment_start_time,segment_end_time

segment_filename es el nombre del archivo de salida generado por el muxer según el patrón indicado. Se aplica el escape CSV (según RFC4180) cuando es necesario.

segment_start_time y segment_end_time indican el tiempo de inicio y fin del segmento, expresado en segundos.

Un archivo de lista con el sufijo ".csv" o ".ext" seleccionará automáticamente este formato.

‘ext’ está obsoleto en favor de ‘csv’.

‘ffconcat’

Genera un archivo ffconcat para los segmentos creados. El archivo resultante puede leerse mediante el demuxer concat de FFmpeg.

Un archivo de lista con el sufijo ".ffcat" o ".ffconcat" seleccionará automáticamente este formato.

‘m3u8’

Genera un archivo M3U8 extendido, versión 3, conforme con http://tools.ietf.org/id/draft-pantos-http-live-streaming.

Un archivo de lista con el sufijo ".m3u8" seleccionará automáticamente este formato.

Si no se especifica, el tipo se deduce a partir del sufijo del nombre del archivo de lista.

segment_time time

Fija la duración del segmento en time; el valor debe ser una especificación de duración. El valor predeterminado es "2". Véase también la opción segment_times.

Tenga en cuenta que la división puede no ser precisa a menos que fuerce los keyframes del flujo de referencia en el momento indicado. Véase el aviso introductorio y los ejemplos siguientes.

min_seg_duration time

Fija la duración mínima del segmento en time; el valor debe ser una especificación de duración. Esto evita que el muxer termine segmentos con una duración inferior a este valor. Solo tiene efecto con segment_time. El valor predeterminado es "0".

segment_atclocktime 1|0

Si se fija en "1", divide en intervalos regulares de tiempo de reloj empezando desde las 00:00 en punto. El valor de tiempo especificado en segment_time se usa para fijar la duración del intervalo de división.

Por ejemplo, con segment_time fijado en "900" es posible crear archivos a las 12:00 en punto, 12:15, 12:30, etc.

El valor predeterminado es "0".

segment_clocktime_offset duration

Retrasa los tiempos de división de segmentos con la duración especificada al usar segment_atclocktime.

Por ejemplo, con segment_time fijado en "900" y segment_clocktime_offset fijado en "300", es posible crear archivos a las 12:05, 12:20, 12:35, etc.

El valor predeterminado es "0".

segment_clocktime_wrap_duration duration

Obliga al segmentador a iniciar un nuevo segmento únicamente si un paquete llega al muxer dentro de la duración especificada tras el tiempo de reloj de segmentación. De este modo, puede hacer que el segmentador sea más resistente a saltos hacia atrás en la hora local, como los segundos intercalares o la transición del horario de verano al horario estándar.

El valor predeterminado es la duración máxima posible, lo que implica iniciar un nuevo segmento independientemente del tiempo transcurrido desde el último tiempo de reloj.

segment_time_delta delta

Especifica el margen de precisión temporal al seleccionar el tiempo de inicio de un segmento, expresado como una especificación de duración. El valor predeterminado es "0".

Cuando se especifica delta, un keyframe iniciará un nuevo segmento si su PTS satisface la relación:

PTS >= start_time - time_delta

Esta opción es útil al dividir contenido de vídeo, que siempre se divide en los límites de GOP, en caso de que se encuentre un keyframe justo antes del tiempo de división especificado.

En particular, puede usarse en combinación con la opción force_key_frames de ffmpeg. Los tiempos de keyframe especificados mediante force_key_frames pueden no fijarse con precisión debido a problemas de redondeo, con la consecuencia de que un tiempo de keyframe puede resultar fijado justo antes del tiempo especificado. Para vídeos de velocidad de fotogramas constante, un valor de 1/(2*frame_rate) debería resolver el peor caso de desajuste entre el tiempo especificado y el tiempo fijado por force_key_frames.

segment_times times

Especifica una lista de puntos de división. times contiene una lista de especificaciones de duración separadas por comas, en orden creciente. Véase también la opción segment_time.

segment_frames frames

Especifica una lista de números de fotograma de división de vídeo. frames contiene una lista de números enteros separados por comas, en orden creciente.

Esta opción indica que se inicie un nuevo segmento cada vez que se encuentre un keyframe del flujo de referencia y el número secuencial (a partir de 0) del fotograma sea mayor o igual que el siguiente valor de la lista.

segment_wrap limit

Da la vuelta al índice de segmentos una vez que alcanza limit.

segment_start_number number

Fija el número de secuencia del primer segmento. El valor predeterminado es 0.

strftime 1|0

Usa la función strftime para definir el nombre de los nuevos segmentos que se escriban. Si se selecciona esto, el nombre del segmento de salida debe contener una plantilla de función strftime. El valor predeterminado es 0.

break_non_keyframes 1|0

Si se habilita, permite que los segmentos comiencen en fotogramas que no sean keyframes. Esto mejora el comportamiento en algunos reproductores cuando el tiempo entre keyframes es inconsistente, pero puede empeorarlo en otros, y puede causar algunas rarezas durante la búsqueda. El valor predeterminado es 0.

reset_timestamps 1|0

Reinicia las marcas de tiempo al principio de cada segmento, de modo que cada segmento comience con marcas de tiempo cercanas a cero. Está pensado para facilitar la reproducción de los segmentos generados. Puede no funcionar con algunas combinaciones de muxers/codecs. De forma predeterminada está fijado en 0.

initial_offset offset

Especifica el desfase de marca de tiempo que se aplicará a las marcas de tiempo de los paquetes de salida. El argumento debe ser una especificación de duración temporal, y el valor predeterminado es 0.

write_empty_segments 1|0

Si se habilita, escribe un segmento vacío si no hay paquetes durante el periodo que normalmente abarcaría un segmento. En caso contrario, el segmento se rellenará con el siguiente paquete escrito. El valor predeterminado es 0.

Asegúrese de exigir un GOP cerrado al codificar, y de fijar el tamaño de GOP de modo que se ajuste a la restricción de tiempo de segmento.

4.70.2 Ejemplos

  • Remultiplexa el contenido del archivo in.mkv en una lista de segmentos out-000.nut, out-001.nut, etc., y escribe la lista de segmentos generados en out.list:

    ffmpeg -i in.mkv -codec hevc -flags +cgop -g 60 -map 0 -f segment -segment_list out.list out%03d.nut
    
  • Segmenta la entrada y define las opciones de formato de salida para los segmentos generados:

    ffmpeg -i in.mkv -f segment -segment_time 10 -segment_format_options movflags=+faststart out%03d.mp4
    
  • Segmenta el archivo de entrada según los puntos de corte especificados por la opción segment_times:

    ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 out%03d.nut
    
  • Utiliza la opción force_key_frames de ffmpeg para forzar keyframes en la entrada en la posición indicada, junto con la opción de segmentación segment_time_delta para compensar los posibles redondeos que se producen al fijar los instantes de los keyframes.

    ffmpeg -i in.mkv -force_key_frames 1,2,3,5,8,13,21 -codec:v mpeg4 -codec:a pcm_s16le -map 0 \
    -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 -segment_time_delta 0.05 out%03d.nut
    

Para forzar keyframes en el archivo de entrada es necesario transcodificar.

  • Segmenta el archivo de entrada dividiéndolo según la secuencia de números de fotograma especificada con la opción segment_frames:

    ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_frames 100,200,300,500,800 out%03d.nut
    
  • Convierte in.mkv en segmentos TS usando los encoders libx264 y aac:

    ffmpeg -i in.mkv -map 0 -codec:v libx264 -codec:a aac -f ssegment -segment_list out.list out%03d.ts
    
  • Segmenta el archivo de entrada y crea una lista de reproducción M3U8 en directo (puede usarse como fuente HLS en directo):

    ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \
    -segment_list_flags +live -segment_time 10 out%03d.mkv
    

4.71 smoothstreaming

El muxer Smooth Streaming genera un conjunto de archivos (manifiesto, fragmentos) adecuado para servirse con un servidor web convencional.

window_size

Especifica el número de fragmentos que se conservan en el manifiesto. El valor predeterminado es 0 (conservarlos todos).

extra_window_size

Especifica el número de fragmentos que se conservan fuera del manifiesto antes de eliminarlos del disco. El valor predeterminado es 5.

lookahead_count

Especifica el número de fragmentos lookahead. El valor predeterminado es 2.

min_frag_duration

Especifica la duración mínima de los fragmentos (en microsegundos). El valor predeterminado es 5000000.

remove_at_exit

Especifica si se deben eliminar todos los fragmentos al finalizar. El valor predeterminado es 0 (no eliminarlos).

4.72 streamhash

Formato de prueba de hash por flujo.

Este muxer calcula e imprime un hash criptográfico de todos los fotogramas de entrada, flujo por flujo. Esto permite comprobar la igualdad sin necesidad de hacer una comparación binaria completa.

De forma predeterminada, los fotogramas de audio se convierten a audio en bruto con signo de 16 bits, y los fotogramas de vídeo a vídeo en bruto, antes de calcular el hash, aunque también puede usarse la salida de conversiones explícitas a otros codecs. Las marcas de tiempo se ignoran. Emplea de forma predeterminada la función de hash criptográfico SHA-256, pero admite otros varios algoritmos.

La salida del muxer consiste en una línea por flujo con el formato: streamindex,streamtype,algo=hash, donde streamindex es el índice del flujo mapeado, streamtype es un único carácter que indica el tipo de flujo, algo es una cadena corta que representa la función de hash utilizada, y hash es un número hexadecimal que representa el hash calculado.

hash algorithm

Usa la función de hash criptográfico especificada por la cadena algorithm. Los valores admitidos incluyen MD5, murmur3, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA160, SHA224, SHA256 (predeterminado), SHA512/224, SHA512/256, SHA384, SHA512, CRC32 y adler32.

4.72.1 Ejemplos

Para calcular el hash SHA-256 de la entrada convertida a audio y vídeo en bruto, y guardarlo en el archivo out.sha256:

ffmpeg -i INPUT -f streamhash out.sha256

Para imprimir un hash MD5 en stdout, use el siguiente comando:

ffmpeg -i INPUT -f streamhash -hash md5 -

Consulte también los muxers hash y framehash.

4.73 tee

El muxer tee puede usarse para escribir los mismos datos en varias salidas, como archivos o flujos. Por ejemplo, permite transmitir un vídeo por red y guardarlo en disco al mismo tiempo.

Esto es distinto de indicar varias salidas a la herramienta de línea de comandos ffmpeg. Con el muxer tee, los datos de audio y vídeo se codifican una sola vez. Con las salidas múltiples convencionales se inician varias operaciones de codificación en paralelo, lo que puede resultar muy costoso. El muxer tee no resulta útil cuando se usa directamente la API de libavformat, ya que en ese caso es posible entregar los mismos paquetes directamente a varios muxers.

Dado que el muxer tee no representa ningún formato de salida concreto, ffmpeg no puede seleccionar automáticamente los flujos de salida. Por eso, todos los flujos destinados a la salida deben especificarse con -map. Consulte los ejemplos a continuación.

Algunos encoders pueden necesitar opciones distintas según el formato de salida; con el muxer tee esta autodetección no funciona, por lo que hay que especificarlas explícitamente. El ejemplo principal es el flag global_header.

Las salidas esclavas se especifican en el nombre de archivo que se pasa al muxer, separadas por ’|’. Si el nombre de alguna salida esclava contiene el separador ’|’, espacios iniciales o finales o algún carácter especial, deben escaparse (véase (ffmpeg-utils)la sección "Quoting and escaping" del manual ffmpeg-utils(1)).

4.73.1 Opciones

use_fifo bool

Si se establece en 1, las salidas esclavas se procesan en hilos separados usando el muxer fifo. Esto permite compensar diferencias de velocidad, latencia o fiabilidad entre salidas y configurar una recuperación transparente. De forma predeterminada, esta función está desactivada.

fifo_options

Opciones que se pasan a las instancias del pseudo-muxer fifo. Véase fifo.

Las opciones del muxer pueden especificarse para cada esclavo anteponiéndolas como una lista de pares key=value separados por ’:’, entre corchetes. Si los valores de las opciones contienen un carácter especial o el separador ’:’, deben escaparse; tenga en cuenta que se trata de un segundo nivel de escapado.

También se reconocen las siguientes opciones especiales:

f

Especifica el nombre del formato. Es obligatorio si no se puede deducir a partir de la URL de salida.

bsfs[/spec]

Especifica una lista de filtros de bitstream que se aplicarán a la salida indicada.

Es posible especificar a qué flujos se aplica un filtro de bitstream determinado, añadiendo a la opción un especificador de flujo separado por /. spec debe ser un especificador de flujo (véase Especificadores de flujo de formato).

Si no se especifica el especificador de flujo, los filtros de bitstream se aplican a todos los flujos de la salida. Esto hará que la operación de salida falle si la salida contiene flujos a los que no se puede aplicar el filtro de bitstream, por ejemplo, al aplicar h264_mp4toannexb a una salida que contiene un flujo de audio.

Las opciones de un filtro de bitstream deben especificarse en la forma opt=value.

Pueden especificarse varios filtros de bitstream separados por ",".

use_fifo bool

Esto permite anular la opción use_fifo del muxer tee para un muxer esclavo concreto.

fifo_options

Esto permite anular la opción fifo_options del muxer tee para un muxer esclavo concreto. Véase fifo.

select

Selecciona los flujos que deben mapearse a la salida esclava, especificados mediante un especificador de flujo. Si no se especifica, de forma predeterminada se toman todos los flujos mapeados. Esto hará que la operación de salida falle si el formato de salida no acepta todos los flujos mapeados.

Puede usar varios especificadores de flujo separados por comas (,), por ejemplo: a:0,v

onfail

Especifica el comportamiento ante un fallo de salida. Puede establecerse en abort (que es el valor predeterminado) o en ignore. abort hace que todo el proceso falle si esta salida esclava falla. ignore ignora el fallo en esta salida, de modo que las demás salidas continúan sin verse afectadas.

4.73.2 Ejemplos

  • Codifica algo y lo archiva en un archivo WebM al mismo tiempo que lo transmite como MPEG-TS por UDP:

    ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a
      "archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/"
    
  • Como el anterior, pero continúa la transmisión aunque falle la salida al archivo local (por ejemplo, si se llena la unidad local):

    ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a
      "[onfail=ignore]archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/"
    
  • Usa ffmpeg para codificar la entrada y enviar la salida a tres destinos distintos. El filtro de bitstream dump_extra se usa para añadir información de extradata a todos los paquetes de los keyframes de vídeo de salida, tal como exige el formato MPEG-TS. La opción select se aplica a out.aac para que contenga únicamente paquetes de audio.

    ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac
           -f tee "[bsfs/v=dump_extra=freq=keyframe]out.ts|[movflags=+faststart]out.mp4|[select=a]out.aac"
    
  • Como el anterior, pero selecciona solo el flujo a:1 para la salida de audio. Tenga en cuenta que hay que aplicar un segundo nivel de escapado, ya que ":" es un carácter especial que se usa para separar opciones.

    ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac
           -f tee "[bsfs/v=dump_extra=freq=keyframe]out.ts|[movflags=+faststart]out.mp4|[select=\'a:1\']out.aac"
    

4.74 wav

Muxer de audio RIFF Wave.

4.74.1 Opciones

rf64 mode

Elige si se debe usar el formato de archivo RF64 en lugar de RIFF. RF64 permite archivos de más de 4 gigabytes, pero su compatibilidad no está tan extendida como la de RIFF.

Se reconocen los siguientes modos:

‘auto’

Empieza escribiendo un archivo RIFF estándar para mantener la compatibilidad con software que no reconoce RF64, pero cambia a RF64 si el archivo de salida supera los 4 gigabytes. Reserva una pequeña cantidad de espacio extra en la cabecera mediante un chunk JUNK, que todos los lectores RIFF conformes deberían ignorar, aunque algunos lectores WAV extremadamente simplistas pueden confundirse con esto.

‘always’

Usa siempre el formato RF64, sin importar el tamaño del archivo. El archivo de salida solo podrá leerse con software compatible con RF64 y deja de ser un archivo RIFF WAVE estándar.

‘never’

Usa siempre RIFF puro, nunca RF64. Este modo es el más compatible con software heredado, pero si el archivo de salida supera los 4 gigabytes, el campo de tamaño de 32 bits del chunk data ya no podrá representar correctamente el tamaño, y la mayoría del software de audio no podrá leer parte o la totalidad de los datos. (La opción ignore_length del demuxer wav permite recuperar un archivo así.) Este es el modo predeterminado.

write_bext bool

Si está habilitada, añade un chunk BEXT de Broadcast Wave Format con metadatos de audio extendidos. El valor predeterminado es false.

write_peak mode

Si está habilitada, añade un chunk Peak Envelope (EBU Tech 3285 Supplement 3). El valor predeterminado es off.

‘off’

No añade el chunk Peak Envelope.

‘on’

Añade el chunk Peak Envelope, calculando los valores de pico a partir de las opciones peak_block_size, peak_format y peak_ppv.

‘only’

Igual que on, pero sin escribir los datos de audio reales (no se escribirá ningún chunk data en el archivo; solo se escribirán el chunk Peak Envelope y otros chunks de metadatos).

peak_block_size int

Número de muestras de audio usadas para generar cada fotograma de pico, hasta 65536. El valor predeterminado es 256.

peak_format format

El formato de los datos de la envolvente de pico (1: uint8, 2: uint16). El valor predeterminado es 2 (uint16).

peak_ppv int

Número de puntos de pico por valor de pico (1 o 2). El valor predeterminado es 2.

4.75 webm_chunk

Muxer de fragmentos en directo de WebM.

Este muxer escribe las cabeceras y los fragmentos de WebM como archivos independientes que pueden ser consumidos por clientes compatibles con flujos WebM Live a través de DASH.

4.75.1 Opciones

Este muxer admite las siguientes opciones:

chunk_start_index

Índice del primer fragmento (predeterminado 0).

header

Nombre del archivo de cabecera donde se escribirán los datos de inicialización.

audio_chunk_duration

Duración de cada fragmento de audio en milisegundos (predeterminado 5000).

4.75.2 Ejemplo

ffmpeg -f v4l2 -i /dev/video0 \
       -f alsa -i hw:0 \
       -map 0:0 \
       -c:v libvpx-vp9 \
       -s 640x360 -keyint_min 30 -g 30 \
       -f webm_chunk \
       -header webm_live_video_360.hdr \
       -chunk_start_index 1 \
       webm_live_video_360_%d.chk \
       -map 1:0 \
       -c:a libvorbis \
       -b:a 128k \
       -f webm_chunk \
       -header webm_live_audio_128.hdr \
       -chunk_start_index 1 \
       -audio_chunk_duration 1000 \
       webm_live_audio_128_%d.chk

4.76 webm_dash_manifest

Muxer de manifiesto DASH de WebM.

Este muxer implementa la especificación de WebM DASH Manifest para generar el XML del manifiesto DASH. También admite la generación de manifiestos para flujos DASH en directo.

Para más información, consulte:

4.76.1 Opciones

Este muxer admite las siguientes opciones:

adaptation_sets

Esta opción tiene la siguiente sintaxis: "id=x,streams=a,b,c id=y,streams=d,e", donde x e y son los identificadores únicos de los adaptation sets, y a,b,c,d,e son los índices de los flujos de audio y vídeo correspondientes. Con esta opción se puede añadir cualquier número de adaptation sets.

live

Establézcalo en 1 para crear un manifiesto DASH de flujo en directo. Valor predeterminado: 0.

chunk_start_index

Índice de inicio del primer fragmento. Este valor se incluirá en el atributo ‘startNumber’ del elemento ‘SegmentTemplate’ del manifiesto. Valor predeterminado: 0.

chunk_duration_ms

Duración de cada fragmento en milisegundos. Este valor se incluirá en el atributo ‘duration’ del elemento ‘SegmentTemplate’ del manifiesto. Valor predeterminado: 1000.

utc_timing_url

URL de la página que devuelve la marca de tiempo UTC en formato ISO. Este valor se incluirá en el atributo ‘value’ del elemento ‘UTCTiming’ del manifiesto. Valor predeterminado: None.

time_shift_buffer_depth

Tiempo mínimo (en segundos) del búfer de desplazamiento temporal para el que se garantiza la disponibilidad de cualquier Representation. Este valor se incluirá en el atributo ‘timeShiftBufferDepth’ del elemento ‘MPD’. Valor predeterminado: 60.

minimum_update_period

Periodo mínimo de actualización (en segundos) del manifiesto. Este valor se incluirá en el atributo ‘minimumUpdatePeriod’ del elemento ‘MPD’. Valor predeterminado: 0.

4.76.2 Ejemplo

ffmpeg -f webm_dash_manifest -i video1.webm \
       -f webm_dash_manifest -i video2.webm \
       -f webm_dash_manifest -i audio1.webm \
       -f webm_dash_manifest -i audio2.webm \
       -map 0 -map 1 -map 2 -map 3 \
       -c copy \
       -f webm_dash_manifest \
       -adaptation_sets "id=0,streams=0,1 id=1,streams=2,3" \
       manifest.xml

4.77 whip

Muxer WebRTC (Real-Time Communication) que admite streaming con latencia inferior al segundo según la especificación WHIP (WebRTC-HTTP ingestion protocol).

Esta es una característica experimental.

Usa HTTP como protocolo de señalización para intercambiar las capacidades SDP y los candidatos ICE lite. A continuación, usa solicitudes y respuestas de binding STUN para establecer una sesión sobre UDP. Después, inicia un handshake DTLS para intercambiar las claves de cifrado SRTP. Por último, divide los fotogramas de vídeo y audio en paquetes RTP y los cifra con SRTP.

Asegúrese de usar H.264 sin fotogramas B y Opus como codec de audio. Por ejemplo, para convertir un archivo de entrada con ffmpeg a WebRTC:

ffmpeg -re -i input.mp4 -acodec libopus -ar 48000 -ac 2 \
  -vcodec libx264 -profile:v baseline -tune zerolatency -threads 1 -bf 0 \
  -f whip "http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream"

En este ejemplo se han empleado opciones de baja latencia, con las que se obtiene una latencia extremo a extremo de aproximadamente 150 ms.

4.77.1 Opciones

Este muxer admite las siguientes opciones:

handshake_timeout integer

Establece en milisegundos el tiempo de espera para el handshake de ICE y DTLS. El valor predeterminado es 5000.

timeout integer

Establece en segundos el tiempo de espera para las operaciones de E/S del socket. Solo se aplica a la salida HTTP. El valor predeterminado es -1.

pkt_size integer

Establece el tamaño máximo, en bytes, de los paquetes RTP que se envían. El valor predeterminado es 1200.

ts_buffer_size integer

Establece el tamaño del búfer, en bytes, del protocolo subyacente. El valor predeterminado es -1 (automático). UDP elige automáticamente un valor razonable.

whip_flags flags

Valores posibles:

‘dtls_active’

El muxer intentará establecer el rol dtls active y enviará el primer client hello.

rtp_history integer

Establece el número de elementos del historial de RTP que se almacenan. El valor predeterminado es 512.

authorization string

El token Bearer opcional para la Authorization de WHIP.

cert_file string

Ruta opcional del archivo de certificado para DTLS.

key_file string

Ruta opcional del archivo de clave privada para DTLS.

5 Metadatos

FFmpeg puede volcar los metadatos de los archivos multimedia en un archivo de texto sencillo, con codificación UTF-8 y estilo INI, y volver a cargarlos después mediante el muxer/demuxer metadata.

El formato del archivo es el siguiente:

  1. Un archivo consta de una cabecera y una serie de etiquetas de metadatos divididas en secciones, cada una en su propia línea.
  2. La cabecera es la cadena ‘;FFMETADATA’, seguida de un número de versión (actualmente 1).
  3. Las etiquetas de metadatos tienen la forma ‘key=value’
  4. Inmediatamente después de la cabecera vienen los metadatos globales
  5. Después de los metadatos globales puede haber secciones con metadatos por flujo o por capítulo.
  6. Una sección empieza con el nombre de la sección en mayúsculas (es decir, STREAM o CHAPTER) entre corchetes (‘[’, ‘]’) y termina con la siguiente sección o con el final del archivo.
  7. Al principio de una sección de capítulo puede haber una base de tiempo opcional que se usará para los valores de start/end. Debe tener la forma ‘TIMEBASE=num/den’, donde num y den son enteros. Si falta la base de tiempo, se asume que los tiempos de start/end están en nanosegundos.

A continuación, una sección de capítulo debe contener los tiempos de inicio y fin del capítulo en la forma ‘START=num’, ‘END=num’, donde num es un entero positivo.

  1. Las líneas vacías y las que empiezan por ‘;’ o ‘#’ se ignoran.
  2. Las claves o valores de metadatos que contengan caracteres especiales (‘=’, ‘;’, ‘#’, ‘\’ y un salto de línea) deben escaparse con una barra invertida ‘\’.
  3. Tenga en cuenta que los espacios en blanco en los metadatos (por ejemplo, ‘foo = bar’) se consideran parte de la etiqueta (en el ejemplo anterior la clave es ‘foo ’ y el valor es ‘ bar’).

Un archivo ffmetadata podría tener este aspecto:

;FFMETADATA1
title=bike\\shed
;this is a comment
artist=FFmpeg troll team

[CHAPTER]
TIMEBASE=1/1000
START=0
#chapter ends at 0:01:00
END=60000
title=chapter \#1
[STREAM]
title=multi\
line

Usando el muxer y el demuxer ffmetadata es posible extraer los metadatos de un archivo de entrada a un archivo ffmetadata, y luego transcodificar el archivo a un archivo de salida con el archivo ffmetadata editado.

Extraer un archivo ffmetadata con ffmpeg se hace así:

ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE

Reinsertar la información de metadatos editada desde el archivo FFMETADATAFILE puede hacerse así:

ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT

6 Véase también

ffmpeg, ffplay, ffprobe, libavformat

7 Autores

Los desarrolladores de FFmpeg.

Para más detalles sobre la autoría, consulte el historial de Git del proyecto (https://git.ffmpeg.org/ffmpeg), por ejemplo escribiendo el comando git log en el directorio fuente de FFmpeg, o navegando por el repositorio en línea en https://git.ffmpeg.org/ffmpeg.

Los mantenedores de los distintos componentes están listados en el archivo MAINTAINERS del árbol de código fuente.

Alojamiento proporcionado por telepoint.bg