Intento agregar mi logotipo durante los primeros 30 segundos en un video con ffmpeg. Tengo un video llamado d1.mp4
y un logotipo llamado logo.png
.
Cuando comienza el video, la marca de agua debe estar en la esquina superior izquierda o superior derecha del video y desaparecer después de 30 segundos.
¿Me puede mostrar cómo agregarlo?
ffmpeg -i d1.mp4 -i logo.png
muestra? Simplemente ingrese ese comando y muéstrenos cuál es la salida. Cuandoffmpeg
haga preguntas sobre , siempre debe incluir tantos detalles como sea posible sobre el material de video / audio que tiene, lo que ya intentó y la salida completa de la línea de comandos de todo lo que ha intentado.Respuestas:
Esto supone que el logotipo es una única imagen fija con un canal alfa y desea superponerlo sobre un video con una velocidad de cuadros de 30000/1001 (velocidad NTSC). Cambie
-framerate
para que coincida con su video de entrada si es diferente. Si su logotipo es un video, omítalo-framerate 30000/1001 -loop 1
. Si el logotipo no tiene un canal alfa, agregue uno insertando, por ejemplo,format=yuva420p,
inmediatamente antesfade
.Esto mostrará el logotipo en la posición x, y 10,10 durante 30 segundos seguido de un desvanecimiento de 1 segundo.
fuente
framerate
yloop
se requieren en este caso y no por una simple superposición sin filtro de desvanecimiento?-framerate
y-loop
para una imagen fija es para que el desvanecimiento funcione. Si solo hay un solo cuadro, entonces no tiene forma de desvanecerse en un intervalo de 1 segundo. Idealmente, debería ser la misma velocidad de cuadros que el video para que el desvanecimiento sea lo más suave posible.Uso del
overlay
filtro de video para agregar un logotipo a un video:Para comprender este comando, necesita saber qué es un especificador de flujo y leer la Introducción al filtrado FFmpeg será de gran ayuda.
[0:v]
se refiere a la transmisión de video de la primera entrada (video.mp4
), y se[1:v]
refiere a la transmisión de video de la segunda entrada (logo.mp4
). Así es como puede saberoverlay
qué entradas usar. Puede omitir[0:v][1:v]
, yoverlay
seguirá funcionando, pero se recomienda que sea explícito y no dependa de valores predeterminados posiblemente desconocidos.Por defecto, el logotipo se colocará en la esquina superior izquierda.
El uso
-codec:a copy
será transmitir copiar el audio. Esto simplemente vuelve a silenciar el audio en lugar de volver a codificarlo. Piense en ello como un "copiar y pegar" del audio.Moviendo el logo
Este ejemplo moverá el logotipo 10 píxeles hacia la derecha y 10 píxeles hacia abajo:
Este ejemplo moverá el logotipo 10 píxeles desde el lado derecho y 10 píxeles hacia abajo:
main_w
se refiere al ancho de la entrada "principal" (el fondo o[0:v]
), y seoverlay_w
refiere al ancho de la entrada "superpuesta" (el logotipo o[1:v]
). Entonces, en el ejemplo, esto se puede traducir aoverlay=320-90-10:10
ooverlay=220:10
.Momento de la superposición
Algunos filtros pueden manejar la edición de la línea de tiempo que le permite usar expresiones aritméticas para determinar cuándo se debe aplicar un filtro. Consulte para
ffmpeg -filters
ver qué filtros admiten la edición de la línea de tiempo.Este ejemplo mostrará el logotipo hasta 30 segundos:
Si desea desvanecer el logotipo, consulte la respuesta de mark4o .
fuente
enable=not(between'(t,30,50)')
. Esto mostrará la superposición en todo momento, pero no con una duración de 30-60 segundos.overlay
solo, lo hice, porque la posición predeterminada de la esquina superior izquierda era lo que quería. (Entonces, al final, mis banderas eran simplementefilter_complex overlay
.)