⚠️ 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-bitstream-filters.html).

Documentación de los filtros de bitstream de FFmpeg

1 Descripción

Este documento describe los filtros de bitstream que proporciona la biblioteca libavcodec.

Un filtro de bitstream opera sobre los datos del flujo codificado y realiza modificaciones a nivel de bitstream sin llevar a cabo la decodificación.

2 Filtros de bitstream

Al configurar la compilación de FFmpeg, todos los filtros de bitstream admitidos se habilitan de forma predeterminada. Todos los disponibles se pueden listar con la opción de configure --list-bsfs.

Todos los filtros de bitstream se pueden deshabilitar con la opción de configure --disable-bsfs; cualquier filtro de bitstream se puede habilitar de forma selectiva con la opción --enable-bsf=BSF, o se puede deshabilitar un filtro concreto con la opción --disable-bsf=BSF.

La opción -bsfs de las herramientas ff* muestra la lista de todos los filtros de bitstream admitidos incluidos en la compilación.

Las herramientas ff* disponen de una opción -bsf aplicada por flujo, que toma una lista de filtros separados por comas, cuyos parámetros se indican tras el nombre del filtro precedidos de ’=’.

ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT

A continuación se describen los filtros de bitstream actualmente disponibles, junto con sus parámetros, si los tienen.

2.1 aac_adtstoasc

Convierte un ADTS AAC de MPEG-2/4 en un bitstream MPEG-4 Audio Specific Configuration.

Este filtro crea un AudioSpecificConfig de MPEG-4 a partir de una cabecera ADTS de MPEG-2/4 y elimina la cabecera ADTS.

Este filtro es necesario, por ejemplo, al copiar un flujo AAC desde un ADTS AAC en bruto o un container MPEG-TS hacia MP4A-LATM, hacia un archivo FLV, o hacia archivos MOV/MP4 y formatos relacionados como 3GP o M4A. Cabe señalar que se inserta automáticamente para MP4A-LATM, MOV/MP4 y formatos relacionados.

2.2 av1_metadata

Modifica los metadatos incrustados en un flujo AV1.

td

Inserta o elimina OBUs delimitadores temporales (temporal delimiter) en todas las unidades temporales del flujo.

‘insert’

Inserta un TD al principio de cada TU que no lo tenga ya.

‘remove’

Elimina el TD del principio de cada TU que lo tenga.

color_primaries transfer_characteristics matrix_coefficients

Define los campos de descripción de color en el flujo (véase la sección 6.4.2 de AV1).

color_range

Define el rango de color en el flujo (véase la sección 6.4.2 de AV1; cabe señalar que esto no se puede establecer en flujos que utilizan primarios BT.709, la característica de transferencia sRGB y coeficientes de matriz identity (RGB)).

‘tv’

Rango limitado.

‘pc’

Rango completo.

chroma_sample_position

Define la posición de muestreo de croma en el flujo (véase la sección 6.4.2 de AV1). Esto solo puede establecerse para flujos 4:2:0.

‘vertical’

Posición izquierda (coincide con el valor predeterminado en MPEG-2 y H.264).

‘colocated’

Posición superior izquierda.

tick_rate

Define la tasa de tick (time_scale / num_units_in_display_tick) en la información de temporización de la cabecera de secuencia.

num_ticks_per_picture

Define el número de ticks por imagen, para indicar que el flujo tiene una velocidad de fotogramas fija. Se ignora si tick_rate no está también definido.

delete_padding

Elimina los OBU de relleno (Padding).

2.3 chomp

Elimina el relleno de ceros al final de un paquete.

2.4 dca_core

Extrae el núcleo de un flujo DCA/DTS, descartando extensiones como DTS-HD.

2.5 dovi_rpu

Manipula los metadatos de Dolby Vision en un bitstream HEVC/AV1, con la posibilidad de habilitar la compresión de metadatos.

strip

Si está habilitado, elimina del flujo todos los metadatos de Dolby Vision (el registro de configuración y los bloques de datos RPU).

compression

Qué nivel de compresión habilitar.

‘none’

Sin compresión de metadatos.

‘limited’

Esquema de compresión de metadatos limitado. Debería ser compatible con la mayoría de los dispositivos. Es el valor predeterminado.

‘extended’

Compresión de metadatos extendida. Los dispositivos no están obligados a admitirla. Cabe señalar que, por el momento, este nivel se comporta igual que ‘limited’ en libavcodec.

2.6 dovi_split

