FFMPEG: comment ajouter un filigrane à la vidéo?


0

Ma plate-forme: Ubuntu 10.10 + FFMPEG 0.5.3 (j'ai installé ffmpeg à partir du code source)

J'essaie d'ajouter Watermark à une vidéo .MOV avec FFMPEG 0.5.3 imlib2.so(veuillez noter que FFMPEG 0.6+ ne prend pas en charge imlib2.so, j'utilise donc ffmpeg 0.5.3)

Voici mon code:

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

Voici la sortie:

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

Quel pourrait être le problème possible? Est-ce que AAC ou H264 n'est pas pris en charge?

J'ai installé libavcodec-extra-52, linfaac, libfaad, etc., mais l'erreur est la même.

Dois-je installer en suivant cette instruction? HOWTO: Installer et utiliser les dernières versions de FFmpeg et x264 ou existe-t-il une solution plus simple?


Si vous avez corrigé votre propre question, inscrivez la solution dans une réponse distincte.
Wuffers

@Mark Szymanski Où a-t-il donné l'impression qu'il avait "résolu" / résolu sa propre question?
Barlop

@barlop: si vous regardez les révisions, vous verrez qu'il a posté et mis à jour sa question avec une réponse.
Wuffers

Réponses:


1

La manière correcte de procéder avec ffmpeg récent consiste à utiliser le filtre de superposition. La commande suivante sera placée watermark.pngau-dessus de input.mp4, avec le coin supérieur gauche du filigrane à quinze pixels à droite et à dix pixels du coin supérieur gauche de la vidéo 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

Évidemment, remplacez 15 ou 10 par la valeur que vous souhaitez.

Il existe également quelques constantes qui pourraient vous être utiles si vous appliquez des filigranes à plusieurs vidéos avec des résolutions distinctes:

  • W et H sont la largeur et la hauteur de la vidéo principale ( input.mp4)
  • w et h sont la largeur et la hauteur de la vidéo de superposition ( watermark.png)

Ceux-ci peuvent être utiles plusieurs fois. Par exemple, pour placer le filigrane au centre de la vidéo, vous pouvez utiliser:

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

De même, pour centrer le filigrane sur le sixième en haut à gauche de la vidéo:

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

Pour le sixième en bas à gauche de la vidéo:

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

Vous pouvez faire à peu près tout ce dont vous avez besoin.

Consultez la documentation du filtre de superposition pour plus d'informations.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.