Introduction

FFmpeg s'utilise en ligne de commandes (cf. Première partie). Si l'on a un catalogue de commandes, il est facile de copier/coller celles dont on a besoin dans la Console ou le Power Shell en remplaçant bien entendu les noms de fichiers par les vôtres.

Je vous conseille de vous entraîner sur un fichier vidéo type. Sur ce site (https://www.learningcontainer.com/mp4-sample-video-files-download/) j'ai téléchargé un fichier au format mp4 afin de tester toutes les manipulations.

Dans les différentes commandes présentées le fichier source sera appelé input.mp4 ou input.mp3 et les fichiers de sorties seront output.mp4 ou autres extensions

Un peu de vocabulaire

Un fichier vidéo est en fait composé d'une piste vidéo, d'une ou plusieurs pistes audio (français, anglais, par ex.) d'un ou plusieurs fichiers sous-titres (format .srt ou .ass). Ces différents fichiers sont encodés par des codecs (h264, Divx ; etc. pour la vidéo - mp3, aac, etc. pour l'audio) et sont encapsulés dans un conteneur (mov, mp4, mkv, avi, webm, etc.)

Pour lire la vidéo il faut que les codecs soient installés sur votre ordinateur et un lecteur universel comme VLC permet de lire quasiment toutes les vidéos. Ceci est illustré dans l'image ci-dessus et devrait permettre de mieux comprendre le traitement des fichiers.

Commandes FFMPEG les plus utiles.

Voici une liste de commandes utiles pour convertir, compresser, modifier vos fichiers multimédias. Il vous suffit de cliquer sur le bouton de droite de la fenêtre de code afin de pouvoir le copier.

  1. Obtenir des informations sur un fichier

  2. Conversion vidéo

  3. Convertir une vidéo en audio

  4. Changer la résolution vidéo

  5. Compresser des fichiers vidéos

  6. Compression de fichiers audios

  7. Supprimer la piste audio d'une vidéo

  8. Ajouter une piste audio à une vidéo muette

  9. Augmenter ou diminuer le volume sonore d'une vidéo

  10. Extraire des images d'une vidéo

  11. Encoder une suite d'images en vidéo

  12. Extraire des parties d'une vidéo

  13. Augmenter ou diminuer la vitesse d'une vidéo

  14. Recadrer des vidéos

  15. Concaténer des fichiers

  16. Insérer un filigrane ou un logo

  17. Ajouter une vignette à un fichier audio

  18. Des sous-titres

  19. Découper des fichiers audio par intervalle

  20. Couper un extrait vidéo en évitant les bandes noires

Exemple de commande

Voici un exemple de commande générique.

1
ffmpeg [global_options] {[input_file_options] -i input_url} {[output_file_options] output_url} 

Une commande commence toujours par ffmpeg suivi si il y en a des options globales. Ensuite les options concernant le fichier source (ex. -y écrase le fichier de sortie sans validation au préalable) puis -i suivi du chemin du fichier source.

Pour finir les options concernant le fichier de sortie puis le chemin du fichier de sortie.

Pour lancer la commande, il faut juste appuyer sur la touche Entrée du clavier.

Visualiser les fichiers vidéos ou écouter les fichiers audio

FFmpeg comporte un lecteur qui vous permet de lire vos fichiers multimédias, voire d'afficher vos images. Il s'utilise en ligne de commande de la manière suivante. Cela permet de vérifier rapidement si les modifications faites ont fonctionné sans devoir lancer votre lecteur vidéo ou audio. Pour arrêter le player, appuyer sur q (quit)

1
ffplay input.mp4
2
ffplay input.mp3

1. Obtenir des informations sur un fichier

1
ffmpeg -i input.mp4

Vous pouvez réduire le volume d'informations en ajoutant -hide_banner à votre ligne.

1
ffmpeg -i input.mp4 -hide_banner

Ce qui donne comme résultat

1
C:\Users\Christophe\Videos>cd test
2
3
C:\Users\Christophe\Videos\test>ffmpeg -i input.mp4 -hide_banner
4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
5
  Metadata:
