104 votes

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

Je ne comprends pas bien... quelle est la différence entre un codec audio/vidéo (qui est apparemment un raccourci pour "codeur/décodeur", un peu comme "modem" est en fait "modulateur/démodulateur") et un format audio/vidéo ?
(Est-ce que j'utilise la bonne terminologie ?)

Par exemple : quelle est la différence entre dire que quelque chose est "MPEG-4" et dire que quelque chose utilise le codec "DivX" ? Pourquoi le lecteur Windows Media s'exécute-t-il parfois .mpg et parfois non ?

Par ailleurs, quels sont les codecs, les formats de fichiers et les autres ?

  • Quicktime MOV
  • MPEG (1, 2, 3, 4)
  • WMV
  • FFmpeg
  • AVC
  • Xvid
  • DivX (en quoi est-il différent de son palindrome, Xvid ?)
  • H.264

173voto

slhck Points 209720

Quelques définitions principales :

  • Un codec (par exemple, H.264, HEVC, VP9) est uniquement responsable 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 garder ensemble et c'est également ce que vous ouvrez généralement dans le lecteur multimédia de votre choix.
  • Un codeur particulier (par exemple, x264, libvpx) est responsable de la transformation d'un flux d'entrée en un flux binaire conforme au codec. Il existe souvent plusieurs encodeurs pour un codec particulier.

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

Qu'est-ce qu'un codec ?

A codec est l'abréviation de "encodeur/décodeur", ce qui signifie essentiellement ce qui suit : Les données générées par un encodeur peuvent toujours être décodées par un décodeur approprié. Ceci est valable pour la vidéo, l'audio, mais vous pouvez également penser à la cryptographie (un encodeur a besoin d'un décodeur approprié pour afficher un message crypté).

Aujourd'hui, lorsqu'un codec vidéo est spécifié, les institutions qui y prennent part ont généralement ne spécifient que la syntaxe de la norme. Par exemple, ils diront : "Le format du flux binaire doit être comme ceci", "La 0x810429AAB ici sera traduit en cela", etc. Souvent, ils fournissent un codeur et un décodeur de référence, mais la façon dont un codeur est ensuite écrit pour correspondre complètement à un tel format est laissée à la discrétion des fabricants.

C'est la raison pour laquelle vous trouverez tant d'encodeurs pour le même codec, et certains d'entre eux sont même commerciaux.

Un exemple de cas - H.264

Avant de mélanger la terminologie, prenons un exemple. Considérons le cas de H.264 . Le nom de la norme est H.264 - ce n'est pas le nom de l'encodeur réel. Concept principal est un très bon encodeur commercial, alors que x264 est une source libre et ouverte. Les deux prétendent offrir une bonne qualité, bien sûr.

Le simple fait que vous puissiez optimiser l'encodage constitue une compétition. Les deux encodeurs fourniront un flux binaire standardisé qui pourra toujours être décodé par un décodeur conforme à la norme H.264.

Pour résumer

Donc, dans l'ensemble, disons qu'un encodeur le fera :

  • prendre des images vidéo
  • produire un flux binaire valide

Le flux binaire est ensuite multiplexé dans un conteneur.

Le décodeur va :

  • prendre ce flux binaire valide
  • reconstruire les images vidéo à partir de ces images

Ils se conforment tous deux à une norme de codec. Et c'est tout !


Codecs actuels

De nos jours, vous ne trouverez probablement que des vidéos encodées avec les codecs que je vais mentionner ci-dessous. Il est intéressant de noter que presque todo d'entre eux ont été créés par le Motion Picture Experts Group (MPEG). Mais il existe également d'autres codecs libres de droits, par exemple ceux créés par Google ou l'Alliance for Open Media, qui sont des 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 que "MPEG" seul ne veut rien dire, par exemple "J'ai un fichier au format MPEG" est très ambiguë".

MPEG-2

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

MPEG-4 Partie 2

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

Certains encodeurs qui produisent des vidéos MPEG-4 Partie 2 sont les suivants DivX il s'agit d'une arnaque de source ouverte XviD y Nero Digital .

Les vidéos MPEG-4 Partie 2 sont généralement présentées dans un format AVI mais MP4 est également fréquent.

MPEG-4 Partie 10 / AVC / H.264

C'est également connu sous le nom de MPEG-4 Codage vidéo avancé (AVC) o H.264 il s'agit du codec le plus utilisé aujourd'hui. Il offre une bonne qualité pour des fichiers de petite taille et est donc parfaitement adapté à tous les types de vidéo pour l'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 désormais codée en H.264.

Quelques encodeurs pour cela sont : x264 , NVENC (de NVIDIA), Concept principal . Les vidéos se présentent principalement sous la forme de MP4 , MKV o MOV conteneurs.

HEVC / H.265

Également appelé MPEG-H Partie 2, il s'agit du successeur du MPEG-4 Partie 10 / AVC / H.264. Il est destiné à des résolutions plus élevées (jusqu'à 8K ) et peut offrir des performances d'encodage jusqu'à 50 % supérieures (en termes de qualité par rapport au débit binaire) par rapport à la norme H.264 (cf. cet article par exemple).

La norme a été publiée en 2013 et, lentement, le codec commence à être utilisé de plus en plus, par exemple pour les transmissions vidéo IPTV ou en ligne. HEVC est également utilisé par Apple pour stocker des vidéos et des images (en utilisant le format HEIF ) sur iOS. Cependant, le fait qu'il existe plusieurs pools de brevets associés à HEVC a poussé de nombreuses entreprises (presque toutes sauf Apple) à se tourner vers des alternatives libres de droits. HEVC est également non supporté nativement par tous les navigateurs, ce qui le rend inutilisable pour le streaming web.

Le codeur le plus connu est x265 . Il y a aussi NVENC . Les vidéos sont généralement disponibles en MP4 conteneurs.

VP9 et AV1

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

VP9 peut être encodé avec le libvpx et il se présente souvent sous forme de WebM o MKV conteneurs.

Certaines entreprises se sont réunies pour former un concurrent encore plus fort que le HEVC - mais sous la forme d'une alternative libre de droits. AV1 sera le successeur de VP9, et il est basé sur ce qui était censé devenir VP10. Il est soutenu par l'Alliance for Open Media (fondée par Amazon, Cisco, Google, Intel, Microsoft, Mozilla et Netflix). Lire Pour en savoir plus, cliquez ici .

Le site libaom peut être utilisé pour générer des flux binaires AV1, mais il est encore expérimental.


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

Jusqu'à présent, nous n'avons expliqué que le "bitstream" brut, qui n'est en fait que des données vidéo brutes. Vous pouvez en fait regarder la vidéo en utilisant un tel flux binaire brut. Mais dans la plupart des cas, ce n'est pas suffisant ou pas pratique.

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

  • Peut-être que vous voulez de l'audio avec la vidéo
  • Vous voulez peut-être passer à une partie précise de la vidéo (par exemple, "aller à 1:32:20.12").
  • L'audio et la vidéo doivent être parfaitement synchronisés
  • Il se peut que la vidéo doive être transmise sur un réseau fiable et divisée en paquets avant que
  • La vidéo peut même être envoyée sur un réseau à perte (comme le réseau 3G) et divisée en paquets avant d'être envoyée sur le réseau.

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

Un conteneur synchronisera les trames vidéo et audio en fonction de leurs Horodatage de la présentation (PTS), ce qui permet de s'assurer qu'ils sont affichés exactement au même moment. Il se chargerait également d'ajouter des informations pour les serveurs de streaming, si nécessaire, afin qu'un serveur de streaming sache quand envoyer quelle partie du fichier.

Jetons un coup d'œil à certains conteneurs populaires.


Conteneurs populaires

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

AVI

Audio Video Interleave - c'est le conteneur le plus basique, il est juste là pour entrelacer l'audio et la vidéo. Il a été écrit en 1992 et est toujours utilisé aujourd'hui, mais il est considéré comme un héritage, donc ne l'utilisez plus.

MP4

est également connu sous le nom de MPEG-4 Partie 14 et est basé sur le format de fichier QuickTime. C'est le format de référence pour la vidéo H.264, mais il englobe également HEVC, MPEG-4 Part 2 et MPEG-2.

Ce conteneur peut également contenir uniquement de l'audio, c'est pourquoi vous trouverez tant de fichiers .mp4 qui ne sont pas des vidéos mais plutôt des AAC-encoded audio, également dans des fichiers .m4a (avec une extension différente). L'extension .m4v est généralement utilisée pour les flux binaires vidéo.

MKV y WebM

Matroska Video (MKV) est un format de fichier libre et gratuit que l'on trouve souvent de nos jours, car il prend en charge pratiquement tous les codecs, de H.264 à VP9, et bien sûr aussi de nombreux codecs audio.

WebM est basé sur MKV et est principalement utilisé pour la vidéo VP9 et l'audio Opus - c'est le conteneur de choix pour le streaming vidéo 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). codec ), également créé par la fondation Xiph.Org. Il 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 ses applications de streaming. Il n'est plus guère utilisé aujourd'hui, car la manière dont le streaming est réalisé a considérablement changé au cours des dernières années.


