Accueil > Jean Cartier’s Blog > FFMpeg > FFmpeg - la vidéo expliquée

FFmpeg - la vidéo expliquée

mardi 7 août 2007, par administrateur

C’est pourtant simple !

Introduction :

- Une vidéo est habituellement un conteneur comportant plusieurs "flux".
- Un flux peut être de type audio ou vidéo (voire sous-titre).
- Un flux est caractérisé par son type de compression, par exemple cinepak ou divx ou mpeg4 pour la vidéo, et mp3, ogg, aiff pour le son.
- Un flux est aussi caractérisé par sa qualité qui est fonction de plusieurs facteurs.

A - L’AUDIO

Pour un flux audio, la qualité est fonction de 3 paramètres : la fréquence d’échantillonage (en Hz ou kHz), le bitrate, la polyphonie. Tu vas me dire que le bitrate est fonction de l’échantillonage. C’est vrai sans l’être. Tout dépend de la compression utilisée.

A1 - La fréquence d’échantillonnage

La fréquence d’échantillonnage c’est en gros la même chose que le nombre de pixels dans une image. On aura plus de détail dans une image avec beaucoup de pixels que dans une image avec peu de pixels. Donc la fréquence d’échantillonnage c’est le nombre de nuance sonore que l’on restitue par seconde. Sur un CD, c’est 44100 nuances par seconde.

A2 - Le bitrate

Le bitrate, c’est un peu plus complexe, mais pas tant que ça. Il s’agit de la taille en octets d’une seconde de son. Cette taille va être fonction de la fréquence d’échantillonnage évidemment, mais aussi de la compression utilisée. Sans compression, sur un CD par exemple, on a 44100 nuances par seconde. Chaque nuance est codée sur 2 caractères (soit 2 octets) et en stéréo, soit 2 caractères x 2 pistes (droite et gauche) x 44100 = 176 400 octets par seconde = 176 ko/s. Cool, soit 1 minute de musique sur CD pèse 10584000 octets soit 10 Mo. Bref sur un CD, le bitrate est de 176ko/s, non compressé.
Le bitrate associé àde la compression (destructive la plupart du temps) permet de régler la taille du fichier de sortie. Par exemple en compression mp3, 1 minute de musique pèse environ 1,4 Mo (environ 10 fois moins). Par contre, le bitrate mp3 pour obtenir une telle taille est de 128 ko/s. Mince, pourtant 128 ko/s x 60 secondes, ça fait plus de 1,4 Mo... Mais le bitrate, c’est la quantité de son en sortie des haut-parleurs. _ Donc le mp3 considère une quantité de son en sortie des haut-parleurs (par exemple 128ko/s) et compresse dans son fichier la quantité de son nécessaire àl’obtention de cette qualité. Ouf !

A3 - La polyphonie

Enfin, la polyphonie, c’est mono, stéréo, joint stéréo, 3.1, 4.1, 5.1, 6.1, 7.1. Mono, c’est un son en mono, normalement sur une seule enceinte (sauf que les ordinateurs font sortir le même sur les 2 enceintes). Stéréo, c’est un son qui est potentiellement différent entre l’enceinte de gauche et celle de droite. Joint stéréo, c’est le son mono répété sur les 2 pistes. 3.1 C’est 3+1=4 pistes une droite, une gauche, une centrale et une piste pour les basses. etc.

B - LA VIDEO

Ben pour la vidéo, c’est àpeu près la même chose que pour l’audio, sauf que l’on ajoute un peu de sel et de poivre parce qu’un flux d’images, c’est un chouias plus gros et complexe.

B1 - Le framerate

Ici la fréquence d’échantillonnage n’existe pas, c’est non pas le nombre d’échantillon de son par seconde, mais le nombre d’images par seconde (en anglais FrameRate). Habituellement dans nos contrées, on est à25 images par seconde. Pourquoi 25 ? C’est le seuil de ce que l’on appelle la persistence rétinienne. A cette vitesse, le cerveau àl’impression d’un mouvement fluide. Si on diminue ce frametrate, on a l’impression d’une image saccadée, mais la taille de la vidéo s’en ressent.

B2 - L’entrelacement

Mais la persistence rétinienne à25 img/s, c’est une moyenne. Il semble que certaines personnes aient l’impression d’un battement dans l’image. donc les gens par cheux nous on mis en place un procédé pour limiter cet effet de battement. C’est l’entrelacement.
Etant donné qu’il n’était pas possible d’envoyer plus d’informations que 25 images par seconde, il a été décidé d’entrelacer les images, c’est-à-dire d’envoyer en premier lieu les lignes paires, puis les lignes impaires. La "demi-image" est formée soit par les lignes paires, soit par les lignes impaires. L’ensemble constitué par deux images (ou champs) est appelé trame entrelacé. Lorsqu’il n’y a pas d’entrelacement le terme de trame progressive est utilisé.Grâce àce procédé appelé "entrelacement", le téléviseur PAL/SECAM affiche 50 champs par seconde (àune fréquence de 50 Hz), soit 2x25 images en deux secondes. Cool !

B3 - La taille de la vidéo

Une vidéo c’est en gros une succession d’images. Une image a une taille en pixel. Donc une vidéo a une taille en pixels. Plus la taille en pixel d’une image est grande, plus le fichier sera gros. Les tailles habituelles sont 720x576 chez nous. Pour le web, 320x256 c’est bien.

B4 - Le bitrate

C’est la qualité de l’image de sortie souhaitée en fonction du mode de compression utilisé. C’est vraiment pareil que pour l’audio.

