PODCASMEIN.DE vous aide à podcaster

Une vidéo d'extrait de podcast audio avec forme d'onde et sous-titres

Cette page propose de vous aider à créer une courte vidéo de promotion pour un podcast audio. Elle superposera sur une image fixe le son extrait de votre podcast, créera une forme d'onde sonore en mouvement à partir du son, et incrustera des sous-titres sur la vidéo. Tout cela sera fait gratuitement à l'aide de l'utilitaire ffmpeg. Un exemple de résultat posté sur Youtube est visible ici.

Pré-requis

Vous aurez besoin pour réaliser votre vidéo de :

La ligne de commande exemple

Ce tutoriel étant fait à l'arrache, accrochez-vous on va apprendre par l'exemple. Voici la ligne de commande utilisée pour générer la vidéo exemple (normalement c'est sur une seule ligne mais là y a carrément pas la place) :

ffmpeg -i "C:\Users\Pierre de Chaville\promo1.mp3" -i "C:\Users\Pierre de Chaville\Pictures\promocarree.png" -filter_complex "[0:a]showwaves=s=1000x400:colors=#ffffff:mode=cline,format=yuv420p,colorkey=0x000000:1.0:0.98[onde];[1:v][onde]overlay=100:400,subtitles=messoustitres.srt:force_style='FontName=Sans,FontSize=18,PrimaryColour=&H000066FF,OutlineColour=&H33000000,Bold=1,Italic=0,MarginV=60'[v]" -map "[v]" -map 0:a -c:v h264 -c:a aac videofinale.mp4

La ligne de commande expliquée

Allez, un peu d'explication de la commande exemple morceau par morceau

ffmpeg : c'est le nom du logiciel ffmpeg. Pour pouvoir l'utiliser par son nom, on s'est évidemment placé dans le dossier où le logiciel se trouve (a priori c'est le sous-dossier "bin") avec la ligne de commande.

-i "C:\Users\Pierre de Chaville\promo1.mp3" : en première entrée (-i pour "input"), on donne le chemin de notre extrait sonore.

-i "C:\Users\Pierre de Chaville\Pictures\promocarree.png" : en deuxième entrée, on donne le chemin de notre image de fond.

-filter_complex " : tout se joue dans les guillemets qui suivent cette option. Une doc de ce qu'on peut y faire est . Notez pour comprendre qu'on va générer successivements deux "flux" qui seront nommés et réutilisés par leur nom dans les [crochets].

[0:a] : on annonce d'abord travailler sur l'audio ("a") du premier paramètre ("0")

showwaves= : de cet audio, extrayons une forme d'onde avec les paramètres qui vont suivre

s=1000x400: : précisons la taille de la vague. Le premier nombre est la longueur en pixels, et il sera précisément celui-là. Le deuxième est la hauteur toujours en pixels, et je ne sais pas trop si c'est une hauteur max. Dans le doute, je l'exagère toujours un peu. Les deux points séparent les différens paramètres de notre filtre showwaves

colors=#ffffff: : on choisit la couleur de l'onde, en notation hexadécimale. Là, c'est carrément du blanc.

mode=cline, : le mode de génération de l'onde est ici cline. Il est pas mal. Vous pouvez aussi essayer line, point ou p2p. Les deux derniers ne se voient pas bien sur un fond qui n'est pas un aplat. Aussi, ne me demandez pas pourquoi il y a une virgule pour séparer les paramètres alors qu'avant c'était deux points.

format=yuv420p, : là franchement j'ai copié un exemple. C'est un paramètre vidéo, lisez la doc si ça vous intéresse y en a plein d'autres.

colorkey=0x000000:1.0:0.98 : ça c'est intéressant. À la base, showwaves va générer une vidéo au fond noir avec une onde de la couleur choisie. Mais nous, on veut un fond transparent pour la mettre sur notre image fixe. Voilà ce qu'on fait ici. 0x000000 désigne la couleur noire. 1.0 veut dire qu'on va prendre tout ce qui se rapproche de cette couleur noire à 100% (en fait toutes les couleurs, du coup. Ça va aussi rendre transparente notre onde. Essayez un nombre entre 0 et 1). Et 0.98 est aussi une valeur entre 0 et 1 qui indique à quel point on va rendre transparente cette couleur. Ici, on est presque à 1. Quasiment tout sera entèrement transparent, sauf notre onde parce qu'on est malin, on l'a faite blanche, qui est l'opposé du noir, donc elle est sauvée par le 0,02 qui nous sépare du tout transparent.

