Ajouter un logo sur une vidéo

Pour tagger mes vidéos en masse avec un logo, j’ai recherché un peu sur Internet ce qui pouvait être fait en ligne de commande.

Sous Debian Jessie, il n’y a plus ni mencoder ni ffmpeg. J’avais des scripts avec le premier, faut les changer…
En remplacement, il faut installer libav-tools et utiliser la commande avconv.
CF : https://libav.org/avconv.html

Pour avoir un maximum de compatibilité avec les lecteurs vidéo et autres platines multimédia, j’encode la sortie vidéo en MPEG-4.

Il faut bien sûr un logo de la taille attendue sur la vidéo, au format PNG. Par exemple une image de 100px par 100px avec de la transparence :

logo

Pour insérer le logo sur la vidéo en haut à gauche (à 20px du bord) :
avconv -i $input -strict experimental -threads auto -vcodec libx264 -crf 20 -g 2
-vf "movie=$logo [watermark];[in][watermark] overlay=20:20 [out]" $output

Pour insérer le logo sur la vidéo en haut à droite :
avconv -i $input -strict experimental -threads auto -vcodec libx264 -crf 20 -g 2
-vf "movie=$logo [watermark];[in][watermark] overlay=main_w-overlay_w-20:20 [out]" $output

Pour insérer le logo sur la vidéo en bas à gauche :
avconv -i $input -strict experimental -threads auto -vcodec libx264 -crf 20 -g 2
-vf "movie=$logo [watermark];[in][watermark] overlay=20:main_h-overlay_h-20 [out]" $output

Pour insérer le logo sur la vidéo en bas à gauche :
avconv -i $input -strict experimental -threads auto -vcodec libx264 -crf 20 -g 2
-vf "movie=$logo [watermark];[in][watermark] overlay=main_w-overlay_w-20:main_h-overlay_h-20 [out]" $output

Pour insérer le logo sur la vidéo en bas au milieu :
avconv -i $input -strict experimental -threads auto -vcodec libx264 -crf 20 -g 2
-vf "movie=$logo [watermark];[in][watermark] overlay=(main_w/2)-50:main_h-overlay_h-20 [out]" $output

La valeur -50, c’est la taille du logo divisé par 2.

Pour réduire la résolution de la vidéo, et donc la place et la qualité :
avconv -i $input -strict experimental -threads auto -vcodec libx264 -crf 20 -g 2
-vf "movie=$logo [watermark];[in] scale=1280:720 [cropped],[cropped][watermark] overlay=(main_w/2)-50:main_h-overlay_h-20 [out]" $output

Pour réduire le bitrate, et donc encore la place et la qualité :
avconv -i $input -strict experimental -threads auto -vcodec libx264 -b:v 10000k -bt:v 5000k
-vf "movie=$logo [watermark];[in] scale=1280:720 [cropped],[cropped][watermark] overlay=(main_w/2)-50:main_h-overlay_h-20 [out]" $output

Il ne reste plus qu’à faire le tour de toutes les vidéos à tagger… Une bonne vieille boucle en bash sur un find de la mort dans le dossier des vidéos… et beaucoup de temps…