Divide un bitstream HEVC multicapa de Dolby Vision Profile 7. El Profile 7 transporta el bitstream HEVC de la capa de mejora entrelazado dentro de las unidades de acceso de la capa base, envuelto en unidades NAL user-unspecified de tipo 63 (UNSPEC63), y los metadatos RPU como una NAL user-unspecified hermana de tipo 62 (UNSPEC62).

mode

Qué componentes de Dolby Vision conservar en el bitstream de salida.

‘bl’

Solo capa base: descarta todos los UNSPEC63 (EL) y todos los UNSPEC62 (RPU). La salida es un flujo HEVC plano sin marcadores de Dolby Vision. Es el valor predeterminado.

‘bl_rpu’

Capa base conservando la NAL RPU.

‘el’

Solo capa de mejora: para cada NAL UNSPEC63, elimina la cabecera NAL externa de dos bytes y emite la carga útil interna. El resultado es un bitstream HEVC independiente. UNSPEC62 (RPU) se descarta.

‘el_rpu’

Capa de mejora con la NAL RPU conservada tal cual. Igual que ‘el’, pero las NAL RPU UNSPEC62 también se emiten junto con las NAL EL desenvueltas.

2.7 dump_extra

Añade extradata al principio de los paquetes filtrados, salvo cuando dichos paquetes ya comienzan exactamente con el extradata que se pretende añadir.

freq

El argumento adicional especifica qué paquetes se deben filtrar. Acepta los siguientes valores:

‘k’ ‘keyframe’

añade extradata a todos los paquetes clave

‘e’ ‘all’

añade extradata a todos los paquetes

Si no se especifica, se asume ‘k’.

Por ejemplo, el siguiente comando ffmpeg fuerza una cabecera global (deshabilitando así las cabeceras individuales de cada paquete) en los paquetes H.264 generados por el encoder libx264, pero los corrige añadiendo a los paquetes clave la cabecera almacenada en extradata:

ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts

2.8 dv_error_marker

Los bloques de DV marcados como dañados se sustituyen por bloques del color especificado.

color

El color por el que sustituir los bloques dañados

sta

Una máscara de 16 bits que especifica cuáles de los 16 posibles valores de estado de error se deben sustituir por bloques de color. 0xFFFE es el valor predeterminado, que sustituye todos los valores de estado de error distintos de 0.

‘ok’

Sin error, sin ocultación

‘err’

Error, sin ocultación

‘res’

Reservado

‘notok’

Error u ocultación

‘notres’

No reservado

‘Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru’

El código de estado de error específico

véanse las páginas 44-46 o la sección 5.5 de http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf

2.9 eac3_core

Extrae el núcleo de un flujo E-AC-3, descartando los canales adicionales.

2.10 eia608_to_smpte436m

Convierte un flujo EIA_608 en un flujo de datos SMPTE_436M_ANC, envolviendo los subtítulos ocultos (closed captions) en paquetes VANC CDP CTA-708.

line_number

Elige en qué número de línea deben ir los paquetes VANC generados. Por lo general interesa la línea 9 (el valor predeterminado) o la 11.

wrapping_type

Elige el tipo de envoltura SMPTE 436M; el valor predeterminado es ‘vanc_frame’. Acepta los siguientes valores:

‘vanc_frame’

Fotograma VANC (fotograma entrelazado o progresivo segmentado)

‘vanc_field_1’ ‘vanc_field_2’ ‘vanc_progressive_frame’ sample_coding

Elige la codificación de muestra SMPTE 436M; el valor predeterminado es ‘8bit_luma’. Acepta los siguientes valores:

‘8bit_luma’

muestras de luma de componente de 8 bits

‘8bit_color_diff’

muestras de diferencia de color de componente de 8 bits

‘8bit_luma_and_color_diff’

muestras de luma y de diferencia de color de componente de 8 bits

‘10bit_luma’

muestras de luma de componente de 10 bits

‘10bit_color_diff’

muestras de diferencia de color de componente de 10 bits

‘10bit_luma_and_color_diff’

muestras de luma y de diferencia de color de componente de 10 bits

‘8bit_luma_parity_error’

muestras de luma de componente de 8 bits con error de paridad

‘8bit_color_diff_parity_error’

muestras de diferencia de color de componente de 8 bits con error de paridad

‘8bit_luma_and_color_diff_parity_error’

muestras de luma y de diferencia de color de componente de 8 bits con error de paridad

initial_cdp_sequence_cntr