Codecs et formats populaires

Par ailleurs, quels sont les codecs, les formats de fichiers et les autres ?

  • 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 contenir toutes sortes de codecs. Quicktime est en fait un cadre multimédia complet, il ne spécifie pas vraiment de codec en tant que tel pour autant que je sois concerné.
  • MPEG (1, 2, 3, 4) : Normes définies par le Motion Picture Experts Group. Voir mon post ci-dessus pour plus de détails.
  • WMV : Windows Media Video. Il s'agit en fait d'un codec enveloppé dans un Format des systèmes avancés qui utilise le conteneur .wmv extension à nouveau. C'est bizarre, mais c'est comme ça.
  • FFmpeg : Il ne s'agit ni d'un codec ni d'un conteneur. C'est une bibliothèque d'outils vidéo qui permet également la conversion entre différents codecs et conteneurs. FFmpeg s'appuie sur le logiciel libre libavcodec y libavformat pour créer des codecs et des conteneurs, respectivement. La plupart des outils vidéo que vous trouvez aujourd'hui sont basés dessus.
  • AVC : Synonyme de MPEG-4 Partie 10 ou H.264.
  • DivX : Un autre type d'encodeur pour la vidéo MPEG-4 Partie 2.
  • Xvid : Un type d'encodeur pour la vidéo MPEG-4 Partie 2. Il s'agit de la version libre et gratuite de DivX, ce qui a bien sûr donné lieu à une certaine controverse.
  • H.264 : Synonyme de MPEG-4 Part 10 ou AVC.

