Qu'est-ce qu'un codec (par exemple, DivX?) Et en quoi diffère-t-il d'un format de fichier (par exemple, MPG)?

95

Je suis tellement confus ... quelle est la différence entre un codec audio / vidéo (qui est apparemment un raccourci pour "encodeur / décodeur", un peu comme "modem" est vraiment "modulateur / démodulateur") et un audio / format vidéo?
(Est-ce que j'utilise même la bonne terminologie?)

Par exemple, quelle est la différence entre dire que quelque chose est "MPEG-4" et dire quelque chose utilise le codec "DivX"? Pourquoi le lecteur Windows Media exécute-t-il parfois des .mpgfichiers et parfois pas?

De plus, lesquels des codecs, quels sont les formats de fichiers et lesquels ne sont ni l'un ni l'autre?

  • Quicktime MOV
  • MPEG (1, 2, 3, 4)
  • WMV
  • FFmpeg
  • AVC
  • Xvid
  • DivX (en quoi est-il différent de son palindrome, Xvid?)
  • H.264
Mehrdad
la source
2
En regardant ma propre question 6 ans plus tard et tout ce que je peux penser, c'est "comment tu ne sais pas ça ?!"
Mehrdad
1
Nous sommes tous partis de quelque part. ;)
Hashim

Réponses:

146

Quelques définitions principales:

  • Un codec (par exemple, H.264, HEVC, VP9) n’est responsable que de la partie vidéo ou audio, et un ou plusieurs codecs peuvent être fusionnés dans un conteneur.
  • Un conteneur (par exemple, MP4, MKV) est chargé de les maintenir ensemble et c’est également ce que vous ouvrez habituellement dans le lecteur multimédia de votre choix.
  • Un encodeur particulier (par exemple, x264, libvpx) est chargé de transformer un flux d'entrée en un flux binaire compatible codec. Il existe souvent plusieurs codeurs pour un codec particulier.

Comme vous pouvez le constater, nous devrons expliquer certaines choses ici.

Qu'est-ce qu'un codec?

Un codec est l'abréviation de codeur / décodeur, ce qui signifie fondamentalement juste ce qui suit: Les données générées par un codeur peuvent toujours être décodées par un décodeur approprié. Cela s'avère être valable pour la vidéo, l'audio, mais vous pouvez aussi penser à la cryptographie (un encodeur a besoin d'un décodeur approprié pour afficher un message crypté).

De nos jours, lorsqu'un codec vidéo est spécifié, les institutions qui y participent ne spécifient généralement que la syntaxe de la norme. Par exemple, ils diront: "Le format du train binaire doit être comme ceci", "L' 0x810429AABici sera traduit ici", etc. Souvent, ils fournissent un codeur et un décodeur de référence, mais comment un codeur est ensuite écrit pour correspondre à un tel Le format dépend entièrement des fabricants.

C’est la raison pour laquelle vous trouverez autant de codeurs pour le même codec, dont certains sont même commerciaux.

Un exemple de cas - H.264

Avant de confondre terminologie, prenons un exemple. Prenons le cas de H.264 . Le nom de la norme est H.264 - ce n'est pas le nom du codeur actuel. Mainconcept est un très bon encodeur commercial, alors que x264 est un encodeur libre et open source. Les deux prétendent offrir une bonne qualité, bien sûr.

Le simple fait que vous puissiez optimiser l'encodage en fait une compétition ici. Les deux codeurs fourniront un train de bits normalisé pouvant toujours être décodé par un décodeur compatible H.264.

Résumer

Donc, dans l'ensemble, disons simplement qu'un encodeur va:

  • prendre des images vidéo
  • produire un train de bits valide

Le flux binaire est ensuite multiplexé dans un conteneur.

Le décodeur va:

  • prendre ce bitstream valide
  • reconstruire les images vidéo de celui-ci

Ils sont tous deux conformes à une norme de codec. C'est tout!


Codecs actuels

Ces jours-ci, vous ne trouverez probablement que des vidéos codées avec les codecs que je mentionnerai ci-dessous. Fait intéressant, la quasi- totalité d’entre elles ont été créées par le Groupe d’experts du cinéma (MPEG). Cependant, il existe également d'autres codecs libres de droits, tels que ceux créés par Google ou Alliance for Open Media, qui sont concurrents des normes MPEG.

