Titrage vidéo en ligne de commande avec ffmpeg
Tags : video
Un soir de calme je me dis tranquillement, tiens je vais monter une petite vidéo. Rien de bien compliquer, deux vidéos provenant d'un appareil photo numérique à fusionner avec quelques pages de titres... Tout motivé j'essai Cinelerra, Kino, KDEnlive... Galère ! Usine à gaz ! Crash d'application ! Format non supporté ! La misère.
Retour à la réalité. Les applications graphiques klika-convi-crash c'est pas pour moi. Hop, méthode oldschool avec un peu de Gimp, ffmpeg et du shellJ'ai deux fichiers :
% ffmpeg -i cimg0768.avi libavutil version: 49.5.0 libavcodec version: 51.44.0 libavformat version: 51.13.3 built on Sep 17 2007 15:29:56, gcc: 4.2.1 (Debian 4.2.1-5) Input #0, avi, from 'cimg0768.avi': Duration: 00:00:50.6, start: 0.000000, bitrate: 2006 kb/s Stream #0.0: Video: mjpeg, yuvj420p, 320x240, 14.99 fps(r) Must supply at least one output file
Première étape, le me fabrique mes titres en 320*240 avec The Gimp. De simples images PNG. Dans un coin, je joue du Bash pour multiplier tout cela. Il m'en faut 30 pour 2 secondes de titre en 15fps :
for ((i=1;i<=30;i+=1)); do cp ../premier.png premier$i.png; done
On fabrique une video :
% ffmpeg -f image2 -r 15 -i premier%d.png premier.avi
On fait de même pour les autres titres et on obtient quatre videos mpeg4.
Attention nos videos de l'APN sont en mjpeg. Hop conversion :
% ffmpeg -i cimg0768.avi -r 15 v1.avi % ffmpeg -i cimg0769.avi -r 15 v2.avi
Et on assemble le tout :
% avimerge -o OK.avi -i premier.avi second.avi \ v1.avi troisieme.avi v2.avi fin.avi
Et voilà. Titrage sans crise de nerfs.
Cadeau bonus : un petit lien sympa.