FFMPEG: como adicionar marca d'água ao vídeo?

0

Minha plataforma: Ubuntu 10.10 + FFMPEG 0.5.3 (instalei o ffmpeg a partir do código-fonte)

Eu tento adicionar Watermark a um vídeo .MOV com FFMPEG 0.5.3 imlib2.so (Por favor, note que o FFMPEG 0.6+ não suporta imlib2.so , então eu uso o ffmpeg 0.5.3)

Aqui está o meu código:

ffmpeg -sameq -i example.mov -vhook '/usr/local/lib/vhook/imlib2.so -x 0 -y 0 -i /var/www/files/watermark.png' newexample.mov

Aqui está a saída:

FFmpeg version 0.5.3, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --enable-avfilter --enable-filter=movie --enable-avfilter-lavf
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  built on Jul  3 2011 12:05:08, gcc: 4.4.5

Seems stream 1 codec frame rate differs from container frame rate: 59.94 (5994/100) -> 29.97 (30000/1001)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'example.mov':
  Duration: 00:03:14.06, start: 0.000000, bitrate: 3350 kb/s
    Stream #0.0(eng): Audio: aac, 48000 Hz, stereo, s16
    Stream #0.1(eng): Video: h264, yuv420p, 1150x647, 29.97 tbr, 29.97 tbn, 59.94 tbc
Output #0, mov, to 'newexample.mov':
    Stream #0.0(eng): Video: mpeg4, yuv420p, 1150x647, q=2-31, 200 kb/s, 90k tbn, 29.97 tbc
    Stream #0.1(eng): Audio: 0x0000, 48000 Hz, stereo, s16, 64 kb/s
Stream mapping:
  Stream #0.1 -> #0.0
  Stream #0.0 -> #0.1
Unsupported codec for output stream #0.1

Qual poderia ser o possível problema? Isso é AAC ou H264 que não é suportado?

Eu instalei libavcodec-extra-52, linfaac, libfaad e etc., mas o erro é o mesmo.

Eu tenho que instalar seguindo esta instrução? COMO: Instalar e usar o último FFmpeg e x264 ou existe uma solução mais simples?

    
por DocWiki 09.07.2011 / 22:22

1 resposta

1

A maneira correta de fazer isso com o ffmpeg recente é usar o filtro de sobreposição. O comando a seguir colocará watermark.png sobre input.mp4 , com o canto superior esquerdo da marca d'água quinze pixels à direita e dez pixels abaixo do canto superior esquerdo do vídeo principal:

ffmpeg -i input.mp4 -i watermark.png -filter_complex \
'[0:v][1:v]overlay=15:10[outv]' -map [outv] -map [0:a] \
-c:a copy -c:v libx264 -crf 22 -preset veryfast output.mp4

Obviamente, altere 15 ou 10 para os valores desejados.

Existem também algumas constantes que podem ser úteis se você colocar marcas d'água em vários vídeos com resoluções separadas:

  • W e H são a largura e a altura do vídeo principal ( input.mp4 )
  • w e h são a largura e a altura do vídeo de sobreposição ( watermark.png )

Estes podem ser úteis muitas vezes. Por exemplo, para colocar a marca d'água no centro do vídeo, você pode usar:

'[0:v][1:v]overlay=(W-w)/2:(H-h)/2[outv]'

Da mesma forma, para centralizar a marca d'água no sexto canto superior esquerdo do vídeo:

'[0:v][1:v]overlay=(W-w)/6:(H-h)/6[outv]'

Para o sexto inferior esquerdo do vídeo:

'[0:v][1:v]overlay=(W-w)/6:(H-h)/(6/5)[outv]'

Você pode muito bem fazer o que precisar.

Consulte a documentação do filtro de sobreposição para obter mais informações.

    
por 24.01.2013 / 23:20