Notez que "MPEG" peut faire référence à la fois aux codecs et aux conteneurs, comme vous le verrez ci-dessous. Cela ajoute à la confusion, mais sachez simplement que "MPEG" ne signifie rien en soi, par exemple "J'ai un fichier au format MPEG" est très ambigu ".

MPEG-2

MPEG-2 est assez vieux. Sa première version publique date de 1996. La vidéo MPEG-2 est principalement utilisée pour la diffusion de DVD et la diffusion télévisuelle, par exemple DVB-T ou par satellite, et les applications traditionnelles où la compatibilité est essentielle. Les vidéos MPEG-2 se trouvent principalement dans un conteneur .MPG .

MPEG-4 Partie 2

C’est probablement celui qui était utilisé principalement pour encoder des vidéos pour le Web au milieu des années 2000, mais il a été remplacé entre-temps. Il offre une bonne qualité pour des tailles de fichier pratiques, ce qui signifie que vous pouvez graver un film entier de 90 minutes sur un CD de 600 Mo (alors qu'avec MPEG-2, vous auriez eu besoin d’un DVD, voyez ma réponse ici ). Cela ne fonctionne plus très bien pour le contenu HD ou 4K.

Certains encodeurs qui produisent des vidéos MPEG-4 Part 2 sont DivX , son système d’archives open source XviD et Nero Digital .

Les vidéos MPEG-4 Part 2 viennent principalement dans un conteneur AVI , mais MP4 est aussi souvent vu.

MPEG-4 Part 10 / AVC / H.264

Ceci est également appelé codage vidéo avancé MPEG-4 (AVC) ou H.264 ; c'est le codec le plus utilisé aujourd'hui. Il offre une bonne qualité pour les fichiers de petite taille et convient donc parfaitement à tout type de vidéo pour Internet ou les appareils mobiles. Vous trouverez le H.264 dans presque toutes les applications modernes, des téléphones aux caméscopes. Sur les disques Blu-ray, la vidéo est maintenant encodée en H.264.

Certains encodeurs sont: x264 , NVENC (de NVIDIA), Mainconcept . Les vidéos viennent principalement dans des conteneurs MP4 , MKV ou MOV .

HEVC / H.265

Également appelé MPEG-H Part 2, il s'agit du successeur de MPEG-4 Part 10 / AVC / H.264. Il est destiné aux résolutions plus élevées (jusqu'à 8K ) et peut offrir des performances de codage jusqu'à 50% supérieures (en termes de qualité par rapport au débit binaire) par rapport au H.264 (voir le présent document , par exemple).