6
    major_brand     : isom
7
    minor_version   : 512
8
    compatible_brands: isomiso2avc1mp41
9
    creation_time   : 1970-01-01T00:00:00.000000Z
10
    encoder         : Lavf53.24.2
11
  Duration: 00:01:57.31, start: 0.000000, bitrate: 1436 kb/s
12
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1048 kb/s, 25 fps, 25 tbr,
13
 12800 tbn, 50 tbc (default)
14
    Metadata:
15
      creation_time   : 1970-01-01T00:00:00.000000Z
16
      handler_name    : VideoHandler
17
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 383 kb/s (default)
18
    Metadata:
19
      creation_time   : 1970-01-01T00:00:00.000000Z
20
      handler_name    : SoundHandler
21
At least one output file must be specified
22
23
C:\Users\Christophe\Videos\test>

Dans l'image ci-dessous, je détaille les informations obtenues.

  1. Vous obtenez la durée (1 minute 57 secondes) et le bitrate[*] (1436 Kb/s soit 1,4 Mb/s) de la vidéo. Le bitrate conditionne le poids de la vidéo.

  2. Sur le canal vidéo, vous voyez que le codec utilisé est h264, que sa taille est de 1280 x 720 et le bitrate du canal vidéo est de 1048 Kb/s. Vous noterez également que la piste vidéo est identifiée comme le stream 0:0.

  3. Pour l'audio, le codec utilisé est aac, avec une fréquence de 48000 Hz et que le bitrate de l'audio est de 393 Kb/s. À l'instar de la piste vidéo, la piste audio est identifiée comme le stream 0:1.

Ces renseignements nous permettront par la suite de modifier le débit pour compresser la vidéo, de changer le codec vidéo ou audio, de modifier la taille de la vidéo, de remplacer un stream par un autre (ex. changement de piste audio). Bref ces informations sont très pratiques et importantes à connaître avant de travailler sur les fichiers multimédias pour les améliorer.

Je vous invite d'ailleurs à le faire pour chaque nouveau fichier que vous allez manipuler.

2. Conversion vidéo

À l'heure actuelle, le format le plus utilisé est le mp4 mais il existe pléthore de formats et en une seule ligne il est très facile de convertir une vidéo vers un autre format.

1
ffmpeg -i input.mp4 output.webm

En décortiquant un peu cette commande, vous comprendrez un peu mieux le principe.

-i signifie qu'il s'agit du fichier source (i pour input), le fichier d'entrée est input.mp4 et le fichier de sortie sera en webm. Nous passons d'un poids de 20 Mo à un poids de 7,49 Mo.

1
ffmpeg -i input.mp4 -qscale 0 output.avi

-qscale 0 permet de garder la qualité du fichier d'origine. Ici, avec le container avi, nous observons une augmentation du poids de 20 Mo à 55 Mo, ce qui est peu intéressant. Le passage à un format mkv donne un poids de sortie de 17,5 Mo.

Vous voyez que juste avec une conversion le poids du fichier de sortie passe de 7,5 Mo à 55 Mo pour un poids de 20 Mo au départ.

3. Convertir une vidéo en audio

Il est très facile de récupérer le fichier audio d'une vidéo (ex. d'un fichier audio d'une conférence).

1
ffmpeg -i input.mp4 -vn output.mp3

-vn désactive la sortie vidéo et vous obtenez un fichier mp3 (vous auriez pu choisir du wav, du m4a, du aac, du ogg). Le format mp3 présente l'avantage d'être connu de beaucoup et lisible facilement.

Voici les différents poids des fichiers obtenus selon leur format :

  • mp3 --> 1,79 Mo

  • wav --> 64,4 mo

  • m4a --> 4,80 Mo

  • aac --> 4,82 Mo

  • ogg --> 3,26 Mo

La commande peut être enrichie de la sorte,

1
ffmpeg -i input.mp4 -vn -r:a 44100 -ac 2 -b:a 320k -f mp3 output.mp3

