Mychapterdb - logiciel de chapitrage de vidéos (en particulier les mkv)

Description

Tout d'abord, voici une impression d'écran du logiciel:
http://mychapterdb.org/img/mychapterdb-view.png

Et voici le résultat lors de la lecture de la vidéo:
http://membres.lycos.fr/ftp242835074/MyChapterDB/rock-chapters.png

Ce logiciel permet de gérer les chapitres d'une vidéo. Il a été spécifiquement conçu pour les intégrer ou les extraire des fichier .MKV (format open-source, http://www.matroska.org), mais le fichier généré peut aussi être lu séparément de la vidéo par un lecteur tel que BSPlayer (même si c'est mieux de le muxer dans un MKV, c'est plus pratique).

Voici ce qu'il fait:
- Ouverture des fichiers .IFO des DVD-Vidéo, récupération des timestamps des chapitres dans la structure du IFO, corrige le bug du dernier chapitre.
- Ouverture des fichiers .MKV, récupération des chapitres et de leurs noms dans la structure du MKV.
- Ouverture des fichiers textes OGG CHAPTERS (générés par exemple par DVDDecrypter).
- Ouverture des fichiers textes XML qui contiennent des chapitres.
(supporte les différents codages -iso8859-1, utf8, etc...-)

- Édition des chapitres et de leurs timestamp dans une interface conviviale.

- Sauvegarde des chapitres en fichier texte OGG CHAPTERS.
- Sauvegarde des chapitres en fichier XML (conservant des informations supplémentaires du MKV).
(il suffit de mettre le .txt ou le .xml ainsi sauvé en entrée dans MKVToolNix pour chapitrer sa vidéo)

La structure sous-jacente est un arbre, ce qui donne la possibilité d'utiliser des sous-chapitres, mais aussi des listes de lecture, mais l'interface pour cela n'est pas encore programmée.

Nécessite JAVA 1.5.

Pour le télécharger, rendez-vous sur www.mychapterdb.org.

Pour plus d'infos:
http://www.unite-video.com/phpbb/viewtopic.php?t=6989
http://forum.doom9.org/showthread.php?p=700466

Source / Exemple :


http://matroska.epsylon.org/downloads/MyChapterDB.src.rar

Conclusion :


Bon maintenant je vais essayer d'expliquer ce que fait chaque module, ce qui permettra de trouver la partie du code source qui vous intéresse...

Déjà, le programme respecte le design pattern Model-View-Controller (MVC), avec une séparation au niveau des packages : un package model et un package view (controller est géré dans view). Le modèle est largement inspiré de la structure MKV à respecter, et par conséquent quasiment identique à la structure XML des fichiers à muxer en MKV.
La classe Session respecte le design pattern Singleton, et contient les informations d'environnement (gère un fichier de configuration, la présision -milli ou nano-, si les chapitres ont été sauvés, etc...).

Au niveau des parsers (modules qui permettent l'ouverture et la "compréhension" des différents types de fichiers), pour les débutants, le parseur OGG Chapters est intéressant (ouverture et lecture d'un fichier texte), pour les un peu plus confirmés, le parseur XML personnel (je n'ai pas utilisé d'api spécifique, j'ai fait mon propre parser XML) permet de voir comment lire un fichier XML sous forme d'arbre (même si ici il est spécifique à la lecture des chapitres).
Et enfin, pour ceux que ça intéresse, j'ai fait aussi mon propre parser IFO (qui permet de déterminer les chapitres à partir de la structure du DVD) et mon propre parser MKV (bah ouais ça n'a jamais été fait en java, d'hab c'est en c++, donc fallait bien le faire).
C'est de la lecture binaire, avec lecture d'entiers de taille variable (basée sur UTF8) pour le MKV.
D'ailleurs je remercie robux4 (développeur mkv) pour m'avoir un peu expliqué "en français" les spécifications techniques du mkv (qui sont disponibles ici: http://www.matroska.org/technical/specs/index.html), ainsi que alexnoe, développeur de avimuxgui, pour son aide, et pour m'avoir créé des MKV tordus pour tester si le programme les ouvrait :-)
Je remercie aussi Toff pour le lien vers la documentation sur la structure des .IFO qu'il m'a donné.

Pour les débutants, le code source des "writers" peut être intéressant aussi (génération de fichier texte et xml à partir du modèle).

Au niveau de l'interface, une classe qui gère toutes les images (ImageManager), un JTabbedPane (composant à onglets), une JTable éditable (avec son propre modèle utilisant le modèle de l'application).

Voilà à peu près ce qu'on peut dire au niveau du code source...

Si vous avez des questions ou des suggestions, n'hésitez pas :-)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (rom1v)