El valor inicial de los campos enteros sin signo de 16 bits cdp_hdr_sequence_cntr y cdp_ftr_sequence_cntr del CDP. El valor predeterminado es 0.

cdp_frame_rate

Define el campo cdp_frame_rate del CDP. Esto no cambia realmente la temporización del flujo de datos; solo cambia los valores insertados en ese campo en los paquetes CDP generados. El valor predeterminado es ‘30000/1001’.

2.11 extract_extradata

Extrae el extradata in-band.

Ciertos codecs permiten transmitir las cabeceras de larga duración (por ejemplo, las cabeceras de secuencia de MPEG-2, o los (VPS/)SPS/PPS de H.264/HEVC) tanto "in-band" (es decir, como parte del bitstream que contiene los fotogramas codificados) como "out of band" (por ejemplo, a nivel de container). Esta segunda forma se denomina "extradata" en la terminología de FFmpeg.

Este filtro de bitstream detecta las cabeceras in-band y las pone a disposición como extradata.

remove

Cuando esta opción está habilitada, las cabeceras de larga duración se eliminan del bitstream tras la extracción.

2.12 filter_units

Elimina del flujo las unidades cuyo tipo esté, o no esté, en un conjunto dado.

pass_types

Lista de tipos de unidad, o de rangos de tipos de unidad, que se dejan pasar mientras se eliminan todos los demás. Se especifica como una lista de valores de tipo de unidad, o de rangos separados por ’-’, separados entre sí por ’|’.

remove_types

Idéntico a pass_types, salvo que las unidades del conjunto indicado se eliminan y todas las demás se dejan pasar.

Los tipos usados por pass_types y remove_types corresponden a los tipos de unidad NAL (nal_unit_type) en H.264, HEVC y H.266 (véase la Tabla 7-1 de las especificaciones de H.264 y HEVC, o la Tabla 5 de la especificación de H.266), a los valores de marcador para JPEG (sin el prefijo 0xFF) y, para MPEG-2, a los códigos de inicio sin el prefijo de código de inicio (es decir, el byte que sigue a 0x000001). Para VP8 y VP9, todas las unidades tienen tipo cero.

Esta transformación no modifica el extradata, pero cabe señalar que si el flujo contiene conjuntos de parámetros en línea, la salida puede quedar inutilizable si estos se eliminan.

Por ejemplo, para eliminar todas las unidades NAL no VCL de un flujo H.264:

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT

Para eliminar todos los AUD, SEI y filler de un flujo H.265:

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT

Para eliminar todos los datos de usuario de un flujo MPEG-2, incluidos los subtítulos ocultos (Closed Captions):

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=178' OUTPUT

Para eliminar todos los SEI de un flujo H264, incluidos los subtítulos ocultos:

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=6' OUTPUT

Para eliminar todos los SEI de prefijo y sufijo de un flujo HEVC, incluidos los subtítulos ocultos y el HDR dinámico:

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=39|40' OUTPUT

2.13 hapqa_extract

Extrae la parte Rgb o Alpha de un archivo HAPQA, sin recompresión, para crear un archivo HAPQ o HAPAlphaOnly.

texture

Especifica la textura que se debe conservar.

color alpha

Convierte HAPQA a HAPQ

ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov

Convierte HAPQA a HAPAlphaOnly

ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov

2.14 h264_metadata

Modifica los metadatos incrustados en un flujo H.264.

aud

Inserta o elimina unidades NAL AUD en todas las unidades de acceso del flujo.

‘pass’ ‘insert’ ‘remove’

El valor predeterminado es pass.

sample_aspect_ratio

Define la relación de aspecto de muestra del flujo en los parámetros VUI. Véase la tabla E-1 de H.264.

overscan_appropriate_flag

Define si el flujo es apto o no para su visualización con overscan (véase la sección E.2.1 de H.264).

video_format video_full_range_flag

Define el formato de vídeo en el flujo (véase la sección E.2.1 de H.264 y la tabla E-2).

colour_primaries transfer_characteristics matrix_coefficients

Define la descripción de color en el flujo (véase la sección E.2.1 de H.264 y las tablas E-3, E-4 y E-5).

chroma_sample_loc_type

Define la posición de muestreo de croma en el flujo (véase la sección E.2.1 de H.264 y la figura E-1).

tick_rate

Define la tasa de tick (time_scale / num_units_in_tick) en los parámetros VUI. Es la unidad de tiempo más pequeña representable en el flujo, y en muchos casos representa la tasa de campo del flujo (el doble de la velocidad de fotogramas).

