Question 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 suis tellement confus ... quelle est la différence entre un codec audio / vidéo (qui est apparemment un raccourci pour "encoder / decoder", un peu comme comment "modem" est vraiment "modulateur / démodulateur") et un audio / format vidéo?
(Est-ce que j'utilise même la terminologie correcte?)

i.e .: 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 s'exécute-t-il parfois .mpg fichiers, et parfois pas?

De plus, quels sont les codecs suivants, lesquels sont des 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 (comment est-il différent de son palindrome, Xvid?)
  • H.264

87
2018-06-23 02:12


origine


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


Réponses:


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 responsable de les garder ensemble et c'est également ce que vous ouvrez généralement dans votre lecteur multimédia de choix.
  • Un codeur particulier (par exemple, x264, libvpx) est chargé de transformer un flux d'entrée en un flux binaire compatible avec les codecs. Il existe souvent plusieurs encodeurs pour un codec particulier.

Comme vous pouvez le voir, nous devrons expliquer quelques points ici.

Qu'est-ce qu'un codec?

UNE codec est l'abréviation de codeur / décodeur, ce qui signifie simplement que: Les données générées par un codeur peuvent toujours être décodées par un décodeur approprié. Cela se produit 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é).

De nos jours, lorsqu'un codec vidéo est spécifié, les institutions qui y participent généralement spécifier uniquement la syntaxe de la norme. Par exemple, ils diront: "Le format bitstream doit être comme ceci", "le 0x810429AAB ici ils seront traduits en cela ", etc. Ils fournissent souvent un encodeur et un décodeur de référence, mais la manière dont un codeur est ensuite écrit pour correspondre à un tel format est à la charge des fabricants.

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

Un exemple de cas - H.264

Avant de mélanger la terminologie, prenons un exemple. Considérer le cas pour H.264. Le nom standard 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 un logiciel gratuit et open source. Les deux prétendent offrir une bonne qualité, bien sûr.

Le simple fait que vous puissiez optimiser le codage en fait une compétition ici. Les deux encodeurs fourniront un flux binaire standardisé qui peut toujours être décodé par un décodeur compatible H.264.

Résumer

Donc, en somme, disons simplement qu'un encodeur va:

  • 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 bitstream valide
  • reconstruire les images vidéo à partir 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 encodées avec les codecs mentionnés ci-dessous. Intéressant, presque tout d'entre eux ont été créés par le Groupe d'experts sur le cinéma (MPEG). Mais il existe d'autres codecs libres de droits, par exemple ceux créés par Google ou Alliance for Open Media, 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 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 date de 1996. La vidéo MPEG-2 est principalement utilisée pour la diffusion de DVD et de téléviseurs, par ex. DVB-T ou satellite et applications héritées où la compatibilité est importante. Les vidéos MPEG-2 se trouvent principalement dans un .MPG récipient.

MPEG-4 Partie 2

C'est probablement celui qui a été 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é à des tailles de fichiers pratiques, ce qui signifie que vous pouviez 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, voir ma réponse ici). Cela ne fonctionne plus aussi bien pour le contenu HD ou 4K.

Certains encodeurs qui produisent une vidéo MPEG-4 Part 2 sont DivX, son arnaque à source ouverte XviD, et Nero Digital.

Les vidéos MPEG-4 Part 2 viennent généralement dans une AVI conteneur, mais MP4 est également vu souvent.

MPEG-4 Part 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é pour les fichiers de petite taille et convient donc parfaitement à tous les types de vidéo pour Internet ou les appareils mobiles. Vous trouverez 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 codée en H.264.

Certains encodeurs pour cela sont: x264, NVENC (de NVIDIA), Concept principal. Les vidéos viennent surtout en MP4, MKV ou MOV conteneurs.

HEVC / H.265

Aussi appelé MPEG-H Part 2, il s’agit du successeur de MPEG-4 Part 10 / AVC / H.264. Il vise des résolutions plus élevées (jusqu’à 8K) et peut offrir des performances d’encodage jusqu’à 50% supérieures (en termes de qualité et de débit binaire) par rapport à H.264 (voir ce papier, par exemple).

La norme a été publiée en 2013 et, lentement, le codec commence à être de plus en plus utilisé, par exemple pour les transmissions vidéo sur IP ou en ligne. HEVC est également utilisé par Apple pour stocker des vidéos et des images (en utilisant HEIF) sur iOS. Cependant, le fait qu'il existe plusieurs pools de brevets associés à HEVC a amené de nombreuses entreprises (presque toutes, sauf Apple) à opter pour des solutions de remplacement exemptes de redevances. HEVC est aussi pas pris en charge nativement par tous les navigateurs, le rendant inutilisable pour le streaming Web.

Le codeur le plus connu est x265. Il y a aussi NVENC. Les vidéos entrent généralement 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 implémenté dans de nombreux navigateurs. Sa qualité est presque aussi bonne que HEVC, et parfois même meilleure (voir ce papier 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 encodeur, et il arrive souvent WebM ou MKV conteneurs.

Certaines entreprises se sont regroupées pour former un concurrent encore plus puissant que HEVC - mais en tant qu’alternative libre de droits. AV1 sera le successeur de VP9, ​​et 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). Lis plus à ce sujet ici.

le libaom encoder peut être utilisé pour générer des flux 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 constitué de données vidéo vraiment brutes. Vous pourriez effectivement aller de l'avant et regarder la vidéo en utilisant un flux binaire brut. Mais dans la plupart des cas, cela ne suffit pas ou pas pratique.

Par conséquent, vous devez encapsuler 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 peut devoir ê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 3G) et divisée en paquets avant

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

