Adicione uma imagem como marca d'água a um arquivo de vídeo com ffmpeg

0

Eu gostaria de adicionar um texto a um arquivo de vídeo com o FFMPEG. Enquanto eu era capaz de fazer isso com texto simples

$FFMPEG -y -i $SOURCE \ -vf drawtext="fontfile=/usr/share/fonts/Lato-Reg-webfont.ttf:fontsize=40:box=1:boxcolor=black:fontcolor=white:text='$WATERMARK':x=(main_w-text_w)-10:y=(main_h-text_h)-4" \ -threads $THREADS -f mp4 -vcodec mpeg4 -b $MOBILE_BITRATE -r $MOBILE_FRAME_RATE -strict -2 \ -s $RESOLUTION_SD -acodec libfaac -ar $MOBILE_AUDIO_RATE -ac $MOBILE_AUDIO_CHANNELS -ab $MOBILE_AUDIO_BITRATE \ $VIDEONAME_MOBILE-android.mp4

isso não parece bom o suficiente. Então eu tentei adicionar um arquivo PNG transparente como marca d'água. Procurando exemplos eu tentei assim:

$FFMPEG -y -i $SOURCE \ -vf "movie=$WATERMARK_SMALL_PATH [watermark]; [in][watermark] overlay=10:main_h/2-overlay_h/2 [out]" \ -threads $THREADS -f mp4 -vcodec mpeg4 -b $MOBILE_BITRATE -r $MOBILE_FRAME_RATE -strict -2 \ -s $RESOLUTION_SD -acodec libfaac -ar $MOBILE_AUDIO_RATE -ac $MOBILE_AUDIO_CHANNELS -ab $MOBILE_AUDIO_BITRATE \ $VIDEONAME_MOBILE-android.mp4

não vai funcionar. Eu posso compartilhar a saída exata do erro se isso puder ser útil para qualquer pessoa.

    
por Alex Flo 19.11.2013 / 14:01

1 resposta

7

Com o filtro de sobreposição, você não precisa do formato movie= . É mais fácil, então use este formato:

ffmpeg -y -i inputmovie -i inputpicture.png -filter_complex 'overlay=0:0' -s 1280x720 ...other parameters... outputfile.mp4

O tamanho que coloquei é apenas um exemplo - o seu será diferente. Observe que o tamanho é o mesmo para a imagem e para o quadro do filme, e nenhum dimensionamento está sendo feito aqui. O 0:0 é para o alinhamento da imagem no canto superior esquerdo do quadro do filme - isso é lógico, pois ambos têm o mesmo tamanho.

    
por 20.11.2013 / 04:07

Tags