[onde]; : on vient de créer une vidéo au fond transparent avec une onde un peu transparente. C'est notre premier flux, et on l'appelle "onde" (moi je l'appelle onde. Faites comme vous voulez.) Avec le point-virgule, on passe à un autre flux.

[1:v][onde] : dans ce nouveau flux, on utilise 2 choses : la version vidéo ("v") du deuxème paramètre d'entrée ("1" ; je sais nous on a mis une image, mais il se débrouille)

overlay=100:400, : on utilise le filtre "overlay", la superposition. Donc on va superposer notre vidéo d'onde et notre image fixe transformée en vidéo. Les deux nombres que vous voyez sont la position de l'onde en pixels par rapport à la gauche, puis par rapport au haut de la vidéo

subtitles=messoustitres.srt: : on va en profiter pour coller des sous-titres, tiens. On référence donc le fichier de sous-titres qu'on a créé. Notez qu'il est dans le même dossier que ffmpeg. Peut-être qu'on peut faire autrement, mais j'ai pas osé. À la suite, on va mettre des paramètres pour ces sous-titres.

force_style=' : on aura un seul paramètre, mais c'est force_style, et il prendra lui-même plusieurs paramètres dans ses apostrophes ! En gros, il prend une liste de paramètres ASS donc j'ai trouvé quelques listes ici et . Je vous en donne quelques uns en exemple à la suite

FontName=Sans, : le nom de la police utilisée. Il y en a une par défaut, vous pouvez virer cette partie pour utiliser la police par défaut. Sinon vous pouvez aussi mettre des noms de police avec des espaces, pas besoin de guillemets supplémentaires. Et aussi je ne sais pas quelle est la liste des polices utilisées, mais ça a l'air de marcher avec des noms de police que j'ai trouvées dans Gimp

FontSize=18, : la taille de la police. Aucune idée de l'unité, mais ça sembe classique

PrimaryColour=&H000066FF, : c'est la couleur du texte, en hexadécimal mais surprise : d'abord la transparence, ensuite le bleu, ensuite le vert, et enfin le rouge. C'est à l'envers de d'habitude, pourquoi, parce que.

OutlineColour=&H33000000, : la couleur de l'ombre du texte. J'ai essayé des trucs funky avec, il ne faut pas. Même règle qu'au-dessus pour l'ordre des couleurs et de la transparence.

Bold=1,Italic=0, : Bold c'est Gras, Italic c'est Italique. 1 c'est oui, 0 c'est non

MarginV=60' : le décalage des sous-titres vers le haut. Ça existe aussi vers la gauche et la droite, et il y a aussi une option d'aligement que je n'ai pas utilisée. Par défaut c'est bien au milieu en bas sans toucher le bas, parce que c'est bien fait. L'apostrophe c'est pour finir nos règles de style des sous-titres.

[v]" : fin de notre deuxième flux (superposition de l'image, des sous-titres et de l'onde). On va l'appeler "v". C'est un peu nul et ça porte à confusion, vous pouvez changer. Hey, un guillemet ! On a fini notre grosse partie filter_complex ! Bientôt la fin !

-map "[v]" -map 0:a : alors là franchement je ne sais pas le pourquoi du comment, mais a priori ça colle le son du mp3 sur la vidéo muette qu'on a appelée "v".

-c:v h264 : "c" c'est pour "codec","v" pour vidéo (laissez "v", même si vous avez renommé le dernier flux tout à l'heure). Là on décide que le codec de la vidéo c'est h264, un truc à la mode pour faire des MP4 je crois.

-c:a aac : et là on dit que le codec audio ("a") c'est aac. Perso j'avais mis "copy" à la place, ça veut dire qu'on gardait le codec de l'extrait sonore, et ça marchait bien sauf sur Twitter. Mais AAC ça doit être bien pour faire du MP4 aussi, j'imagine.

videofinale.mp4 : c'est le chemin de notre vidéo finale ! On est au bout ! Notez que la mienne va se générer dans le dossier de ffmpeg, mais j'imagine que moyennant de nouveaux guillemets, on peut mettre un chemin complet d'un autre fichier. Encore une fois moi j'ai choisi mp4 mais il y a plein de trucs à faire. En virant les codecs, vous pouvez faire du mkv, avi... Globalement ffmpeg se débrouille bien pour construire la vidéo, VLC se débrouille pour la lire... Mais ce sont les autres qui ralent. Youtube, Twitter... Donc restez sérieux et précis.

Le problème Windows

Sous Windows, la partie sous-titres peut ne pas fonctionner immédiatement. Il faut suivre les consignes de ce forum, à savoir faire un dossier fonts dans le dossier du binaire ffmpeg, et donner 3 variables d'environnements à la ligne de commande avant de commencer :

FC_CONFIG_DIR=.\fonts
FONTCONFIG_FILE=fonts.conf
FONTCONFIG_PATH=.\fonts

Une page de Podcasmein.de