Поскольку подсистема vhook была удалена из последней версии FFMPEG, как я могу добавить водяной знак к видео?ffmpeg водяной знак без вкупок?
Мне нужно обладать PNG с прозрачностью фона.
Поскольку подсистема vhook была удалена из последней версии FFMPEG, как я могу добавить водяной знак к видео?ffmpeg водяной знак без вкупок?
Мне нужно обладать PNG с прозрачностью фона.
Если вы знакомы с Java, вы можете сделать это с помощью Xuggler. В частности, учебные пособия для API MediaTool Xuggler показывают, как декодировать и кодировать видео, а также отдельно, как сделать видео с нуля с помощью созданных изображений. Совсем не сложно объединить эти концепции, чтобы сделать программу, которая может декодировать видео, наложить PNG на видео и затем перекодировать.
Используя Xuggler, мы можем сделать это в java. при кодировании видео с помощью IMediaTool, вы получите последовательность изображений. Используя эти изображения, поместите метки воды на каждое из этих изображений и создайте выходной видеосигнал. Ниже приведен блок кода
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 .........................*/
Лучшее, что я мог бы достичь был http://www.corbellconsulting.com/2010/07/using-ffmpeg-to-add-and-watermark-overlay-on-a-video-2/
Однако, я не могу заставить его работать с FFmpeg 0.6.2.
Удачи.
Если вы скомпилируете ffmpeg из официального репозитория git, вам, вероятно, стоит обратить внимание на синтаксис, потому что он немного изменился в более новых версиях.
Старый
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
Новый
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
Я хотел бы остаться с FFmpeg, кодирование различных форматов уже достаточно сложно с цепочкой один инструмент, и я не хотел бы, чтобы бросить еще один в смешивание. Спасибо за предложение! –