Qu'est-ce qu'un codec (p. Ex. DivX?), Et comment diffère-t-il d'un format de fichier (p. Ex. MPG)?

Je suis tellement confus … quelle est la différence entre un codec audio / vidéo (qui est apparemment une abréviation pour "encodeur / décodeur", sorte de "modem" vraiment "modulateur / démodulateur") et un audio / format vidéo?
(Est-ce que j'utilise même la terminologie correcte?)

C'est-à-dire: Quelle est la différence entre dire que quelque chose est "MPEG-4" et dire que quelque chose utilise le codec "DivX"? Pourquoi Windows Media Player exécute-t-il parfois des fichiers .mpg , et parfois pas?

En outre, lequel des codecs suivants, lesquels sont des formats de fichiers, et lesquels ne sont-ils pas?

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

Certaines définitions principales:

  • Un codec (p. Ex., 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 (p. Ex., MP4, MKV) est responsable de les garder ensemble et c'est aussi ce que vous ouvrez habituellement dans votre lecteur multimédia de votre choix.
  • Un codeur particulier (p. Ex., X264, libvpx) est responsable de transformer un flux de saisie en un flux de bits conforme à un codec. Il existe souvent plusieurs encodeurs pour un codec particulier.

Comme vous pouvez le voir, nous devrons expliquer quelques éléments ici.

Qu'est-ce qu'un codec?

Un codec est court pour le codeur / décodeur, ce qui signifie essentiellement les éléments suivants: Les données générées par un codeur 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 codeur a besoin d'un décodeur approprié pour afficher un message chiffré).

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 bitstream doit être comme ça", "Le 0x810429AAB ici sera traduit en cela", et cetera. Souvent, ils fournissent un encodeur et un décodeur de référence, mais la façon dont un codeur est ensuite écrit pour correspondre à un tel format est complètement compatible avec les 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.

Exemple de cas – H.264

Avant de mélanger la terminologie, prenons un exemple. Considérez le cas pour H.264 . Le nom de la norme est H.264 – ce n'est pas le nom de l'encodeur actuel. Mainconcept est un très bon encodeur commercial, alors que x264 est gratuit et open source. Les deux prétendent offrir une bonne qualité, bien sûr.

Le simple fait que vous puissiez optimiser l'encodage crée une compétition ici. Les deux encodeurs fournissent un flux binaire standardisé qui peut toujours être décodé par un décodeur compatible H.264.

Résumer

Donc, dans l'ensemble, disons simplement qu'un codeur:

  • Prendre des cadres vidéo
  • Produire un flux binaire valide

Le flux binaire est ensuite multiplexé dans un conteneur.

Le décodeur:

  • Prenez ce bitstream valide
  • Reconstruire les cadres vidéo à partir de

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 vais mentionner ci-dessous. Fait intéressant, presque tous ont été créés par Motion Motion Group Experts Group (MPEG). Mais il existe d'autres codecs libres de redevances, par exemple ceux créés par Google ou l'Alliance for Open Media, qui sont concurrents des normes MPEG.

Notez que "MPEG" peut se référer aux codecs et aux conteneurs, comme vous le verrez ci-dessous. Cela ajoute à la confusion, mais il suffit de savoir que "MPEG" seul ne signifie rien, par exemple "J'ai un fichier au format MPEG" est très ambigu ".

MPEG-2

MPEG-2 est assez ancien. Sa première version publique est issue de 1996. La vidéo MPEG-2 est principalement utilisée pour les DVD et la radiodiffusion télévisée, par exemple DVB-T ou satellite, et les applications héritées où la compatibilité est importante. Les vidéos MPEG-2 se trouvent principalement dans un conteneur .MPG .

MPEG-4 Partie 2

C'est probablement celui qui a été utilisé principalement pour coder des vidéos pour le Web au milieu des années 2000, mais il a été remplacé dans l'intervalle. Il offre une bonne qualité à des tailles de fichiers 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 besoin d'un DVD, voir ma réponse ici ). Cela ne fonctionne pas très bien pour le contenu HD ou 4K.

Certains encodeurs qui produisent la vidéo MPEG-4 Part 2 sont DivX , son ripoff XviD et Nero Digital .

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

MPEG-4 Partie 10 / AVC / H.264

Ceci est également connu sous le nom MPEG-4 Advanced Video Coding (AVC) ou H.264 ; C'est le codec le plus utilisé aujourd'hui. Il offre une bonne qualité aux petites tailles de fichiers et est donc parfaitement adapté à toutes sortes de vidéos pour Internet ou les appareils mobiles. Vous trouverez H.264 dans presque toutes les applications modernes, des téléphones à des caméscopes. Sur les disques Blu-ray, la vidéo est maintenant encodée dans H.264.

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

HEVC / H.265

Également appelé MPEG-H Part 2, c'est le successeur de MPEG-4 Part 10 / AVC / H.264. Il est destiné à des résolutions plus élevées (jusqu'à 8K ) et peut offrir des performances de codage jusqu'à 50% plus élevées (en termes de qualité par rapport au taux de bits) par rapport à H.264 (voir 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 l'IPTV ou les transmissions vidéo en ligne. HEVC est également utilisé par Apple pour stocker des vidéos et des images (utilisant HEIF ) sur iOS. Cependant, le fait qu'il existe de multiples pools de brevets associés à HEVC a de nombreuses entreprises (presque toutes sauf Apple) se déplacent vers des alternatives sans redevance. HEVC n'est pas non plus supporté de manière native par tous les navigateurs, ce qui le rend inutilisable pour la diffusion sur Internet.

L'encodeur 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 développé principalement par Google. Il est ouvert et libre de droits, et mis en œuvre dans de nombreux navigateurs . Sa qualité est presque aussi bonne que HEVC, et parfois même mieux (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 codé avec l'encodeur libvpx , et il vient souvent dans des conteneurs WebM ou MKV .

Certaines entreprises se sont réunies pour former un concurrent encore plus fort à HEVC – mais comme une alternative sans redevance. AV1 sera le successeur de VP9, ​​et il est basé sur ce qui devait devenir VP10. Il est soutenu par l'Alliance for Open Media (fondé 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 flux de bits 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 est essentiellement uniquement une donnée vidéo réelle. Vous pourriez effectivement aller de l'avant et regarder la vidéo en utilisant un tel flux bitstream brut. Mais dans la plupart des cas, ce n'est pas assez ou 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 que vous voulez passer à une certaine partie de la vidéo (comme, "aller à 1: 32: 20.12")
  • L'audio et la vidéo doivent être parfaitement synchronisés
  • La vidéo pourrait avoir besoin d'être transmise sur un réseau fiable et diviser en paquets avant
  • La vidéo pourrait même être envoyée sur un réseau à perte (comme la 3G) et divisée en paquets avant

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

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. Il faudrait également ajouter des informations pour les serveurs en continu, si nécessaire, afin qu'un serveur de diffusion connaisse quand envoyer la partie du fichier.

Jetons un coup d'oeil à certains conteneurs populaires.


Conteneurs populaires

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

AVI

Audio Video Interleave – c'est le conteneur le plus bas, il est juste là pour interconnecter l'audio et la vidéo. Il a été écrit en 1992 et est encore utilisé aujourd'hui, mais considéré comme un legs, alors ne l'utilisez plus.

MP4

Est également connu sous le nom MPEG-4 Part 14 et est basé sur le format de fichier QuickTime. Il s'agit du format aller pour la vidéo H.264, mais il enveloppe également HEVC, MPEG-4 Part 2 et MPEG-2.

Ce conteneur peut également envelopper uniquement l'audio, c'est pourquoi vous trouverez autant de fichiers .mp4 qui ne sont pas des vidéos, mais plutôt des audio codés AAC , également dans les fichiers .m4a (juste une extension différente). L'extension .m4v est habituellement utilisée pour les flux de bits vidéo.

MKV et WebM

Matroska Video (MKV) est un format de fichier ouvert et gratuit qui se trouve souvent aujourd'hui, puisqu'il supporte essentiellement tout codec, de H.264 à VP9, ​​et bien sûr, 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 la diffusion en ligne de vidéo 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éé par la Fondation Xiph.Org. C'est aussi 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 diffusion. Il n'y a plus plus d'utilisation, car la façon dont la diffusion est terminée a considérablement changé au cours des dernières années.


Codecs et formats populaires

En outre, lequel des codecs suivants, lesquels sont des formats de fichiers, et lesquels ne sont-ils pas?

  • Quicktime MOV : .mov est l'extension de fichier pour QuickTime File Format , qui est un conteneur créé par Apple. Ce conteneur a ensuite été adapté pour MP4. Il peut transporter tout type de codecs. Quicktime est en fait un cadre multimédia complet, il ne spécifie pas vraiment de codec lui-même en ce qui me concerne.
  • MPEG (1, 2, 3, 4) : normes définies par Motion Picture Experts Group. Voir ma publication ci-dessus pour plus de détails.
  • WMV : Windows Media Video. C'est en fait un codec enveloppé dans un conteneur Advanced Systems Format , qui utilise à nouveau l'extension .wmv . C'est étrange, mais c'est comme ça.
  • FFmpeg : ce n'est ni un codec ni 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 les bibliothèques open source libavcodec et libavformat pour créer des codecs et des conteneurs, respectivement. La plupart des outils vidéo que vous trouvez aujourd'hui sont basés sur cela.
  • 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 d'encodeur pour la vidéo MPEG-4 Part 2. C'est juste la version gratuite, la version gratuite de DivX, qui a bien sûr mené à une controverse.
  • H.264 : Synonyme de MPEG-4 Part 10 ou AVC.

Sur une note latérale:

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

Je suppose qu'une fois je préférerais utiliser spécifiquement le «codec» et le «conteneur» au lieu du «format» pour éviter les malentendus. Un format peut théoriquement être tout, car les codecs et les conteneurs spécifient un format (c'est-à-dire comment les données doivent être représentées).

Cela étant dit, la terminologie FFmpeg serait d'utiliser "format" pour le conteneur. Ceci est également dû à la distinction entre:

  • libavcodec , la bibliothèque pour l'encodage / décodage
  • libavformat , la bibliothèque des conteneurs

En général, un «format» des médias est vraiment un conteneur, contenant un flux audio (de certains codecs audio) et un flux vidéo (de certains codec vidéo) et parfois des informations supplémentaires. La plupart des "fichiers" vous avez un type de fichier basé sur un conteneur et non un 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 pour la conversion de fichiers sous-jacents à de nombreux convertisseurs et lecteurs de musique.

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

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

Je ne suis pas sûr de quicktime mov – .mov est un conteneur, quicktime est un codec.

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 codées sont placées dans le fichier.

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

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

Nous désignons généralement la plupart des vidéos par le nom du format, de sorte que Quicktime MOV, MPEG et WMV sont des formats.

FFmpeg (je n'avais jamais entendu parler de cela) semble être le nom d'un logiciel pour convertir différents formats en d'autres formats.

AVC et H.264 sont les mêmes, et sont un format pour coder la vidéo HD.

DivX est un codec vendu commercialement.

Xvid est un codec pour MPEG-4.