dans lequel -r:a définit la fréquence (voici quelques fréquences communément utilisées 22500, 44100, 48000), -ac le nombre de canaux audio, -b:a le bitrate de l'audio, -f le format de sortie.

Par exemple, j'ai récupéré l'audio d'une conférence filmée (2h 11 minutes), je suis passé d'un fichier de 1,56 Go à 90 Mo en indiquant un bitrate de 96 Kb/s suffisant pour écouter cette conférence.

4. Changer la résolution vidéo

Ma vidéo exemple fait 1280 x 720. Pour la lire sur un ordinateur, smartphone ou tablette 640 x 360 est très acceptable et permet de diminuer le poids de ma vidéo. Mais comment faire ?

1
ffmpeg -i input.mp4 -filter:v scale=640:360 -c:a copy output.mp4

-filter:v scale appelle un filtre (-filter:) qui concerne le canal vidéo (v) et qui s'appelle scale (échelle) et permet de modifier les dimensions de notre vidéo.

-c:a copy indique que l'on ne modifie pas le codec (-c:) audio (a) de sortie.

Résultat ma vidéo passe de 20 Mo à 10,5 Mo et la lecture sur mon ordinateur est tout à fait acceptable. Il est possible d'écrire la commande d'une autre manière, à vous de choisir celle qui vous convient le mieux.

1
ffmpeg -i input.mp4 -s 640x360 -c:a copy output.mp4

Au lieu de -filter:v scale=640:360 on écrit -s 640x360. Mais le résultat est le même.

Et avec cette commande, on peut directement introduire un diviseur pour fixer largeur et hauteur. -vf scale est l'équivalent de -filter:v scale.

1
 ffmpeg -i input.mp4 -vf scale=iw/2:ih/2 output.mp4

Mais FFmpeg peut également redimensionner une image.

1
ffmpeg -i input.png -vf scale=320:160 output.jpg

Ici en plus de redimensionner une image, on la convertit au format jpg.

input.png

5. Compresser des fichiers vidéos

Quand on compresse une vidéo, on ne modifie pas sa taille mais on dégrade la qualité de la vidéo, dans des limites acceptables, de manière à alléger son poids numérique ce qui peut être un critère important lors du partage d'une vidéo ou de son intégration sur des sites tels les ENT.

1
ffmpeg -i input.mp4 -vf scale=960:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4

Le début commence à vous être familier.

-vf scale=960:-1 concerne le changement de taille on impose une largeur de 960 pixels et avec le final :-1 on impose également de conserver les proportions pour que FFmpeg fixe la hauteur.

-c:v libx264 est l'encodeur vidéo du codec h264.

-preset veryslow est une option pour obtenir une meilleure qualité de conversion (par défaut FFmpeg travaille avec le preset medium).

-crf 24 dégrade très légèrement la vidéo. CRF est le Constant Rate Factor qui peut aller de 0 (lossless, sans perte) à 51 (très dégradé). Un bon crf est compris entre 18 et 23 (23 étant le réglage par défaut pour h264) et ±6 dans la valeur peut diviser le poids de votre vidéo par 2.

Voici par exemple les 10 premières secondes de la vidéo exemple avec un crf de 51.

Il est également possible d'ajouter cette partie pour comprimer l'audio.

1
-ac 2 -c:a aac -strict -2 -b:a 128k

-ac 2 définit le nombre de canaux. -c:a aac impose le codec (-c:) audio (a) aac. -b:a fixe le bitrate de l'audio à 128k.

Avec la commande ci-dessous, je fais passer le poids de ma vidéo exemple de 20 Mo à 3,82 Mo sans nuire du tout à la lecture sur mon PC.

1
ffmpeg -i input.mp4 -s 640x360 -c:v libx264 -preset veryslow -crf 29 -ac 2 -c:a aac -strict -2 -b:a 96k output.mp4

6. Compression de fichiers audios

1
ffmpeg -i input.mp3 -ab 128 output.mp3

