Codecs ?? - Traitement Vidéo - Video & Son
Marsh Posté le 05-11-2005 à 16:24:29
oulà ! Vaste sujet !
Codec = Codeur/Décodeur.
C'est un paradigme classique du traitement informatique de l'information où celle-ci peut être transformée (via un codeur) en une forme, et restituée dans son état d'origine (ou sous une troisième forme) avec un décodeur.
S'agissant du traitement informatique du signal multimédia (audio/vidéo), hors de tout contexte, le mot désignerait un logiciel (éventuellement plusieurs composants) qui transforme un signal multimédia en une forme compressée et qui est aussi capable de la décompresser (la lire).
Préliminaire : signal analogique/numérique
Le signal analogique est un signal "naturel", continu, la quantité d'information qu'il contient est infinie (exemple : le signal électrique qu'on verrrait sur l'écran d'un oscilloscope si on le branchait sur le nerf sciatique d'une grenouille). Il prend la forme d'une courbe, et comme tout le monde le sait, une courbe, ça contient une infinité de points..
Mais voilà, nos ordinatuers, eux, sont fini. Il ne traitent qu'un nombre fini d'information à la seconde. Pour que le signal analogique (qui descend de ton antenne en rateau par exemple) puisse être traîté et même compris par ton ordinateur, il faut en trouver une représentation finie : c'est le signal numérique.
Le principe de la numérisation du signal analogique (son venant d'un microphone par exemple) est très simple : au lieu stocker l'infinité de points qui constituent la courbe représentative d'un tel signal, on en prélève seulement quelques uns. Par exemple, si on numérise une voix analogique en wav 42Khz, on prélève 42 milles points (dits échantillons) de la courbe toutes les secondes. Certes, on n'a pas l'infinité de points du signal d'origine, mais 42 milles échantillons (et même beaucoup moins), ton oreille n'y vois que du feu ! Pour l'audition humaine, c'est impossible de distinguer le signal original (analogique) d'un son numérique échantillonner à 42khz.
Ca c'est le principe, tu peux généraliser à la vidéo..
Concrètement, si on prend l'exemple des codecs MPEG1/2 (analogique -> numérique) et de XviD (numérique -> numérique):
MPEG1/2 (je ne parle ici que de la couche vidéo): prend en entrée un signal le plus souvent analogique et le transforme en un un signal numérique compressé : ça peut prendre la forme d'un fichier .mpg ou .mpeg. Ces fichiers peuvent être mis sur un CD ou un DVD d'une certaine façon pour produire un VCD (vidéo CD : MPEG1) ou un DVD ou un SVCD (Super Video CD) (MPEG2).
XviD (MPEG4) : malgré la compression opérée par MPEG1/2, le résultat reste assez lourd (un DVD contient plusieurs gigaoctets !). On pourrait configurer le codec MPEG pour produire des fichiers plus petits, mais alors la qualité devient inacceptable. MPEG4 est une autre façon de compresser le signal qui est plus efficace et qui, pour une perte en qualité tolérable, permet de compresser tout un DVD (qui est déjà numérique donc) en une autre forme numérique qui peut tenir dans un CD (700 Mégaoctets)
Plus concrètement encore : XviD sous windows XP :
Le codec XviD prend la forme de plusieurs fichiers (filtres) :
- xvidcore.dll et xvidvfw.dll qui sont les composants du codeur VfW (Video for Windows). Il permet de compresser la vidéo avec XviD.
VfW est la première tentative de Microsoft de simplifier la vie aux gens qui déveoppent des codecs multimédia pour Windows : ça leur offre une façon organisé et uniforme (satandard) d'accéder aux fonctions de base windows pour faire tourner leurs codecs.
- xvid.ax : le décodeur XviD. Cette fois il est sous forme de filtre DirectShow. DirectShow est le successeur de VfW, mais il semble que tout le monde rechigne à s'en servir pour développer des codeurs. Du coup, les développeurs (des gens dont la principale qualité est la paresse) écrivent toujours leurs codeurs pour VfW, mais utilisent la nouvelle mouture (DirectShow) pour écrire le décodeur !
Pour éviter toute confusion : DirectShow permet aussi de faire des codeurs, mais ce qui l'a imposé en tant que décodeur, c'est le fait qu'il soit très facile à utiliser pour gens qui développent des lecteurs (qui n'ont besoin que de décodeurs). Et vfw permet aussi de décoder !
Dernière chose : il ne faut pas confondre codec et contenur ! Un film, c'est vidéo+son. Pour stocker les deux flux ensemble et surtout pour pouvoir les lire de façon synchronisée (sans décalage entre son et vidéo), il faut un format spécifique. Le plus utilisé est sans conteste le premier qui ait été conçu (par Microsoft à l'époque, quand on se dit que ça remonte à peine au début des années 90, ..), c'est AVI (audio/video interleave) : c'est le conteneur le plus simple qui soit. Il n'offre pas beaucoup de possibilités (et surtout il n'est pas documenté), à tel point que les développeurs ont pondu une nouvelle version étendue (AVI version 2 ou OpenDML).
Voici une très courte liste des conteneurs et codecs les plus populaires. Les noms sont clicquables :
Microsoft (Windows Media): Conteneurs AVI, ASF et WMV (vidéo+audio), WMA (audio seulement)
Codec vidéo/audio : Windows Media Video/Audio 9.
Xiph.org : Conteneur Ogg
Codec video : Theora(en stade alpha de développement)
Codecs audio : Vorbis, Speex (compression de la voix), FLAC (compression sans perte)
Matroska : Conteneur seulement :
MKV : Audio + vidéo
MKA : Audio seulement
Et les codecs :
On2 : Codec video : VP6 et VP7
MPEG : 1 et 2 :
couche video : DVD, VCD, SVCD
couche audio : mp2 et mp3 (il existe une version améliorée mais non MPEG: mpc)
couche sytème : conteneur MPEG (fichiers .mpg/.mpeg/.m2v ..)
A noter un conteneur spécial pour stocker MPEG2 dans un DVD : le VOB (Video OBject)
MPEG4 :
Contenuer : MPEG4 (fichiers .mp4)
Video : ASP (Advanced Simple Profile): XviD, DivX, 3ivx, ..
AVC (Advanced video Coding) ou H264 : x264 (binaires), Nero, ..
Audio : AAC (Advanced Audio Coding) : flaac (binaires), Nero, ..
Les technologies MPEG son soumises à plusieurs brevets ! Si tu veux une expérience multimédia 100% libre, je te conseille la combinaison : Theora + Vorbis dans un conteneur Matroska.
Tu as le droit de poser des questions !
Marsh Posté le 05-11-2005 à 17:32:51
Ptain
ça c'est de la réponse
Marsh Posté le 05-11-2005 à 19:17:49
wow, merci beaucoup !
merci pour ces explications bien intéressantes !!
Marsh Posté le 05-11-2005 à 19:54:49
Va faloir que je mette à jour la FAQ
Marsh Posté le 06-11-2005 à 20:48:02
wai c clair, méme si jai relu le texte 3 fois avan de tou comprendre. Je te remercie bocoup pr cette exellente reponse.
Marsh Posté le 06-11-2005 à 23:14:42
Ca doit être la nostalgie
Tu m'as rappelé quand je me suis posé la même question il y a quelques années..
Je m'étais retrouvé d'un coup tout seul au monde..
Alors j'ai peut-être détaillé un peu trop (et encore, je me suis retenu ), mais tout lire trois fois, c'est mieux que les centaines d'heures de lecture que je me suis tapées pour commencer à y voir un peu plus clair dans la jungle du multimédia sur ordinateur (oui, je comprends pas très vite !)
Marsh Posté le 07-11-2005 à 22:00:01
Citation : Les technologies MPEG son soumises à plusieurs brevets ! Si tu veux une expérience multimédia 100% libre, je te conseille la combinaison : Theora + Vorbis dans un conteneur Matroska. |
Pourquoi pas le laisser dans son conteneur d'origine (ogg) ?
Marsh Posté le 08-11-2005 à 23:14:35
Il paraît effectivement plus naturel de stocker du Vorbis et du Theora dans un fichier .ogm
D'ailleurs si c'est tout ce qu'il y a à mettre dans le fichier final, ce serait mieux de faire ce choix.
Mon conseil se voulait plus général. Matroska est autrement plus riche et général que Ogg.
Dès qu'il s'agit de rajouter des sous-titres, plusieurs pistes audio ou faire des chapitres comme dans un DVD, il est absolument sans concurrent.
En plus Matroska est sous développement continuel alors que Ogg me semble un peu figé.
Dernier argument : les concepteurs de Ogg l'ont destiné depuis le début au streaming (avec ce que ça signifie pour la qualité), comme tu peux le lire sur site ici, il n'est donc pas centré sur le facilités de stockage et de playback convivial comme Matroska...
Marsh Posté le 09-11-2005 à 21:55:42
Citation : Dès qu'il s'agit de rajouter des sous-titres, plusieurs pistes audio ou faire des chapitres comme dans un DVD, il est absolument sans concurrent. |
Ogg peut aussi contenir des sous-titres, des pistes audios multiples, des chapitres n'est ce pas ? (Désolé si j'ai mal compris ta réponse )
Marsh Posté le 05-11-2005 à 11:16:09
bonjour tou le monde, jaimerais savoir a coi sert les codecs.
ou les trouver?
Merci davance