Como el subsistema vhook se ha eliminado de la última versión de FFMPEG, ¿cómo puedo agregar una marca de agua a un video?ffmpeg marca de agua sin vhook?
Necesito poder superponer un PNG con transparencia de fondo.
Como el subsistema vhook se ha eliminado de la última versión de FFMPEG, ¿cómo puedo agregar una marca de agua a un video?ffmpeg marca de agua sin vhook?
Necesito poder superponer un PNG con transparencia de fondo.
Si está familiarizado con Java, puede hacerlo con Xuggler. En particular, los tutoriales para la API MediaTool de Xuggler le muestran cómo decodificar y codificar un video y, por separado, cómo hacer un video desde cero con las imágenes que crea. No es difícil combinar también esos conceptos para crear un programa que pueda decodificar un video, superponer un PNG en el video y luego recodificarlo.
Usando Xuggler podemos hacer esto en Java. mientras codifica el video usando IMediaTool, obtendrá una secuencia de imágenes. Usando estas imágenes, coloque marcas de agua en cada una de estas imágenes y genere un video de salida. A continuación se presenta el bloque de código
BufferedImage imageB = event.getImage();
/*....................... water mark .........................*/
Graphics2D g2d = (Graphics2D) imageB.getGraphics();
g2d.drawImage(imageB, 0, 0, null);
//Create an alpha composite of 50%
AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f);
g2d.setComposite(alpha);
g2d.setColor(Color.YELLOW);
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d.setFont(new Font("Arial", Font.BOLD, 30));
String watermark = "Sample water mark";
FontMetrics fontMetrics = g2d.getFontMetrics();
Rectangle2D rect = fontMetrics.getStringBounds(watermark, g2d);
yScrolling = imageB.getHeight() - (int) rect.getHeight()/2;
g2d.drawString(watermark, (imageB.getWidth() - (int) rect.getWidth())/2,
(imageB.getHeight() - (int) rect.getHeight())/2);
g2d.drawString(watermark, xScrolling,yScrolling);
//Free graphic resources
g2d.dispose();
/*....................... water mark .........................*/
Lo mejor que pude llegar fue http://www.corbellconsulting.com/2010/07/using-ffmpeg-to-add-and-watermark-overlay-on-a-video-2/
Sin embargo, no soy capaz de conseguir que funcione con FFmpeg 0.6.2.
Buena suerte.
Si compila ffmpeg desde el repositorio oficial de git, probablemente deba prestar atención a la sintaxis porque ha cambiado un poco en las versiones más recientes.
Antiguo
ffmpeg -i input.mp4 -acodec copy -vf "movie=0:png:watermark.png [wm];[in][wm] overlay=5:5:1 [out]" -f mp4 -b 2500k -vcodec libx264 -vpre fast -ac 1 -y output.mp4
Nueva
ffmpeg -i input.mp4 -acodec copy -vf "movie=watermark.png [wm];[in][wm] overlay=5:5 [out]" -f mp4 -b 2500k -vcodec libx264 -vpre fast -ac 1 -y output.mp4
me gustaría quedarse con ffmpeg, la codificación de varios formatos ya es suficientemente duro con la cadena de una herramienta y no me gustaría lanzar una en la otra mezcla. ¡Gracias por la sugerencia! –