FFMPEG: come aggiungere watermark al video?


0

La mia piattaforma: Ubuntu 10.10 + FFMPEG 0.5.3 (Ho installato ffmpeg dal sorgente)

Provo ad aggiungere Watermark a un video .MOV con FFMPEG 0.5.3 imlib2.so (Si prega di notare FFMPEG 0.6+ non supporta imlib2.so, quindi uso ffmpeg 0.5.3)

Ecco il mio codice:

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

Ecco l'output:

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

Quale potrebbe essere il possibile problema? È AAC o H264 che non è supportato?

Ho installato libavcodec-extra-52, linfaac, libfaad e così via, ma l'errore è lo stesso.

Devo installare seguendo queste istruzioni? HOWTO: installa e usa gli ultimi FFmpeg e x264 o c'è una soluzione più semplice?


Se hai risolto la tua domanda, metti la soluzione in una sua risposta.
Wuffers

@ Mark Szymanski Dove ha dato l'impressione di aver "risolto" / risolto la sua stessa domanda?
barlop

@barlop: se guardi le revisioni, vedrai che ha postato e aggiornato alla sua domanda che include una risposta.
Wuffers

Risposte:


1

Il modo corretto per farlo con il recente ffmpeg è usare il filtro di sovrapposizione. Il seguente comando inserirà watermark.png in cima a input.mp4, con l'angolo superiore sinistro della filigrana quindici pixel a destra e dieci pixel in basso dall'angolo superiore sinistro del video principale:

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

Ovviamente, cambia 15 o 10 con qualsiasi valore tu voglia.

Ci sono anche alcune costanti che potresti trovare utili, se stai mettendo filigrane su più video con risoluzioni separate:

  • W e H sono la larghezza e l'altezza del video principale ( input.mp4 )
  • w e h sono la larghezza e l'altezza del video di sovrapposizione ( watermark.png )

Questi possono tornare utili molte volte. Ad esempio, per posizionare la filigrana al centro del video, è possibile utilizzare:

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

Allo stesso modo, per centrare la filigrana sopra il sesto in alto a sinistra del video:

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

Per la sesta parte inferiore sinistra del video:

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

Puoi praticamente fare tutto il necessario.

Vedere il filtro di sovrapposizione documentazione per ulteriori informazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.