fixed_frame_rate_flag

Define si el flujo tiene una velocidad de fotogramas fija; normalmente esto indica que la velocidad de fotogramas es exactamente la mitad de la tasa de tick, pero el significado exacto depende del entrelazado y de la estructura de imagen (véase la sección E.2.1 de H.264 y la tabla E-6).

zero_new_constraint_set_flags

Pone a cero constraint_set4_flag y constraint_set5_flag en el SPS. Estos bits estaban reservados en una versión anterior de la especificación de H.264, por lo que algunos decoders por hardware requieren que sean cero. El resultado de ponerlos a cero sigue siendo un bitstream válido.

crop_left crop_right crop_top crop_bottom

Define los desplazamientos de recorte de fotograma en el SPS. Estos valores sustituyen a los actuales si el flujo ya está recortado.

Estos campos se expresan en píxeles. Cabe señalar que algunos tamaños pueden no ser representables si el croma está submuestreado o el flujo está entrelazado (véase la sección 7.4.2.1.1 de H.264).

sei_user_data

Inserta una cadena como datos de usuario no registrados SEI. El argumento debe tener la forma UUID+string, donde el UUID son dígitos hexadecimales posiblemente separados por guiones, y la cadena puede ser cualquier cosa.

Por ejemplo, ‘086f3693-b7b3-4f2c-9653-21492feee5b8+hello’ insertará la cadena “hello” asociada al UUID indicado.

delete_filler

Elimina tanto las unidades NAL de relleno como los mensajes SEI de relleno.

display_orientation

Inserta, extrae o elimina mensajes SEI de orientación de pantalla (Display orientation). Véanse las secciones D.1.27 y D.2.27 de H.264 para la sintaxis y la semántica.

‘pass’ ‘insert’ ‘remove’ ‘extract’

El valor predeterminado es pass.

El modo insert funciona junto con las opciones rotate y flip. Cualquier mensaje de orientación de pantalla preexistente se eliminará en los modos insert o remove. El modo extract añade la matriz de visualización al paquete como side data.

rotate

Define la rotación en el SEI de orientación de pantalla (ángulo antihorario en grados). El rango va de -360 a +360. El valor predeterminado es NaN.

flip

Define el volteo (flip) en el SEI de orientación de pantalla.

‘horizontal’ ‘vertical’

El valor predeterminado es no definido.

level

Define el nivel en el SPS. Véanse la sección A.3 y las tablas A-1 a A-5 de H.264.

El argumento debe ser el nombre de un nivel (por ejemplo, ‘4.2’), un valor de level_idc (por ejemplo, ‘42’), o el nombre especial ‘auto’, que indica que el filtro debe intentar deducir el nivel a partir de las propiedades del flujo de entrada.

2.15 h264_mp4toannexb

Convierte un bitstream H.264 del modo con prefijo de longitud al modo con prefijo de código de inicio (tal como se define en el Anexo B de la especificación ITU-T H.264).

Esto lo requieren algunos formatos de streaming, típicamente el formato de transport stream de MPEG-2 (muxer mpegts).

Por ejemplo, para remultiplexar con ffmpeg un archivo MP4 que contiene un flujo H.264 al formato mpegts, se puede usar el siguiente comando:

ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts

Cabe señalar que este filtro se inserta automáticamente para los formatos de salida MPEG-TS (muxer mpegts) y H.264 en bruto (muxer h264).

2.16 h264_redundant_pps

Esto aplica una corrección específica a algunos flujos H264 BDMV de Blu-ray que contienen PPS redundantes. Estos PPS modifican parámetros irrelevantes del flujo, lo que confunde a otras transformaciones que requieren el extradata correcto.

El encoder usado en estos flujos afectados añade PPS adicionales a lo largo del flujo, variando el QP inicial y si la predicción ponderada estaba habilitada. Esto causa problemas al copiar el flujo en un container con cabecera global, ya que el PPS inicial no es adecuado para el resto del flujo. Un efecto secundario, por ejemplo, es que al buscar (seek) se obtiene una salida corrupta hasta que aparece un nuevo PPS.

Este BSF elimina los PPS adicionales y reescribe las cabeceras de slice de modo que el flujo use un único PPS inicial en la cabecera global, lo que resuelve el problema.

2.17 hevc_metadata

Modifica los metadatos incrustados en un flujo HEVC.

aud

Inserta o elimina unidades NAL AUD en todas las unidades de acceso del flujo.

