Description du format VOB

Je ne connais pas tous les détails des fichiers VOB, je ne vais donc expliquer que ce que j'en sais. De toute façon le reste des informations ne nous servent pas pour faire du DivX ;-).

Un fichier VOB contient plusieurs flux multiplexés. Ces flux sont de trois grand types :

  1. Vidéo au format MPEG2 (MV2).
  2. Audio, dans un des trois formats courants, MPEG audio layer 2 (MP2), AC3 (spécifications sur le web) ou PCM (Pulse Code Modulation).
  3. Sous-titres.

Chaque flux possède un code hexadécimal qui indique sa position. Les codes les plus courants sont :

De 0xE0 à 0xEF : flux vidéos. En général il n'y as qu'un seul flux.

De 0x80 à 0x8F : flux audio au format AC3. il y a très rarement plus de 4 ou 5 flux.

De 0xC0 à 0xCF : flux audio au format MP2. Format assez rare. C'est l'ancêtre du fameux MP3.

De 0x20 à 0x2F : flux de sous-titres. Selon les films il y a plus ou moins de sous-titres.

Pour se repérer dans les fichiers VOB il existe deux séries de codes d'index. Les VOB-ID et les CELL-ID.

Les VOB-ID séparent généralement les différents films ou contenus. Ainsi si sur un même VOB il y a un bout du film et la bande annonce, la bande annonce possède un VOB-ID différent.

Les CELL-ID indiquent eux des petites séparations souvent invisibles. Leur principale utilisation est le chapitrage des films. Un même film possède très souvent un grand nombre de CELL-ID.

On peut donc représenter schématiquement un fichier VOB ainsi (le contenu n'est qu'un exemple) :

VOB-ID 1 VOB-ID 2
CELL-ID 1 CELL-ID 2 CELL-ID 3 CELL-ID 4 CELL-ID 1
0xE0 MV2 MV2 MV2 MV2 MV2
0x80 AC3 anglais AC3 anglais AC3 anglais AC3 anglais AC3 anglais
0x81 AC3 français AC3 français AC3 français AC3 français
0x20 Sous-titres anglais Sous-titres anglais Sous-titres anglais Sous-titres anglais Sous-titres anglais
0x21 Sous-titres français Sous-titres français Sous-titres français Sous-titres français Sous-titres français

Evidement, comme tous ces flux sont regroupés dans un unique fichier, chaque flux est découpé en petite partie et les petits bouts sont assemblés de la sorte :

VOB-ID 1 CELL-ID 1 0xE0 : MV2 0x80 : AC3 anglais 0x80 : AC3 français 0x20 : Sous-titres anglais 0x21 : Sous-titres français 0xE0 : MV2 0x80 : AC3 anglais ... 0x21 : Sous-titres français CELL-ID 2 0xE0 : MV2 ...

C'est pour cela qu'il ne faut jamais encoder chaque VOB séparément. Les flux à un instant précis ne sont pas du tout synchronisés !