Quiero usar FFmpeg para agregar una marca de agua pero quiero que el video tenga la misma calidad. ¿Cómo puedo hacer eso?
Intenté usarlo -vcodec copy -acodec copy
pero no tenía marca de agua:
ffmpeg -y -i treino.mp4 -vf "movie=logo.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -vcodec copy -acodec copy video2.mp4
Respuesta1
Estás usando un filtro y el filtrado requiere volver a codificarse, por lo que no puedes usarlo -vcodec copy
.copia de flujoel video. Si desea la "misma calidad", deberá utilizar un codificador sin pérdidas:
ffmpeg -i video.mp4 -i image.png -filter_complex overlay -c:v libx264 -crf 0 -c:a copy -movflags +faststart output.mp4
El archivo resultante puede ser enorme: esto es lo que se espera de las salidas sin pérdidas.
Es posible que su reproductor o dispositivo no pueda reproducir el archivo sin pérdidas.
Si desea una salida "visualmente sin pérdidas", que técnicamente no tiene pérdidas pero parece casi serlo, utilice
-crf 18
en lugar de-crf 0
.No hay necesidad depelículafiltro de fuente. Simplemente agregue su imagen superpuesta como entrada como cualquier otro archivo como se muestra en mi ejemplo.
Como estás usando PHP, asumiré que presentarás los videos mediante descarga progresiva. Agregue
-movflags +faststart
para que pueda comenzar la reproducción antes de que el archivo se descargue por completo.