[TUTO/Vulgarisation] Chapitres Matroska
Forum DivX de Ri4m - Encoder et réencoder les videos - DivX - XviD - RV10 - RV9 - VP6 - VP7

Bienvenue invité ( Connexion | Inscription )

> 

 
Reply to this topicStart new topic
mrlafia
posté 10/04/2015 13:48
Message #1


Ouvreur
Icône de groupe

Groupe : Membres
Messages : 1
Inscrit : 10/04/2015
Membre no 58.169



Certaines fonctionnalités du format Matroska sont méconnus voir totalement ignorés.
Parmi elle, le système de chapitrage.
La majorité des fichiers MKV (surtout HD) ne contienne pas de chapitres.
Les rares fois ou ils sont présent, les utilisateurs ne savent pas comment les exploiter ou ne
peuvent pas faute de matériel ou de player compatible.
L'utilisation la plus courante est un système d'index (de préférence nommé) qui reproduit le chapitrage
disponible sur le DVD ou le BluRay.
Mais d'autres fonctionnalités sont possible avec le système de chapitres matroska comme :



- Créer des fichiers chapitres matroska pouvant exploiter d'autres MKV
- Exploiter des vidéos multi-angle a partir d'un meme fichier ou via des mkv différents
- Lier des mkv ou des partie de mkv afin qu'elles apparaissent a l'utilisateur comme un tous
- Créer des combinaisons audio/video/sous-titres sélectionnable en un clic via le menu (pratique pour passer de la version VF a la version VOSTFR)


Pré requis :
- mkvtoolnix
- Haali media splitter

Liaison de fichier et Seguement UID :

avant de rentrer dans le vif du sujet, voici quelques notions propre au format matroska qui vont nous servir par la suite.
Un des concepts les plus simple a comprendre et les plus facile a accomplir est la liaison de fichier.
Des fichiers Matroska ayant la même combinaison de pistes (audio video sous-titres) et les mêmes codecs
peuvent être liés. Ceci permet de lancer n'importe lequel de ces fichiers lié et d'obtenir dans le player
une reconstitution virtuel du fichier final a lire.

Avec un exemple c'est plus simple :
Imaginez que vous réalisé un MKV de 1.4 Go et que vous avez besoin de le spliter en 2 partie de 700 Mo.
Dans Mkvmerge Gui, onglet "Options Globale" dans la partie "Fractionnement" vous pouvez sliter le multiplexage
automatiquement après une taille de 700 Mo (Ne pas oublier de cocher "lier les fichiers")
Ont obtiens 2 fichiers : Film-001.mkv et un Film-002.mkv de 700 Mo chacun.
quelque soit le fichier qu'ont utilise, c'est le film dans sa globalité qui se lance comme si ont lançait un
fichier unique de 1.4 Go
(le fichier 1 a un fichier suite et le fichier 2 a un fichier précédent)