Un conteneur synchronisera les images vidéo et audio en fonction de leur Timbre de présentation (PTS), qui garantit leur affichage exactement au même moment. Il faudrait également 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 des vidéos principalement enveloppées dans les conteneurs suivants. Il y a aussi d'autres moins populaires, mais comme je l'ai dit, ce sont surtout:

AVI

Audio Video Interleave - c'est le conteneur le plus simple, 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 considéré comme hérité, 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. C'est le format incontournable pour la vidéo H.264, mais il intègre également HEVC, MPEG-4 Part 2 et MPEG-2.

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

MKV et WebM

Matroska Video (MKV) est un format de fichier libre et à source ouverte qui est souvent utilisé de nos jours, car il supporte pratiquement tous les codecs, du H.264 au 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 - il est le conteneur de choix pour la vidéo en streaming 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 l’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 leurs applications de streaming. Il n’est plus autant utilisé, car la manière dont le streaming est effectué a beaucoup changé ces dernières années.


Codecs et formats populaires

De plus, quels sont les codecs suivants, lesquels sont des 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 récipient créé par Apple. Ce conteneur a ensuite été adapté pour MP4. Il peut transporter toutes sortes de codecs. Quick Time est en fait un framework média complet, il ne spécifie pas vraiment de codec en tant que tel.
  • MPEG (1, 2, 3, 4): Normes définies par le groupe d'experts en images. Voir mon post ci-dessus pour plus de détails.
  • WMV: Windows Media Video. C'est en fait un codec enveloppé dans une Format de systèmes avancés conteneur, qui utilise le .wmv extension à nouveau. Bizarre, mais c'est comme ça.
  • FFmpeg: Ce n'est ni un codec ni un conteneur. C'est une bibliothèque d'outils vidéo permettant également la conversion entre différents codecs et conteneurs. FFmpeg s'appuie sur l'open source libavcodec et libavformat bibliothèques 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 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. Ce n'est que la version libre et gratuite de DivX, qui a bien sûr suscité une certaine 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?

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

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

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

134
2018-06-23 08:58



Maintenant, c'est ce que l'on peut appeler à juste titre pour répondre à une question. Bien joué. - Francesco
Bonne réponse, mais vous avez raté le format du conteneur Ogg. - Ignacio Vazquez-Abrams
C'est la réponse la plus impressionnante que j'ai vue depuis longtemps. Merci beaucoup pour les excellentes explications! :) - Mehrdad
@ Mehrdad Heureux de pouvoir éclairer le sujet. Je vous remercie :) - slhck
Parfois, vous souhaiteriez pouvoir faire plusieurs votes positifs sur une réponse :) - Dolf Andringa


En général, un format de média est en réalité un conteneur contenant un flux audio (de certains codec audio) et un flux vidéo (de certains 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 - c'est 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 (quels 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.


3
2018-06-23 02:18



Il n'y a pas de codec "Quicktime". Quicktime est un framework multimédia, y compris le conteneur .mov, un logiciel d’encodage, de décodage et d’affichage de toute une gamme de codecs, ainsi que d’autres curiosités comme Quicktime VR. - stib


il y a codecle sable conteneurs (formats de fichier). Le codec décrit comment les données sont encodé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 codec et de conteneur. C'est déroutant, alors je vous suggère de lire mes références pour plus d'informations


1
2018-06-23 02:20





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 réduire la taille) et le codec est ce qui peut le compresser, le lire et le traduire dans la vidéo que vous voyez. . 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 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 différents formats dans d'autres formats.

AVC et H.264 sont les mêmes et constituent un format de codage pour la vidéo HD.

DivX est un codec vendu dans le commerce.

Xvid est un codec pour MPEG-4.


-1
2018-06-23 02:16



ffmpeg est à peu près le backend de 99% des convertisseurs FOSS. - Journeyman Geek♦
Cette réponse est fausse. Sur les 7 phrases, seuls les numéros 6 et 7 sont corrects, même ceux qui manquent de détails. - jiggunjer