Una breve introducción al filtro de filtro en FFMPEG

La función del filtro es principalmente procesar los datos de audio y video originales para lograr varios efectos. Como superponer marcas de agua, voltear y hacer zoom en videos, etc.

La siguiente figura muestra el proceso de transcodificación normal, el filtro está en medio de la decodificación y la codificación, y la línea punteada indica que es opcional.

Use el comando para ver los filtros compatibles con ffmpeg

ffmpeg -filtros 

Ver parámetros detallados de un filtro

ffmpeg -h filtro=almohadilla

 La figura anterior muestra la función y los parámetros requeridos del filtro de almohadilla.

Los filtros en ffmpeg se pueden dividir en:

  1. filtro de fuente solo salida
  2. filtro de audio filtro de audio
  3. filtro de video filtro de video
  4. filtro multimedia filtro complejo
  5. filtro de fregadero solo entrada

Aquí se deben mencionar dos filtros especiales: buffer y buffersink .
(1) Búfer: el búfer de filtro representa la fuente en el gráfico de filtro y los datos originales se ingresan en este nodo de filtro. Al llamar a la función proporcionada por el filtro (como av_buffersrc_add_frame), el marco que se filtrará se puede transmitir al proceso de filtrado. Al crear la instancia de filtro, debe proporcionar algunos parámetros necesarios sobre el formato del cuadro de entrada (como: base de tiempo, ancho y alto de la imagen, formato de píxel de la imagen, etc.).

(2) buffersink: un filtro especial, el filtro buffersink representa el nodo de salida en el gráfico de filtro, y los datos procesados ​​se emiten desde este nodo de filtro. Al llamar a la función proporcionada por el filtro (como av_buffersink_get_frame), se puede proporcionar el marco después de ser filtrado por el proceso de filtrado.

A excepción de los filtros fuente y sumidero, todos los demás filtros tienen al menos una entrada y al menos una salida.

También se puede dividir simplemente en filtros simples y filtros complejos.

Filtro simple: solo una entrada y salida, use -vf (filtro de video),   -af (filtro de audio) en la línea de comando  

 Filtro complejo: con múltiples entradas y salidas, use  -lavfi o -filter_complex en la línea de comando

En la siguiente figura, se proporciona un ejemplo oficial de filtergrpah:

 En este gráfico de filtros, podemos ver que usando 4 filtros

1. Use el filtro dividido para copiar el flujo de entrada en dos salidas de flujo, una llamada principal y otra tmp

2. Use el filtro de recorte para recortar el flujo de tmp

3. Use vflip para voltear verticalmente la transmisión tmp

4. Use la superposición para superponer la transmisión tmp en la transmisión principal

Se puede expresar usando la línea de comando de la siguiente manera

ffmpeg -i INPUT -vf 'split [principal][tmp]; [tmp] crop=iw:ih/2:0:0,vflip [voltear]; [principal][voltear] superposición=0:H/2' SALIDA

Los filtros de la misma ruta están separados por comas (',') y los filtros de diferentes rutas están separados por punto y coma (';').



 

Sintaxis de filtro

Sintaxis de filtro

filter_name=param_name1=param_value1:param_name2=param_value2

filter_name: es el nombre del filtro, debe tener, sus parámetros son opcionales, separados por ":" o "+", puede tener nombres de parámetros o no;

Por ejemplo:

ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[ v]' v.avi

Este filtro que extrae los componentes Y, U y V del video tiene tres salidas, que son [y][u][v]. Después de la extracción, guarde diferentes salidas en diferentes archivos.

Un filtro sin entrada de audio y video se llama filtro de fuente

Un filtro sin salida de audio y video se llama filtro sumidero

Sintaxis de la cadena de filtros

filtro1,filtro2,....

Es una combinación de múltiples filtros, separados por comas, y cada filtro es la entrada y la salida del filtro anterior;

ffmpeg -i audio.aac -filter_complex "aresample=async=16000,adelay=316397,volume=1.0" -acodec libfdk_aac -y salida.mp4

Aquí se utilizan tres filtros, respectivamente, muestra, retraso, volumen, para formar una cadena de filtros;

Gramática de filtergraph

filtrocadena1;filtrocadena2;...

Es una combinación de varias cadenas de filtros, separadas por un punto y coma ";",

ffmpeg -i INPUT -filter_complex "dividir [principal][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [principal][flip] overlay=0:H/2" SALIDA

Aquí se utilizan tres cadenas de filtros, a saber:

split [main][tmp]; // solo tiene un filtro, es decir split, tiene una entrada por defecto, es decir, el marco decodificado de INPUT;

Hay dos salidas, identificadas por [main], [tmp];

[tmp] crop=iw:ih/2:0:0, vflip [flip] // Consta de dos filtros, crop y vflip, uno de entrada [tmp], uno de salida [flip];

[main][flip] overlay=0:H/2 // Consiste en un filtro, a saber, overlay, con dos entradas, a saber, [main][flip], una salida predeterminada;

filtros comunes

  • scale: escalado del video/imagen
  • superposición: superposición de video/imagen
  • recorte: recorte de video/imagen
  • recortar: interceptar videoclips
  • rotar: rotar el video en cualquier ángulo
  • película: cargue videos e imágenes de terceros
  • yadif: desentrelazado
  • almohadilla: video de relleno
  • dibujar texto: agregar texto

Supongo que te gusta

Origin blog.csdn.net/yunxiaobaobei/article/details/130442824
Recomendado
Clasificación