La norme a été publiée en 2013 et, lentement, le codec commence à être utilisé de plus en plus, par exemple pour la transmission IPTV ou la transmission vidéo en ligne. HEVC est également utilisé par Apple pour stocker des vidéos et des images (à l'aide de HEIF ) sur iOS. Cependant, le fait qu'il existe plusieurs pools de brevets associés à HEVC a poussé de nombreuses sociétés (presque toutes sauf Apple) à adopter des solutions de remplacement sans redevance. HEVC n'est également pas pris en charge de manière native par tous les navigateurs, ce qui le rend inutilisable pour la diffusion Web.

Le codeur le plus connu est x265 . Il y a aussi NVENC . Les vidéos viennent généralement dans des conteneurs MP4 .

VP9 et AV1

VP9 (le successeur de VP8) est un codec principalement développé par Google. Il est ouvert et libre de droits, et implémenté dans de nombreux navigateurs . Sa qualité est presque aussi bonne que HEVC, et parfois même meilleure (voir cet article de Netflix). VP9 est ce que vous obtenez lorsque vous regardez YouTube sur un navigateur qui le prend en charge.

VP9 peut être encodé avec l' encodeur libvpx et vient souvent dans des conteneurs WebM ou MKV .

Certaines entreprises se sont regroupées pour former un concurrent encore plus puissant à HEVC - mais en tant qu'alternative sans redevance. AV1 sera le successeur de VP9 et est basé sur ce qui était supposé devenir VP10. Il est soutenu par l'Alliance for Open Media (fondée par Amazon, Cisco, Google, Intel, Microsoft, Mozilla et Netflix). En savoir plus à ce sujet ici .

Le codeur libaom peut être utilisé pour générer des trains de bits AV1, mais il est toujours expérimental.


Qu'est-ce qu'un format (conteneur)?

Jusqu'à présent, nous n'avions expliqué que le "flux binaire" brut, qui consiste essentiellement en de véritables données vidéo brutes. Vous pouvez réellement regarder la vidéo en utilisant un flux de données aussi brut. Mais dans la plupart des cas, cela ne suffit pas ou n'est pas pratique.

Par conséquent, vous devez envelopper la vidéo dans un conteneur. Il y a plusieurs raisons pour lesquelles:

  • Peut-être que vous voulez de l'audio avec la vidéo
  • Peut-être voudrez-vous passer à une certaine partie de la vidéo (comme "allez à 1: 32: 20.12")
  • L'audio et la vidéo doivent être parfaitement synchronisés
  • La vidéo devra peut-être être transmise sur un réseau fiable et divisée en paquets avant
  • La vidéo peut même être envoyée sur un réseau avec perte (comme la 3G) et divisée en paquets avant

Pour toutes ces raisons, les formats de conteneur ont été inventés, certains simples, d'autres plus avancés. Ce qu'ils font tous, c'est "envelopper" le flux vidéo dans un autre flux.

Un conteneur synchronise les images vidéo et audio en fonction de leur horodatage de présentation (PTS), ce qui garantit leur affichage exactement au même moment. Cela permettrait également d'ajouter des informations pour les serveurs de diffusion en continu, si nécessaire, afin qu'un serveur de diffusion en continu sache quand envoyer quelle partie du fichier.

Jetons un coup d'oeil à certains conteneurs populaires.


Conteneurs populaires

Vous trouverez des vidéos principalement emballées dans les conteneurs suivants. Il y a aussi d'autres moins populaires, mais comme je l'ai dit, ce sont principalement:

AVI

Entrelacement audio / vidéo - c'est le conteneur le plus élémentaire, il est juste là pour entrelacer l'audio et la vidéo. Il a été écrit en 1992 et est encore utilisé aujourd'hui, mais considéré comme un héritage, ne l'utilisez plus.

MP4

est également appelée MPEG-4 Part 14 et est basée sur le format de fichier QuickTime. C'est le format idéal pour la vidéo H.264, mais il englobe également les formats HEVC, MPEG-4 Part 2 et MPEG-2.

Ce conteneur peut également uniquement encapsuler de l'audio. C'est pourquoi vous trouverez autant de fichiers .mp4 qui ne sont pas des vidéos mais des fichiers audio codés au format AAC , également dans des fichiers .m4a (simplement une extension différente). L'extension .m4v est généralement utilisée pour les trains de bits vidéo.

MKV et WebM

Matroska Video (MKV) est un format de fichier gratuit et à source ouverte, souvent utilisé de nos jours, car il prend en charge pratiquement tous les codecs, du H.264 à VP9, ​​ainsi que de nombreux codecs audio.

WebM est basé sur MKV et est principalement utilisé pour la vidéo VP9 et l'audio Opus. Il s'agit du conteneur de choix pour la vidéo en continu sur le Web lorsque ces codecs sont utilisés.

Ogg

Le conteneur Ogg est le conteneur de choix pour le codec vidéo Theora (et le codec audio Vorbis ), également créés par la Xiph.Org Foundation. C'est également gratuit et open source (tout comme le codec).

FLV

Le format vidéo Flash a été créé par Adobe pour être utilisé dans leurs applications de diffusion en continu. Il n’est plus très utilisé, car la façon dont le streaming est fait a beaucoup changé au cours des dernières années.


Codecs et formats populaires

De plus, lesquels des codecs, quels sont les formats de fichiers et lesquels ne sont ni l'un ni l'autre?

  • Quicktime MOV : .mov est l'extension de fichier pour le format de fichier QuickTime , qui est un conteneur créé par Apple. Ce conteneur a ensuite été adapté pour MP4. Il peut transporter toutes sortes de codecs. Quicktime est en fait un cadre multimédia complet, il ne spécifie pas vraiment de codec en ce qui me concerne.
  • MPEG (1, 2, 3, 4) : normes définies par le groupe d'experts du cinéma. Voir mon post ci-dessus pour plus de détails.
  • WMV : vidéo Windows Media. Il s'agit en fait d'un codec encapsulé dans un conteneur Advanced Systems Format , qui utilise à nouveau l'extension .wmv . Bizarre, mais c'est comme ça.
  • FFmpeg : Ce n'est ni un codec ni un conteneur. Il s'agit d'une bibliothèque d'outils vidéo permettant également la conversion entre différents codecs et conteneurs. FFmpeg s'appuie sur l'open source libavcodecet les libavformatbibliothèques pour créer des codecs et des conteneurs, respectivement. La plupart des outils vidéo que vous trouvez aujourd'hui sont basés sur celui-ci.
  • AVC : Synonyme de MPEG-4 Part 10 ou H.264.
  • DivX : Un autre type d'encodeur pour la vidéo MPEG-4 Part 2.
  • Xvid : Un type de codeur pour la vidéo MPEG-4 Part 2. Il ne s’agit que de la version libre et open source de DivX, qui a bien sûr suscité la controverse.
  • H.264 : Synonyme de MPEG-4 Part 10 ou AVC.

Sur une note de côté:

Est-ce que j'utilise même la bonne terminologie?

J'imagine qu'une fois, je préférerais utiliser spécifiquement "codec" et "conteneur" au lieu de "format" pour éviter les malentendus. Un format peut théoriquement être n'importe quoi, car les codecs et les conteneurs spécifient un format (c'est-à-dire comment les données doivent être représentées).