(IMG:http://i.imgur.com/SeVQbCO.jpg)

un peu plus bas dans le même onglet ont voie une partie appelé "File/segment linking" qui permet de lier le mkv a d'autres fichiers
MKV (avec le même set de video, audio, sous-titre) qui fait référence a une notion de "UID".
Mkvtoolnix installe le programme Mkvinfo GUI qui donne cette information sur la ligne "Segment UID"

(IMG:http://i.imgur.com/qwAVObj.jpg)



Voici un exemple d'utilisation de l'UID
Imaginons qu'ont encode une série TV en mkv. la saison comporte 24 épisodes qui ont tous les 3 même premières minutes identique : le générique
il est possible d'encoder une seul fois le générique de 3 minutes dans un fichier mkv a part et d'encoder les 24 épisodes sans les 3 premières minutes
du générique.
Au moment ou ont va multiplexer chaque mkv d'épisode, on indique dans "Previous segment UID" le segment UID du fichier générique.
L'utilisateur aura l'impression que tout les épisodes ont un générique de début mais dans la réalité il s'agit du meme fichier générique qui est repris
lorsqu’on lance chaque épisode dans le player.


Description format chapitre et chapitre structuré

Voici un exemple simple de chapitre au format xml
il est possible de charger ce fichier xml dans mkvmerge Gui (menu chapitres / charger) ou dans un éditeur de texte.

Code
<?xml version="1.0" encoding="UTF-8"?>

<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->

<Chapters>
  <EditionEntry>
    <EditionFlagHidden>0</EditionFlagHidden>
    <EditionFlagDefault>1</EditionFlagDefault>
    <EditionUID>2906622091</EditionUID>
    <ChapterAtom>
      <ChapterUID>236737181</ChapterUID>
      <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart>
      <ChapterFlagHidden>0</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
      <ChapterDisplay>
        <ChapterString>Intro</ChapterString>
        <ChapterLanguage>eng</ChapterLanguage>
      </ChapterDisplay>
    </ChapterAtom>
    <ChapterAtom>
      <ChapterUID>3143058099</ChapterUID>
      <ChapterTimeStart>00:01:42.102000000</ChapterTimeStart>
      <ChapterFlagHidden>0</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
      <ChapterDisplay>
        <ChapterString>Opening</ChapterString>
        <ChapterLanguage>eng</ChapterLanguage>
      </ChapterDisplay>
    </ChapterAtom>
  </EditionEntry>
</Chapters>

Chaque éléments est défini dans le tag <chapterAtom> et tous les éléments sont englobé dans un tag <EditionEntry>.
Il est possible d'avoir plusieurs "édition" de chapitres aux seins d'un même mkv.
(ont pourrait par exemple avoir une edition avec le chapitrage nommé en français et une édition avec le chapitrage nommé en anglais
ou encore une edition avec un chapitrage détaillé de 25 scènes et une autre édition avec un index plus sommaire de 7 ou 8 scènes)
Pour le reste c'est assez simple. le chapterID (généré automatiquement), le ChapterTimeStart (le timing de la scène si ont utilise le chapitres)
la possibilité de masquer un chapitre (ChapterFlagHidden), le nom de la scène et la langue (ChapiterString et ChapterLanguage).
Il est possible pour un <chapterAtom> de mettre plusieurs <ChapterDisplay> pour rajouter des noms de chapitres dans d'autres langues.
(par défaut le splitter détecte la langue de votre system et n'affiche que les titres de votre langue)


Il éxite un tag très intéressant <EditionFlagOrdered>1</EditionFlagOrdered> qui permet de transformer le chapitrage en un système structuré ou programmé.
Le chapitrage standard n'est qu'une simple suite de pointe d'entré dans la ligne de temps de votre film.
Les chapitres structuré permette de créer une ligne de temps virtuel. Ces chapitres ont un temps de début et un temps de fin (<ChapterTimeStart> et <ChapterTimeEnd>)
Prenons un exemple d'un clip video de 30 secondes que l'ont veut jouer 3 fois de suite.
en temps normale il faudrait encoder 3 fois le clip pour obtenir un fichier d'1m30s.
Le chapitre structuré suivant permet de faire la même chose avec le clip de 30 secondes

Code
<?xml version="1.0" encoding="UTF-8"?>

<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->

<Chapters>
  <EditionEntry>
    <EditionFlagOrdered>1</EditionFlagOrdered>
    <EditionFlagHidden>0</EditionFlagHidden>
    <EditionFlagDefault>1</EditionFlagDefault>
    <EditionUID>2906622092</EditionUID>
    <ChapterAtom>
      <ChapterUID>3143058099</ChapterUID>
      <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart>
      <ChapterTimeEnd>00:00:30.000000000</ChapterTimeEnd>
      <ChapterFlagHidden>0</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
      <ChapterDisplay>
        <ChapterString>Test</ChapterString>
        <ChapterLanguage>fr</ChapterLanguage>
      </ChapterDisplay>
    </ChapterAtom>
    <ChapterAtom>
      <ChapterUID>3143058098</ChapterUID>
      <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart>
      <ChapterTimeEnd>00:00:30.000000000</ChapterTimeEnd>
      <ChapterFlagHidden>1</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
      <ChapterDisplay>
        <ChapterString>caché</ChapterString>
        <ChapterLanguage>fr</ChapterLanguage>
      </ChapterDisplay>
    </ChapterAtom>
    <ChapterAtom>
      <ChapterUID>3143058097</ChapterUID>
      <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart>
      <ChapterTimeEnd>00:00:30.000000000</ChapterTimeEnd>
      <ChapterFlagHidden>1</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
      <ChapterDisplay>
        <ChapterString>Pouet!</ChapterString>
        <ChapterLanguage>fr</ChapterLanguage>
      </ChapterDisplay>
    </ChapterAtom>
  </EditionEntry>
</Chapters>

Dans cet exemple les mêmes 30 secondes sont rejouer 3 fois.
Dans le player, c'est un fichier qui s'affiche avec une durée 1m 30s.
Notez que les chapitres 2 ou 3 sont cachés et que seul le chapitre 1 apparait dans le menu chapitre.

Voici un autre exemple d'utilisation pour ceux qui connaisse un peu le film Memento
il éxitse une version originale du film et une version "Ordre chronologique"
Il serait tout a fait possible dans le même fichier mkv de faire deux éditions de chapitres.
Une édition avec un chapitrage standard de la version original et une édition avec des chapitres structurés
reprenant la version chronologique du film. (voir même une 3ème édition avec votre propre montage si ça vous chante)


Chapitres structurés et liaison de segment

La création de ligne de temps virtuel via les chapitres structurés peut être combiné avec le système de liaison de fichier vu plus haut.
c'est a dire qu'il est possible de faire référence a un autre fichier dans notre ligne de temps.

voila ce que ça donne dans le fichier XML

Code
<?xml version="1.0" encoding="UTF-8"?>

<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->

<Chapters>
  <EditionEntry>
    <EditionFlagOrdered>1</EditionFlagOrdered>
    <EditionFlagHidden>0</EditionFlagHidden>
    <EditionFlagDefault>1</EditionFlagDefault>
    <EditionUID>2906622092</EditionUID>
    <ChapterAtom>
      <ChapterUID>3143058099</ChapterUID>
      <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart>
      <ChapterTimeEnd>00:00:30.000000000</ChapterTimeEnd>
      <ChapterFlagHidden>0</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
      <ChapterDisplay>
        <ChapterString>Test</ChapterString>
        <ChapterLanguage>fr</ChapterLanguage>
      </ChapterDisplay>
    </ChapterAtom>
    <ChapterAtom>
      <ChapterUID>3143058098</ChapterUID>
      <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart>
      <ChapterTimeEnd>00:00:30.000000000</ChapterTimeEnd>
      <ChapterFlagHidden>0</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
      <ChapterSegmentUID format="hex">
          b4 9b 72 e0 94 11 05 61 8f 7b 0f d6 d0 34 82 01
      </ChapterSegmentUID>
      <ChapterDisplay>
        <ChapterString>Lecture d'un autre fichier</ChapterString>
        <ChapterLanguage>fr</ChapterLanguage>
      </ChapterDisplay>
    </ChapterAtom>
    <ChapterAtom>
      <ChapterUID>3143058097</ChapterUID>
      <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart>
      <ChapterTimeEnd>00:00:30.000000000</ChapterTimeEnd>
      <ChapterFlagHidden>0</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
      <ChapterDisplay>
        <ChapterString>Identique au chapitre 1</ChapterString>
        <ChapterLanguage>fr</ChapterLanguage>
      </ChapterDisplay>
    </ChapterAtom>
  </EditionEntry>
</Chapters>

idéal par exemple pour gérer les films avec une fin alternative.


Jouer avec les Editions (versions) de chapitres et les combinaisons de pistes

On a vu que les editions permettent d'inclure plusieurs versions de chapitres aux seins d'un même fichier MKV.
ces différentes versions vont apparaitre sous la forme Edition1, Edition2, etc..
si il n'est pas possible de les nommés via le fichier XML, il est possible d'utiliser un fichier tag (également au format XML
a inclure dans mkvmerge GUI sur la ligne "fichier d'étiquettes")
où l'ont va faire référence aux EditionUID du fichier XML chapitres.

Code
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
<Tags>
    <Tag>
        <Targets>
            <EditionUID>2906622092</EditionUID>
            <TargetTypeValue>50</TargetTypeValue>
        </Targets>
        <Simple>
            <Name>TITLE</Name>
            <String>Générique début</String>
            <TagLanguage>fr</TagLanguage>
            <DefaultLanguage>1</DefaultLanguage>
        </Simple>
    </Tag>
    <Tag>
        <Targets>
            <EditionUID>2906622091</EditionUID>
            <TargetTypeValue>50</TargetTypeValue>
        </Targets>
        <Simple>
            <Name>TITLE</Name>
            <String>Générique début alternatif</String>
            <TagLanguage>eng</TagLanguage>
            <DefaultLanguage>1</DefaultLanguage>
        </Simple>
    </Tag>
</Tags>

Le splitter haali permet, en jouant avec les fichiers tag de configurer les jeux de pistes ou combinaisons de pistes (video, audio, sous-titres)
ont peut par exemple faire une edition de chapitre avec un "trackset" audio Français + ghost subtitles et une édition avec un "trackset" audio Anglais + Sous titres Français

Voila en image ce que ça donne dans le menu Haali

(IMG:http://i.picasion.com/pic79/3e3f966a58cc0a05f12440538555d126.gif)



voila le fichier tag qui a rendu ça possible. Je vais pas détailler ici la codification mais si vous êtes intéressé je suis a votre disposition.

Code
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
<Tags>
  <Tag>
    <Targets>
      <EditionUID>2906622092</EditionUID>
      <TargetTypeValue>50</TargetTypeValue>
    </Targets>
    <Simple>
      <Name>TITLE</Name>
      <String>"Version FR"</String>
      <TagLanguage>eng</TagLanguage>
      <DefaultLanguage>1</DefaultLanguage>
    </Simple>
  </Tag>
  <Tag>
    <Targets>
      <EditionUID>2906622091</EditionUID>
      <TargetTypeValue>50</TargetTypeValue>
    </Targets>
    <Simple>
      <Name>TITLE</Name>
      <String>"VOSTFR"</String>
      <TagLanguage>eng</TagLanguage>
      <DefaultLanguage>1</DefaultLanguage>
    </Simple>
  </Tag>
  <Tag>
    <Simple>
      <Name>TRACKSETEX</Name>
      <String>2906622092 . #0 #0 fra VF</String>
    </Simple>
    <Simple>
      <Name>TRACKSETEX</Name>
      <String>2906622091 . #1 #1 eng VOSTFR</String>
    </Simple>
  </Tag>
</Tags>

Tout ce blabla n'a pour but que de vulgariser des fonctionnalités méconnues.
Libre a chacun de juger si il est bon de les utiliser ou pas et dans quelles conditions
J'espère que mon sévère degrés de nullité en anglais ne m'a pas trop fait traduire n'importe quoi.
Merci de m'avoir lu.
Aller en haut de la page
 
+Citer le message
SG1
posté 10/04/2015 14:22
Message #2


Producteur
Icône de groupe

Groupe : Rédacteurs
Messages : 6.285
Inscrit : 08/10/2004
Lieu : Un coin perdu du Gers (32)
Membre no 4.657



Bonjour

Bienvenue sur le forum de Ri4m...

Merci d'avoir pris le temps de faire ce tuto.
Perso, je ne suis pas fan du MKV, mais d'autres en auront probablement l'utilité...

@+
Aller en haut de la page
 
+Citer le message

[TUTO/Vulgarisation] Chapitres Matroska


Reply to this topicStart new topic
3 utilisateur(s) sur ce sujet (3 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 

Modes d'affichage: Standard ·


Regrouper

> Discussions similaires à la discussion "[TUTO/Vulgarisation] Chapitres Matroska"

Sujet Réponses
Matroska (2 bandes sons et 2 sous-titres) et MPC 1
Matroska 0
matroska cccp et ri4m 2
matroska codec 1
Chapitres dans le désordre 55
Chapitres dans avi 6
Matroska splitter et MP4 splitter 15
Chapitres 3
Chapitres mkv 8
Matroska vers dvd 3

> Sujets récents

Sujets
Décalage audio
Assistante informatique
disparus de Mourmelon (site off.)
Protection DRM fichiers Divx de l'INA
Tous les codecs nécessaires pour ripper
Firmwares RFPlayer 1000 Domotique
EXTRAIRE PISTE AUDIO D'UN FICHIER VIDEO .MKV
Convertir WAV en MP3
Film à retrouver
Tuto Convertir un DVD en MP4 - DVD en MP4
Mkvmerge : Comment différencier les pistes audio anglaise / françaises ?
Ripper DVD en 50 FPS (simplement)
L'actu des logiciels pour la vidéo
test2
Why Ripp-it(ing) After Me and why Ripp-it(ing) For Me ? So then what's the third Ripp-it(ing) part ?

RSS Nous sommes le : 19/03/2024 03:01
Ripp-It - Le site - Glossaire Audio Vidéo - Versions Rippit - Présentation - Tutoriaux divx - Télécharger Ripp-It - Ripper DVD
Forum Vidéo DivX - Ripp-It - Plan du site
Forum PSP - Forum iPod - Forum Mobile - Forum cinéma - Ripit4ME - Contact

Foot
Forum Ri4m™ © 2019 Ri4m™ - Enregistré à la CNIL sous le numéro 1081457