Les bitrates possibles pour le mp3 sont 96 Kb/s, 112 Kb/s, 128 Kb/s, 160 Kb/s, 192 Kb/s, 256 Kb/s ou 320 Kb/s. 320 Kb/s donne un équivalent à la qualité audio d'un CD.

Il est bien entendu possible d'utiliser d'autres codecs et donc d'autres formats (m4a, wav, ogg, etc.)

7. Supprimer la piste audio d'une vidéo

Une ligne très simple supprime la piste audio d'une vidéo.

1
ffmpeg -i input.mp4 -an output.mp4

-an supprime le flux audio.

8. Ajouter une piste audio à une vidéo muette

1
ffmpeg -i input.mp4 -i audio.mp3 -c copy -map 0:0 -map 1:0 output.mp4

Nous avons 2 fichiers : 1 piste vidéo input.mp4 et une piste audio input.mp3 (rappel -i pour chaque piste).

-c copy permet de ne pas ré-encoder les 2 pistes et nous avons un travail plus rapide.

-map 0:0 indique que pour le premier fichier (en informatique on commence souvent le décompte par 0), nous ne gardons que le premier stream (cf. 1.Obtenir des informations sur un fichier) qui est la piste vidéo du fichier input.mp4.

-map 1:0 indique que pour le second fichier nous ne gardons que la piste audio du fichier input.mp3.

Dans notre cas si le fichier input.mp4 n'est pas muet nous ne gardons que sa partie vidéo pour la sortie et nous remplaçons la piste sonore d'origine par un autre fichier son.

9. Augmenter ou diminuer le volume sonore d'une vidéo

Augmenter

1
ffmpeg -i input.mp4 -vcodec copy -af "volume=10dB" outputmp4

-vcodec copy indique à FFmpeg que nous ne ré-encodons pas la piste vidéo. -af "volume=10dB" indique que nous augmentons le volume de 10dB.

Diminuer

1
ffmpeg -i input.mp4 -vcodec copy -af "volume=-5dB" output.mp4

Avec -af "volume=-5dB" nous diminuons le volume de 5dB.

10. Extraire des images d'une vidéo

Extraire 1 image

1
ffmpeg -i input.mp4 -vframes 1 -ss 183 vignette.png

-vframes 1 indique le nombre de vidéo frames (image de la vidéo) que nous voulons (1).

-ss 183 signifie Start to Second 183, FFmpeg nous extraira l'image correspondant à la 183e seconde de notre vidéo.

Cette image s'appellera vignette.png

Extraire des images

1
ffmpeg -i input.mp4 -r 1 -f image2 image-%2d.png

-r 1 définit le nombre d'images par seconde (ici 1 image par seconde) que nous voulons extraire (par défaut 25).

-f image2 définit le format de sorte, ici des images.

image-%2d.png définit la façon dont seront nommées les images. Nos images s'appelleront image_01.png, image_02.png, etc. Si nous voulons un format img-001.bmp, notre fichier de sortie devra être codé img-%3d.bmp.

1
ffmpeg -i input.mp4 -filter:v fps=fps=1/60 output_%2d.bmp
2
3
ffmpeg -i input.mp4 -vf fps=1/60 output_%2d.bmp

Les 2 lignes ci-dessus donnent le même résultat, je détaille la première ligne.

-filter:v indique que FFmpeg fait appel à un filtre vidéo, ici le filtre fps qui va convertir la vidéo vers une fréquence d'images constante. Ici fps=fps=1/60 va convertir la vidéo en une suite de 1 image par minute que nous récupérerons en une suite d'images bitmap output_01.bmp, output_02.bmp, etc.

11. Encoder une suite d'images en vidéo

1
ffmpeg -framerate 24 -i "image_%3d.png" -vcodec h264 -b:v 10485760 "output.mp4"

Cette commande permet de faire une vidéo à partir d'une suite d'images (ex capture photos pour un film en stop motion). Cela suppose que l'on ait au préalable renommer les images sous la forme appelée dans notre commande.

-framerate 24 fixe le nombre d'images par seconde que comportera notre vidéo (ici 24 images/seconde).

