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 rve de voir plus d’informations techniques expliques 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 trs bien compris l’histoire de l’entrelacement, il n’est pas possible d’envoyer plus de 25 images par secondes mais au final le tlviseur envoie des champs 50 Hz. Est-ce qu’il envoie les lignes paires puis les impaires 1/50me de seconde plus tard puis les nouvelles paires 1/50me de seconde plus tard et ainsi de suite ?

    Sinon merci pour ces lumires. 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 insrant 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 vido 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 bibliothque 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 frquence 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 vrifie, 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 entrelace de ce type

  • Bonjour et merci pour vos conseils,

    Depuis quelque temps je tente de convertir une vido faite avec ma camra mais sans succs, est-ce que quelqu’un pourrait me donner la recette pour la convertir mon fichier avi en un fichier dv ??

    Vido :
    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 rorganiser les rubriques du site...
    Cordialement

  • Bonjour

    Je crois d’aprs ce que j’ai pu lire, que l’entrelacement correspond un double affichage dcal pour une image.
    L’image est divise en 2 images (lignes paires / lignes impaires).
    Les lignes impaires sont affiches puis suivent les lignes paires. Cependant ceci est effectu par 2 balayages diffrents. On a donc 25 images (relles / photo) affiches par seconde mais 50 images (dcoupes / trame) envoyes par seconde.

    Je ne suis pas un expert en vido non plus.
    Je trouve vos articles bien faits ils sont claires et simple. C’est intressant pour bien dbuter.