B5 - Les images clés (keyframes)

Ca c’est nouveau ! Les modes de compression utilisés se basent sur la différence entre des images de référence successives. Les images de référence son comprises dans la vidéo. Plus il y a d’images de référence, plus la vidéo grossit. Entre 2 images de référence, le module de compression/decompression (d’où le nom de CoDec) va simplement travailler sur les différences entre les images. Ce qui donne par exemple, si on éloigne trop les images de référence dans le temps des fichiers vidéo dans lesquels il est difficile de se déplacer. T’as pas compris grand chose ? Tout ce qu’il faut se rappeler c’est que plus il y a d’images de référence, plus le fichier est lourd, mais plus il est pratique et les transitions entre les images fluides.

Conclusion :

Alors maintenant que tu as tout compris, un exemple avec ffmpeg :

ffmpeg -i test.avi -ar 22050 -r 25 -s 320x256 -keyint_min 1 -b 500000 test.flv

- ffmpeg : c’est l’outil
- -i test.avi : c’est le fichier initial.
- -ar 22050 : c’est la fréquence d’échantillonnage audio de sortie.
- -r 25 : c’est le nombre d’images de sortie par seconde, àsavoir 25.
- -s 320x256 : c’est la taille de la vidéo de sortie, soit 320 pixels par 256 pixels.
- -keyint_min 1 : c’est le nombre d’images clés : 1 image clé toutes les 1 images clés
- -b 500000 : c’est le bitrate vidéo (si l’on veut spécifier un bitrate audio, on ajoute -ab XXX avec XXX pour le bitrate en octets), soit 500 ko/s
- test.flv : C’est le nom du fichier de sortie.

Voilà !


- Automatiser FFMpeg
- FFMpeg : dis-moi tout !
- FFmpeg - la vidéo expliquée
- FFMpeg par l’exemple

Messages

  • BRAVISSIMO !!!!

    Cela change terriblement de la plupart des sornettes que l’on trouve sur Internet. C’est clair, propre et didactique ...

    On rêve de voir plus d’informations techniques expliquées ainsi !

    Je n’ai trouvé d’explications techniques que dans de rares sites comme celui c- pour Apple ][

    Voir en ligne : HACKZAPPLE

  • Salut mon Jeanouille, chouette exposé mais évidemment j’ai deux petites questions :
    - d’abord à quoi correspond FFmpag par rapport à tout cela. Est-ce un utilitaire de conversion video, un "utilitaire" utilisé par les lecteurs video ?
    - je n’ai pas très bien compris l’histoire de l’entrelacement, il n’est pas possible d’envoyer plus de 25 images par secondes mais au final le téléviseur envoie des champs à 50 Hz. Est-ce qu’il envoie les lignes paires puis les impaires 1/50ème de seconde plus tard puis les nouvelles paires 1/50ème de seconde plus tard et ainsi de suite ?

    Sinon merci pour ces lumières. A +

    (T’as vu je suis venu te lire eh eh )

    "Seule l’ignorance s’apprend sans douleur" Donjon

  • Merci de tant de compliments...

    Je vais essayer de faire encore mieux en insérant des zoulis images...

    Jean CARTIER

  • (Fred, on sait que c’est toi !)

    FFMPEG c’est quoi ?

    Alors FFMpeg est un outil utilisé à la fois comme utilitaire de conversion vidéo en ligne de commande (le DOS par exemple ou le bash pour unix, ou le terminal pour Mac).

    Mais comme c’est un outil rapide puissant, configurable, il est utilisé comme bibliothèque de conversion par des programmes du commerce ou libres.

    L’entrelacement, c’est quoi ?

    Concernant les 25 Hz et les 50 Hz, les TV ont une fréquence de 50 Hz, mais comme la norme veut du 25 images par seconde (25 Hz), et ben on feinte... On envoie 1/2 image tous les 50eme de seconde (là, faut que je vérifie, mais normalement c’est comme ça).

    Une trame paire la 1ere 50eme de seconde, une trame impaire la 2nde 50 eme de seconde.

    - Trame paire = les lignes paires
    - Trame impaire = les lignes impaires

    C’est pour cela que l’on obtient une image entrelacée de ce type

  • Bonjour et merci pour vos conseils,

    Depuis quelque temps je tente de convertir une vidéo faite avec ma caméra mais sans succès, est-ce que quelqu’un pourrait me donner la recette pour la convertir mon fichier avi en un fichier dv ??

    Vidéo :
    640x480,
    codec : motion jpeg
    30 fps

    audio :
    codec uncompressed
    8 bit pcm audio
    11024hz 1 canaux

    Merci d’avance

  • Salut,

    tu trouveras tout plein d’exemple sur cet article de mon blog.

    En gros, la commande est :
    ffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv
    ou plus simple :
    ffmpeg -i video_origine.avi -target pal-dv video_finale.dv

    J’en profite pour réorganiser les rubriques du site...
    Cordialement

  • Bonjour

    Je crois d’après ce que j’ai pu lire, que l’entrelacement correspond à un double affichage décalé pour une image.
    L’image est divisée en 2 images (lignes paires / lignes impaires).
    Les lignes impaires sont affichées puis suivent les lignes paires. Cependant ceci est effectué par 2 balayages différents. On a donc 25 images (réelles / photo) affichées par seconde mais 50 images (découpées / trame) envoyées par seconde.

    Je ne suis pas un expert en vidéo non plus.
    Je trouve vos articles bien faits ils sont claires et simple. C’est intéressant pour bien débuter.