-i "image_%3d.png" appelle les images image_001, image_002, etc pour composer notre vidéo.

-vcodec h264 est le codec vidéo utilisé pour encoder notre vidéo.

-b:v 10485760 est le bitrate de notre vidéo en bit/seconde (10 x 1024 x 1024 = 10 Mb/s).

12. Extraire des parties d'une vidéo

Extraire les n... premières secondes

1
ffmpeg -i input.mp4 -t 10 output.mp4

-t 10 extrait les 10 premières secondes de la vidéo input.mp4.

Extraire une partie

1
ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 40 output.mp4

-ss 00:00:50 indique le point de départ de notre sélection (50e seconde de notre vidéo).

-codec copy indique que nous ne ré-encodons pas les fichiers vidéo et audio.

-t 40 indique la durée de notre sélection (40 secondes).

Nous obtenons un extrait de 40 secondes de notre vidéo de départ qui commencera à la 50e seconde de notre vidéo de départ.

Nous pouvons faire de même avec un fichier audio.

1
ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3

Nous extrayons la partie comprise entre -ss 00:01:54 jusqu'à -to 00:06:53 que nous copions en mp3. Nous obtenons un fichier mp3 qui fait 4 minutes 59 secondes. Nous pouvons remplacer 00:01:54 par 114 qui est l'équivalent en secondes.

Diviser en plusieurs parties

1
ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4

Nous extrayons 2 parties nommées part1.mp4 et part2.mp4, avec l'instruction -c copy ou -codec copy, nous indiquons à FFmpeg de ne pas ré-encoder les éléments de la vidéo.

-t 00:00:30 nous indiquons que notre première partie sera les 30 premières secondes de notre vidéo source.

-ss 00:00:30 nous indiquons que notre seconde partie démarrera à la 30e seconde et ira jusqu'à la fin de la vidéo source.

1
ffmpeg -i input.mp4 -t 00:00:57 -c copy part1.mp4 -ss 00:01:15 -t 57 -codec copy part2.mp4 -ss 00:01:54 -codec copy part3.mp4

Cette commande plus longue est en fait très simple à comprendre.

3 sorties vidéos : part1.mp4, part2.mp4 et part3.mp4.

-c copy ou -codec copy pour ne pas ré-encoder nos sorties.

part1.mp4 : durera 57 secondes à compter du début de la vidéo (-t 00:00:57).

part2.mp4 : durera également 57 secondes (-t 57) mais à compter de 1minute 15 du début de la vidéo (-ss 00:01:15).

part3.mp4 : commence à 1 minute 54 secondes (-ss 00:01:54) du début de la vidéo et ira jusqu'au terme d'icelle.

Vous pouvez ainsi découpez précisément une vidéo en autant de parties voulues. Très pratique pour chapitrer une séquence.

13. Augmenter ou diminuer la vitesse d'une vidéo

Augmenter

1
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4