Ceci étant dit, la terminologie de FFmpeg serait d'utiliser "format" pour le conteneur. C'est aussi à cause de la distinction entre:

  • libavcodec, la bibliothèque d'encodage / décodage
  • libavformat, la bibliothèque pour les conteneurs
slhck
la source
33
Voilà ce que l’on peut appeler à juste titre une réponse à une question. Bien joué.
Francesco
1
Excellente réponse, mais vous avez raté le format de conteneur Ogg.
Ignacio Vazquez-Abrams Le
7
C'est la réponse la plus impressionnante que j'ai vue depuis longtemps. Merci beaucoup pour les bonnes explications! :)
Mehrdad
@ Mehrdad Heureux d'avoir pu éclaircir le sujet. Merci :)
slhck
1
Parfois, vous voudriez pouvoir faire plusieurs votes positifs sur une réponse :)
Dolf Andringa
3

En général, un 'format' de média est en réalité un conteneur, contenant un flux audio (de certains codecs audio) et un flux vidéo (de certains codecs vidéo) et parfois des informations supplémentaires. la plupart des 'fichiers' que vous avez ont un type de fichier basé sur le conteneur et non sur le codec

FFmpeg n’est ni un conteneur, ni un codec - c’est une suite polyvalente de bibliothèques, de codecs et de logiciels pour la conversion de fichiers qui est à la base de nombreux convertisseurs et lecteurs de musique.

H.264 / AVC et xvid / divx sont des codecs

AVI (qui sont des fichiers divx / xvid), mp4, mpeg sont des conteneurs.

Quicktime mov n'est pas sûr - .mov est un conteneur, quicktime est un codec.

Compagnon Geek
la source
Il n'y a pas de codec "Quicktime". Quicktime est un cadre multimédia comprenant le conteneur .mov, un logiciel d’encodage, de décodage et d’affichage d’une gamme de codecs, ainsi que d’autres curiosités telles que Quicktime VR.
Stib
1

il existe des codecs et des conteneurs (formats de fichier). Le codec décrit comment les données sont codées / décodées. L'autre décrit comment les données encodées sont placées dans le fichier.

La plupart des lecteurs multimédias prennent en charge plusieurs types de codecs et de conteneurs. C'est déroutant, alors je vous suggère de lire mes références pour plus d'informations.

uSlackr
la source
-1

Un format est le nom donné à un type de format de fichier et à un type de compression particuliers (la plupart des vidéos sont compressées pour en réduire la taille), et le codec permet réellement de les compresser, de les lire et de les traduire en vidéos que vous voyez en les décompressant. . En d’autres termes, l’un est un type de fichier, mais l’autre est un logiciel.

Nous nous référons généralement à la plupart des vidéos par leur nom de format. Par conséquent, Quicktime MOV, MPEG et WMV sont des formats.

FFmpeg (je n'en avais jamais entendu parler) semble être le nom d'un logiciel permettant de convertir divers formats en d'autres formats.

AVC et H.264 sont identiques et constituent un format d’encodage de la vidéo HD.

DivX est un codec vendu dans le commerce.

Xvid est un codec pour MPEG-4.

KCotreau
la source
1
ffmpeg est à peu près le moteur de 99% des convertisseurs FOSS.
Compagnon Geek
Cette réponse est fausse. Sur 7 phrases, seuls les chiffres 6 et 7 sont corrects, même ceux qui manquent de détail.
Jiggunjer