‘insert’ ‘remove’ sample_aspect_ratio

Define la relación de aspecto de muestra del flujo en los parámetros VUI.

video_format video_full_range_flag

Define el formato de vídeo en el flujo (véase la sección E.3.1 de H.265 y la tabla E.2).

colour_primaries transfer_characteristics matrix_coefficients

Define la descripción de color en el flujo (véase la sección E.3.1 de H.265 y las tablas E.3, E.4 y E.5).

chroma_sample_loc_type

Define la posición de muestreo de croma en el flujo (véase la sección E.3.1 de H.265 y la figura E.1).

tick_rate

Define la tasa de tick en los parámetros del VPS y del VUI (time_scale / num_units_in_tick). Combinada con num_ticks_poc_diff_one, permite establecer una velocidad de fotogramas constante en el flujo. Cabe señalar que es probable que los parámetros del container la sobrescriban cuando el flujo está dentro de un container.

num_ticks_poc_diff_one

Define poc_proportional_to_timing_flag en el VPS y el VUI, y usa este valor para definir num_ticks_poc_diff_one_minus1 (véanse las secciones 7.4.3.1 y E.3.1 de H.265). Se ignora si tick_rate no está también definido.

crop_left crop_right crop_top crop_bottom

Define los desplazamientos de recorte de la ventana de conformidad en el SPS. Estos valores sustituyen a los actuales si el flujo ya está recortado.

Estos campos se expresan en píxeles. Cabe señalar que algunos tamaños pueden no ser representables si el croma está submuestreado (sección 7.4.3.2.1 de H.265).

width height

Define el ancho y el alto tras el recorte.

level

Define el nivel en el VPS y el SPS. Véanse la sección A.4 y las tablas A.6 y A.7 de H.265.

El argumento debe ser el nombre de un nivel (por ejemplo, ‘5.1’), un valor de general_level_idc (por ejemplo, ‘153’ para el nivel 5.1), o el nombre especial ‘auto’, que indica que el filtro debe intentar deducir el nivel a partir de las propiedades del flujo de entrada.

2.18 hevc_mp4toannexb

Convierte un bitstream HEVC/H.265 del modo con prefijo de longitud al modo con prefijo de código de inicio (tal como se define en el Anexo B de la especificación ITU-T H.265).

Esto lo requieren algunos formatos de streaming, típicamente el formato de transport stream de MPEG-2 (muxer mpegts).

Por ejemplo, para remultiplexar con ffmpeg un archivo MP4 que contiene un flujo HEVC al formato mpegts, se puede usar el siguiente comando:

ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts

Cabe señalar que este filtro se inserta automáticamente para los formatos de salida MPEG-TS (muxer mpegts) y HEVC/H.265 en bruto (muxer h265 o hevc).

2.19 imxdump

Modifica el bitstream para que encaje en MOV y sea utilizable por el decoder de Final Cut Pro. Este filtro solo se aplica al codec mpeg2video, y probablemente no sea necesario en Final Cut Pro 7 y versiones posteriores si se usa el -tag:v adecuado.

Por ejemplo, para remultiplexar IMX NTSC de 30 MB/s a MOV:

ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov

2.20 mjpeg2jpeg

Convierte paquetes MJPEG/AVI1 en paquetes JPEG/JFIF completos.

MJPEG es un codec de vídeo en el que cada fotograma de vídeo es esencialmente una imagen JPEG. Los fotogramas individuales se pueden extraer sin pérdida, por ejemplo con

ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg

Por desgracia, estos fragmentos son imágenes JPEG incompletas, porque carecen del segmento DHT necesario para la decodificación. Cita de http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml:

Avery Lee, escribiendo en el grupo de noticias rec.video.desktop en 2001, comentó que "MJPEG, o al menos el MJPEG de los AVI con el fourcc MJPG, es un JPEG restringido con una tabla de Huffman fija, y omitida. El JPEG debe estar en espacio de color YCbCr, debe ser 4:2:2, y debe usar codificación Huffman básica, no aritmética ni progresiva. [...] En efecto, se pueden extraer los fotogramas MJPEG y decodificarlos con un decoder JPEG normal, pero hay que anteponerles el segmento DHT, o el decoder no tendrá forma de saber cómo descomprimir los datos. La tabla exacta necesaria se da en la especificación OpenDML."

Este filtro de bitstream parchea la cabecera de los fotogramas extraídos de un flujo MJPEG (que llevan el ID de cabecera AVI1 y carecen de segmento DHT) para producir imágenes JPEG completas.

ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
exiftran -i -9 frame*.jpg
ffmpeg -i frame_%d.jpg -c:v copy rotated.avi