En passant :

Est-ce que j'utilise la bonne terminologie ?

Je suppose qu'une fois, il serait préférable d'utiliser spécifiquement "codec" et "conteneur" au lieu de "format" pour éviter les malentendus. Un format peut théoriquement être n'importe quoi, parce que les deux codecs y Les conteneurs spécifient un format (c'est-à-dire la manière dont les données doivent être représentées).

Ceci étant dit, le FFmpeg La terminologie serait d'utiliser "format" pour le conteneur. Cela s'explique également par la distinction entre :

  • libavcodec la bibliothèque pour l'encodage/décodage des données.
  • libavformat la bibliothèque pour les conteneurs

3voto

Chochos Points 3364

En général, un "format" de média est en fait un conteneur, contenant un flux audio (d'un certain codec audio) et un flux vidéo (d'un certain codec 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 - il s'agit d'une suite polyvalente de bibliothèques, de codecs et de logiciels de conversion de fichiers qui sous-tend de nombreux convertisseurs et lecteurs de musique.

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

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

Je ne suis pas sûr pour quicktime mov - .mov est un conteneur, quicktime est un codec.

1voto

micahg Points 1612

Il y a codec et conteneurs (formats de fichiers). Le codec décrit comment les données sont codées/décodées. L'autre décrit comment les données codées sont placées à l'intérieur du fichier.

La plupart des lecteurs multimédias prennent en charge plusieurs types de codecs et de conteneurs. Cela peut prêter à confusion, je vous suggère donc de lire mes références pour plus d'informations.

-1voto

KCotreau Points 25345

Un format est le nom donné à un type de fichier particulier et à un type de compression (la plupart des vidéos sont compressées pour en réduire la taille), et le codec est ce qui peut effectivement le compresser, le lire et le traduire en la vidéo que vous voyez en le décompressant. En d'autres termes, l'un est un type de fichier, mais l'autre est un logiciel.

Nous faisons généralement référence à la plupart des vidéos par le nom du format, donc 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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X