-vf "setpts=0.5*PTS" appelle le filtre vidéo qui modifie le PTS (Presentation Timestamp --> horodatage de la présentation des trames d'entrée) et donc joue sur la vitesse du fichier de sortie. Ici cela multiplie la vitesse de la vidéo par 2 mais au final la vidéo fait la même durée tout en restant sur la dernière image. Il faudra donc couper la moitié de la vidéo.

Diminuer

1
ffmpeg -i input.mp4 -vf "setpts=4*PTS" output.mp4

Pour diminuer la vitesse, il faut que le multiplicateur soit supérieur à 1. Avec un multiplicateur de 4, la vitesse de la vidéo est divisée par 4.

14. Recadrer des vidéos

1
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4

-filter:v appelle le filtre vidéo crop qui permet de recadrer et de rogner la vidéo source.

crop=w:h:x:y permet d'entrer les coordonnées de la vidéo de sortie. w et h sont les coordonnées de la largeur (w) et de la hauteur (h) souhaitées. x et y sont les coordonnées du point de départ du rognage par rapport au point origine (0 :0) situé en haut à gauche.

15. Concaténer des fichiers

En informatique concaténer signifie joindre bout à bout des fichiers. Vous avez, par exemple, 4 fichiers vidéos avec les mêmes codecs et vous souhaitez les mettre bout à bout pour obtenir une vidéo unique.

Il faut en premier créer un fichier texte (join.txt) avec les chemins des vidéos.

1
file part1.mp4
2
file part2.mp4
3
file part3.mp4
4
file part4.mp4

puis entrer la commande suivante.

1
ffmpeg -f concat -i join.txt -c copy output.mp4

-f appelle le filtre concat, -i le fichier join.txt, -c copy permet une sortie sans ré-encodage.

16. Insérer un filigrane ou un logo

Nous voulons insérer un logo (15.png, 200x200) dans le coin bas-droite de notre vidéo (1280x720) et ce pendant les 20 premières secondes d'icelle.

1
ffmpeg -i input.mp4 -i 15.png -filter_complex "[0:v][1:v] overlay=1080:520:enable='between(t,0,20)'" -pix_fmt yuv420p -c:a copy output.mp4

Avec -i nous appelons notre vidéo source ainsi que notre logo.

-filter_complex est le filtre qui va nous permettre cette opération. Attention aux guillemets doubles et simple dans la commande.

overlay=1080:520 fixe les coordonnées de l'incrustation de notre logo. Comme notre vidéo fait 1280 x 720 et que notre logo fait 200 x 200, j'enlève 200 à chaque dimension afin que le logo soit en bas à droite par rapport à l'origine (haut-gauche avec 0 :0).

enable='between(t,0,20)' indique le temps (t) d'apparition du logo (de 0 sec à 20 sec). En modifiant ces données, vous pouvez faire apparaître le logo quand vous le souhaitez.

Voici un exemple avec un logo incrusté pendant les 10 premières secondes.

17. Ajouter une vignette à un fichier audio

1
ffmpeg -loop 1 -i 15.png -i input.mp3 -shortest -c:v libx264 -c:a copy output.mp4

-loop 1 boucle sur l'image. -shortest fixe la durée au morceau le plus court (ici ce sera l'audio). -c:v libx264 choisit le codec pour la sortie -c:a copy ne ré-encode pas l'audio.

18. Des sous-titres

Extraire les sous-titres d'une vidéo

Les sous-titres dans un conteneur vidéo ne sont en fait qu'un fichier texte avec une syntaxe particulière. Il est très facile de faire ses sous-titres et de les inclure dans ses vidéos. Il existe 2 formats de sous-titres .srt et .ass et de nombreux logiciels peuvent vous aider à les écrire.

Mais d'abord comment extraire une piste de sous-titres.

1
ffmpeg -i input.mp4 output.srt
2
ffmpeg -i input.mp4 output.ass

La première commande extrait les sous-titres au format .srt, la seconde au format .ass.

Ajouter des sous-titres à une piste vidéo

J'ai écrit une piste de sous-titres au format .srt car cette syntaxe est plus simple et permet facilement d'écrire ses premiers sous-titres.

1
1
2
00:00:05,500 --> 00:00:15,000
3
Bonjour chez vous !
4
2
5
00:00:15,100 --> 00:00:20,000
6
Tout va bien ?
7
3
8
00:00:25,000 --> 00:00:30,000
9
FIN DU TEST
10

1 est le numéro d'ordre du sous-titre

00:00:05,000 --> 00:00:15,000 indique le point de départ (5e seconde) puis le point de sortie (15e seconde) Attention à ne pas oublier la virgule suivie des 3 chiffres (on peut ajuster au millième de seconde)

Bonjour chez vous ! est le texte qui apparaîtra pendant 10 secondes (15-5).

Ensuite il nous faut entrer la ligne de commandes pour fusionner nos sous-titres avec notre vidéo.

1
ffmpeg -i input.mp4 -vf subtitles=ss_titre.srt output.mp4

-vf subtitles=ss_titre.srt est le filtre vidéo qui appelle le fichier .srt pour l'inclure dans notre vidéo de sortie que voici.