2.21 mjpegadump

Añade una cabecera MJPEG A al bitstream, para permitir su decodificación por Quicktime.

2.22 mov2textsub

Extrae un archivo de texto representable a partir de subtítulos MOV, eliminando la cabecera de metadatos de cada paquete de subtítulos.

Véase también el filtro text2movsub.

2.23 mpeg2_metadata

Modifica los metadatos incrustados en un flujo MPEG-2.

display_aspect_ratio

Define la relación de aspecto de visualización en el flujo.

Se admiten los siguientes valores fijos:

4/3 16/9 221/100

Cualquier otro valor hará que se señalicen píxeles cuadrados en su lugar (véase la sección 6.3.3 de H.262 y la tabla 6-3).

frame_rate

Define la velocidad de fotogramas en el flujo. Se construye a partir de una tabla de valores conocidos combinados con un pequeño multiplicador y divisor; si el valor indicado no es exactamente representable, se usará en su lugar el valor representable más cercano (véase la sección 6.3.3 de H.262 y la tabla 6-4).

video_format

Define el formato de vídeo en el flujo (véase la sección 6.3.6 de H.262 y la tabla 6-6).

colour_primaries transfer_characteristics matrix_coefficients

Define la descripción de color en el flujo (véase la sección 6.3.6 de H.262 y las tablas 6-7, 6-8 y 6-9).

2.24 mpeg4_unpack_bframes

Desempaqueta los fotogramas B empaquetados al estilo DivX.

Los fotogramas B empaquetados al estilo DivX no son MPEG-4 válido y solo eran una solución alternativa para el defectuoso subsistema Video for Windows. Ocupan más espacio, pueden causar pequeños problemas de sincronización AV, requieren más potencia de CPU para decodificar (a menos que el reproductor disponga de alguna cola de imágenes decodificadas que compense el patrón de fotogramas 2,0,2,0 por paquete) y causan problemas si se copian en un container estándar como mp4 o mpeg-ps/ts, porque los decoders de MPEG-4 pueden no ser capaces de decodificarlos, ya que no son MPEG-4 válido.

Por ejemplo, para corregir con ffmpeg un archivo AVI que contiene un flujo MPEG-4 con fotogramas B empaquetados al estilo DivX, se puede usar el siguiente comando:

ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi

2.25 noise

Daña el contenido de los paquetes, o simplemente los descarta, sin dañar el container. Se puede usar para fuzzing o para probar la resiliencia/ocultación de errores.

Parámetros:

amount

Acepta una expresión cuya evaluación por paquete determina con qué frecuencia se modificarán los bytes de ese paquete. Un valor inferior a 0 dará lugar a una frecuencia variable. El valor predeterminado es 0, lo que implica que no hay modificación. Sin embargo, si no se especifican ni amount ni drop, amount se fijará en -1. Véanse más abajo las variables aceptadas.

drop

Acepta una expresión evaluada por paquete cuyo valor determina si ese paquete se descarta. Si se evalúa a un valor positivo, el paquete se descarta. Si se evalúa a un valor negativo, da lugar a una probabilidad variable de descarte, aproximadamente inversa a la magnitud del valor. El valor predeterminado es 0, lo que implica que no hay descartes. Véanse más abajo las variables aceptadas.

dropamount

Acepta un entero no negativo, que asigna una probabilidad variable de descarte, aproximadamente inversa al valor. El valor predeterminado es 0, lo que implica que no hay descartes. Esta opción se conserva por compatibilidad con versiones anteriores y equivale a fijar drop en un valor negativo de la misma magnitud, es decir, dropamount=4 es lo mismo que drop=-4. Se ignora si drop también está especificado.

Tanto amount como drop aceptan expresiones que contengan las siguientes variables:

‘n’

El índice del paquete, empezando desde cero.

‘tb’

La timebase de las marcas de tiempo de los paquetes.

‘pts’

Marca de tiempo de presentación del paquete (presentation timestamp).

‘dts’

Marca de tiempo de decodificación del paquete (decoding timestamp).

‘nopts’

Constante que representa AV_NOPTS_VALUE.

‘startpts’

Primer PTS distinto de AV_NOPTS_VALUE visto en el flujo.

‘startdts’

Primer DTS distinto de AV_NOPTS_VALUE visto en el flujo.

‘duration’ ‘d’

Duración del paquete, en unidades de timebase.

