Используйте ffmpeg для нанесения водяных знаков и масштабирования изображения на видео. - PullRequest
4 голосов
/ 22 ноября 2011

Я хочу иметь возможность ставить водяные знаки на видео с изображением логотипа, которое содержит URL-адрес веб-сайта.Видео могут быть разных форматов и размеров.Я пытаюсь выяснить общую команду ffmpeg, чтобы добиться этого, так что мне не нужно настраивать команду в зависимости от видео, которое я должен обработать.До сих пор я получил:

ffmpeg -i sample.mov -sameq -acodec copy -vf 'movie=logo.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]' sample2.mov

Таким образом, хотя логотип будет выглядеть слишком большим или слишком маленьким с видео другого размера.Я видел, что есть опция scale для avfilter, но я не выяснил, можно ли изменить размер логотипа изображения в зависимости от размера входного видео, чтобы я мог сказать, чтобы масштабироватьлоготип до 1/3 длины видео, например, и сохранить соотношение изображения.

Есть идеи?не нужно делать в одной команде, может даже быть скриптом.заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 23 ноября 2011

Тем временем я придумал этот скрипт, который выполняет свою работу:

#!/bin/bash

VIDEO=$1
LOGO=$2
VIDEO_WATERMARKED=w_${VIDEO}

VIDEO_WIDTH=`ffprobe -show_streams $VIDEO 2>&1 | grep ^width | sed s/width=//`
echo The video width is $VIDEO_WIDTH

cp $LOGO logo.png
IMAGE_WIDTH=$((VIDEO_WIDTH/3))
echo The image width will be $IMAGE_WIDTH

mogrify -resize $IMAGE_WIDTH logo.png
echo logo.png resized

echo Starting watermarking
ffmpeg -i $VIDEO -sameq -acodec copy -vf 'movie=logo.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]' $VIDEO_WATERMARKED
echo Video watermarked

Единственное, в чем я не уверен, так это в том, как сохранить то же качество видео.Я думал, что "-sameq" сохранит то же качество видео, но в результате размер видео будет меньше.Я заметил это:

INPUT
Duration: 00:01:25.53, start: 0.000000, bitrate: 307 kb/s
    Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), 
yuv420p, 640x480 [SAR 1:1 DAR 4:3], 261 kb/s, 10 fps, 10 tbr, 3k tbn, 25 tbc
OUTPUT
   encoder         : Lavf53.20.0
    Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p, 640x480 [SAR 1:
1 DAR 4:3], q=-1--1, 10 tbn, 10 tbc

, тогда как аудиоинформация идентична.Любой совет, как сохранить оригинальное качество видео?спасибо

1 голос
/ 12 мая 2015

Спасибо за идею, а!

...