Il existe une autre commande pour inclure des pistes .ass.

On va convertir avec FFmpeg notre fichier .srt en .ass

1
ffmpeg -i ss_titre.srt ss_titre.ass

puis jeter un œil sur la syntaxe.

1
[Script Info]
2
; Script generated by FFmpeg/Lavc58.92.100
3
ScriptType: v4.00+
4
PlayResX: 384
5
PlayResY: 288
6
ScaledBorderAndShadow: yes
7
8
[V4+ Styles]
9
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
10
Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0
11
12
[Events]
13
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
14
Dialogue: 0,0:00:05.50,0:00:15.00,Default,,0,0,0,,Bonjour chez vous !
15
Dialogue: 0,0:00:15.10,0:00:20.00,Default,,0,0,0,,Tout va bien ?
16
Dialogue: 0,0:00:25.00,0:00:30.00,Default,,0,0,0,,FIN DU TEST

Ce format est paramétrable et on peut plus jouer sur le style des sous-titres. Pour l'exemple suivant, j'ai modifié la ligne Style (ligne 10) pour avoir une police Verdana en 30 pts. J'ai également essayé de jouer sur les couleurs puis j'ai codé ma vidéo de sortie.

1
ffmpeg -i input.mp4 -vf ass=ss_titre.ass output.mp4

19. Découper des fichiers audio par intervalle

Cette commande permet de découper un fichier audio en autant de segments de durée identique.

1
ffmpeg -i "input.mp3" -f segment -segment_time 15 -c copy output_%02d.mp3

-f segment -segment_time 15 appelle le filtre audio segment et on précise la durée de chaque segment à 15 secondes.

output_%02d crée la règle de nommage des fichiers de sortie : output_01.mp3, output_02.mp3, etc.

20. Couper un extrait vidéo en évitant les bandes noires

Lorsque l'on enregistre une vidéo, il se crée des images clés (keyframe) à des intervalles réguliers et lorsque l'on coupe un extrait en dehors de ses images clés, il peut apparaître des bandes noires au début et à la fin de l'extrait.

Pour une découpe très précise, on va forcer la création d'images clés aux 2 extrémités de notre découpe voulue.

1
ffmpeg -i input.mp4 -force_key_frames 00:00:10,00:00:20 output.mp4

On force la création de 2 images clés à 10 secondes et à 20 secondes pour découper très précisément cet extrait.

1
ffmpeg -ss 00:00:10 -i output.mp4 -t 00:00:10 -vcodec copy -acodec copy -y output_10sec.mp4

Avec cette commande on découpe le fichier de 10 secondes. Avec -y on écrase le fichier output.mp4 existant sans avoir à taper yes.

Les 2 commandes -vcodec copy et -acodec copy permettent la sortie sans ré-encodage.

Conclusion

Sur le net, vous trouverez énormément de sites vous donnant des conseils et des lignes de codes exemples pour vous aider dans votre apprentissage de FFmpeg. Et en premier le site http://ffmpeg.org/documentation.html qui pour l'instant ne comporte pas de traduction française.

Il existe également des interfaces graphiques qui s'appuient sur FFmpeg pour ceux qui ne se sentent pas avec les lignes de commandes.

Voici les logiciels qui peuvent vous aider.

Informations sur les fichiers multimédias : Médiainfo est un logiciel qui permet d'avoir les infos sur les fichiers multimédias. Il permet même de connaître ces infos en survolant le fichier, ces infos apparaissant sous forme d'infobulles (cf. image ci-dessous).

Lien de téléchargement : https://mediaarea.net/fr/MediaInfo

GUI pour FFmpeg

FFmpegYAG : https://sourceforge.net/projects/ffmpegyag/

FFmpeg Batch Av Converter : https://sourceforge.net/projects/ffmpeg-batch/

Ces 2 interfaces permettent les manipulations vues en ligne de commande mais en passant par des clics de souris.

Ne vous laisser pas rebuter par les lignes de commande. Pour moi cela permet de mieux contrôler ce que l'on fait sur les fichiers.