‘pos’

Posición del paquete en la entrada; puede ser -1 cuando es desconocida o no está definida.

‘size’

Tamaño del paquete, en bytes.

‘key’

Si el paquete está marcado como keyframe.

‘state’

Un entero pseudoaleatorio, derivado principalmente del contenido de la carga útil del paquete.

2.25.1 Ejemplos

Aplica la modificación a todos los bytes, pero sin descartar ningún paquete.

ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv

Descarta todos los paquetes de vídeo no marcados como keyframe a partir del segundo 30, sin modificar el resto de los paquetes.

ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(pts*tb\,30)*not(key)' output.mkv

Descarta un segundo de audio cada 10 segundos y añade algo de ruido aleatorio al resto.

ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(pts*tb\,10)\,9\,10)' output.mkv

2.26 null

Este filtro de bitstream deja pasar los paquetes sin cambios.

2.27 pcm_rechunk

Reempaqueta el audio PCM a un número fijo de muestras por paquete o a una tasa fija de paquetes por segundo. Es similar al filtro de audio (ffmpeg-filters)asetnsamples, pero opera sobre paquetes de audio en lugar de fotogramas de audio.

nb_out_samples, n

Define el número de muestras por cada paquete de audio de salida. El número se entiende como muestras por cada canal. El valor predeterminado es 1024.

pad, p

Si se fija en 1, el filtro rellenará el último paquete de audio con silencio, de modo que contenga el mismo número de muestras (o aproximadamente el mismo, véase frame_rate) que los anteriores. El valor predeterminado es 1.

frame_rate, r

Esta opción hace que el filtro genere un número fijo de paquetes por segundo en lugar de un número fijo de muestras por paquete. Si la frecuencia de muestreo del audio no es divisible por la velocidad de fotogramas, el número de muestras no será constante, sino que variará ligeramente para que cada paquete empiece lo más cerca posible del límite de fotograma. Usar esta opción tiene prioridad sobre nb_out_samples.

El patrón 1602-1601-1602-1601-1602, bien conocido para audio de 48 kHz con la velocidad de fotogramas NTSC, se puede generar usando la opción frame_rate.

ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -

2.28 pgs_frame_merge

Fusiona en un único paquete una secuencia de segmentos de subtítulos PGS que termina con un segmento "end of display set".

Esto lo requieren algunos containers que admiten subtítulos PGS (muxer matroska).

2.29 prores_metadata

Modifica los metadatos de propiedades de color incrustados en un flujo prores.

color_primaries

Define los primarios de color. Los valores disponibles son:

‘auto’

Conserva la misma propiedad de primarios de color (valor predeterminado).

‘unknown’ ‘bt709’ ‘bt470bg’

BT601 625

‘smpte170m’

BT601 525

‘bt2020’ ‘smpte431’

DCI P3

‘smpte432’

P3 D65

transfer_characteristics

Define la transferencia de color. Los valores disponibles son:

‘auto’

Conserva la misma propiedad de características de transferencia (valor predeterminado).

‘unknown’ ‘bt709’

BT 601, BT 709, BT 2020

‘smpte2084’

SMPTE ST 2084

‘arib-std-b67’

ARIB STD-B67

matrix_coefficients

Define el coeficiente de matriz. Los valores disponibles son:

‘auto’

Conserva la misma propiedad de espacio de color (valor predeterminado).

‘unknown’ ‘bt709’ ‘smpte170m’

BT 601

‘bt2020nc’

Define el espacio de color Rec709 para cada fotograma del archivo

ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov

Define los parámetros Hybrid Log-Gamma para cada fotograma del archivo

ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov

2.30 remove_extra

Elimina el extradata de los paquetes.

Acepta el siguiente parámetro:

freq

Define de qué tipos de fotograma se elimina el extradata.

‘k’

Elimina el extradata solo de los fotogramas que no son keyframe.

‘keyframe’

Elimina el extradata solo de los keyframes.

‘e, all’

Elimina el extradata de todos los fotogramas.

2.31 setts

Define el PTS y el DTS en los paquetes.

Acepta los siguientes parámetros:

ts pts dts

Define expresiones para el PTS, el DTS o ambos.

duration

Define la expresión para la duración.

time_base

Define la timebase de salida.

prescale

Define si los campos de tiempo se convierten a la timebase de salida establecida por el usuario antes de evaluar las expresiones. El valor predeterminado es 0.

Las expresiones se evalúan mediante la API eval y pueden contener las siguientes constantes:

N

El contador del paquete de entrada. Empieza en 0.

TS

La marca de tiempo de demultiplexación de la entrada en el caso de las opciones ts o dts, o la marca de tiempo de presentación en el caso de la opción pts.

POS

La posición original del paquete en el archivo, o undefined si no está definida para el paquete actual

DTS

La marca de tiempo de demultiplexación de la entrada.

PTS

La marca de tiempo de presentación de la entrada.

DURATION

La duración de la entrada.

STARTDTS

El DTS del primer paquete.

STARTPTS

El PTS del primer paquete.

PREV_INDTS

El DTS de entrada anterior.

PREV_INPTS

El PTS de entrada anterior.

PREV_INDURATION

La duración de entrada anterior.

PREV_OUTDTS

El DTS de salida anterior.

PREV_OUTPTS

El PTS de salida anterior.

PREV_OUTDURATION

La duración de salida anterior.

NEXT_DTS

El DTS de entrada siguiente.

NEXT_PTS

El PTS de entrada siguiente.

NEXT_DURATION

La duración de entrada siguiente.

TB

La timebase en la que se expresan los campos de tiempo. La timebase de salida establecida por el usuario si prescale está habilitado; en caso contrario, la timebase de entrada.

TB_OUT

La timebase de salida.

SR

La frecuencia de muestreo del flujo al que pertenece el paquete.

NOPTS

La constante AV_NOPTS_VALUE.

Por ejemplo, para igualar el PTS al DTS (no recomendado si hay fotogramas B implicados):

ffmpeg -i INPUT -c:a copy -bsf:a setts=pts=DTS out.mkv

2.32 showinfo

Registra información básica de los paquetes. Útil principalmente para pruebas, depuración y desarrollo.

2.33 smpte436m_to_eia608

Convierte un flujo de datos SMPTE_436M_ANC en un flujo EIA_608, extrayendo los subtítulos ocultos de los paquetes VANC CDP CTA-708 e ignorando el resto de los datos.

2.34 text2movsub

Convierte subtítulos de texto en subtítulos MOV (como los que usa el codec mov_text) con cabeceras de metadatos.

Véase también el filtro mov2textsub.

2.35 trace_headers

Registra una salida de traza con todos los elementos sintácticos de las cabeceras del flujo codificado (todo lo que está por encima del nivel de los bloques codificados individuales). Puede ser útil para depurar problemas de bajo nivel del flujo.

Admite AV1, H.264, H.265, (M)JPEG, MPEG-2 y VP9, aunque, según la compilación, puede que solo esté disponible un subconjunto de ellos.

2.36 truehd_core

Extrae el núcleo de un flujo TrueHD, descartando los datos ATMOS.

2.37 vp9_metadata

Modifica los metadatos incrustados en un flujo VP9.

color_space

Define el valor del espacio de color en la cabecera de fotograma. Cabe señalar que cualquier fotograma definido como RGB pasará implícitamente a rango PC, y que RGB es incompatible con los profiles 0 y 2.

‘unknown’ ‘bt601’ ‘bt709’ ‘smpte170’ ‘smpte240’ ‘bt2020’ ‘rgb’ color_range

Define el valor del rango de color en la cabecera de fotograma. Cabe señalar que cualquier valor impuesto por el espacio de color tendrá prioridad sobre este valor.

‘tv’ ‘pc’

2.38 vp9_superframe

Vuelve a fusionar los fotogramas invisibles (alt-ref) de VP9 en superframes de VP9. Esto corrige la fusión de flujos VP9 divididos o segmentados en los que el fotograma alt-ref se separó de su contraparte visible.

2.39 vp9_superframe_split

Divide los superframes de VP9 en fotogramas individuales.

2.40 vp9_raw_reorder

Dado un flujo VP9 con marcas de tiempo correctas pero posiblemente desordenado, inserta paquetes show-existing-frame adicionales para corregir el orden.

3 Véase también

ffmpeg, ffplay, ffprobe, libavcodec

4 Autores

Los desarrolladores de FFmpeg.

Para más información sobre la autoría, consulte el historial de Git del proyecto (https://git.ffmpeg.org/ffmpeg); por ejemplo, ejecutando el comando git log en el directorio de fuentes de FFmpeg, o consultando el repositorio en línea en https://git.ffmpeg.org/ffmpeg.

Los mantenedores de los distintos componentes figuran en el archivo MAINTAINERS del árbol de código fuente.

Alojamiento proporcionado por telepoint.bg