Les scènes de DVdate
DVdate comporte un certain nombre de fonctions qui utilisent le concept de scènes, c’est-à-dire une portion de la vidéo, filmée de manière continue. Dans les vidéos DV les changements de scènes sont détectés par un saut du datecode, c’est-à-dire la date et l’heure de tournage qui sont contenues dans chaque frame de la vidéo. En l’absence de datecode, DVdate peut aussi essayer de détecter des changements de scène par des « sauts » dans l’image quand deux frames consécutives ont d’importantes différences.
Toutes les informations sur les scènes sont enregistrées dans un fichier d’extension scn qui a un structure un peu compliquée, créée et utilisée à l’origine par Pinnacle Studio. Et quand DVdate exécute une fonction sur les scènes, en fait il l’exécute en s’appuyant sur ce fichier d’extension scn qui a le même nom que la vidéo et se trouve dans le même dossier.
C’est le cas quand il navigue de scène en scène, quand il découpe une video en scènes (chaque scène fait l’objet d’un fichier séparé), ou quand il exporte la liste des scènes dans un fichier (Microsoft Word, Excel ou Libre Office) avec éventuellement des imagettes.
D’où l’importance de pouvoir créer correctement les fichiers scn et de les relire également avec soin.
Or, grâce à un internaute, utilisateur de DVdate nommé Terry Goodall je viens de m’apercevoir que les versions récentes de DVdate avaient des bugs dans le processus de création de fichiers scn et de leur relecture. Du coup toutes les fonctions sur les scènes pouvaient être un peu bancales, jusqu’à parfois planter le programme.
Grâce aux efforts de Terry qui est allé jusqu’à m’envoyer plusieurs fichiers d’images et même un extrait de sa vidéo pour que je puisse analyser ce qui n’allait pas, j’ai pu rectifier les choses et je pense que la version 8.0.4 mise en ligne depuis peu est maintenant correcte de ce point de vue.
Pour les utilisateurs de DVdate qui ont créé des fichiers scn et se demandent s’ils sont corrects ou non, il y a une solution simple (mais qui prendra pas mal de temps, donc à faire tourner une nuit): c’est de charger dans DVdate tous les fichiers DV dont on dispose, les sélectionner tous, puis lancer la commande Scènes/Créer un fichier scn selon date. Il faudra éventuellement répondre Oui à Tous pour ne plus être embêté par des demandes de confirmation avant d’écraser les fichiers existants.
Cela m’amène à souligner encore une fois combien j’apprécie les retours des utilisateurs de mes logiciels, même quand ils sont critiques. Je rappelle que je ne suis pas un professionnel et que je n’ai pas les moyens de faire des tests approfondis sur tous les cas de figure que l’on peut rencontrer. Je compte donc sur l’aide des utilisateurs pour les améliorer. N’hésitez pas à signaler des difficultés sur les forums ou à m’envoyer un e-mail.
Pour l’information des geeks, je reproduis ci-dessous ce que je sais des fichiers scn (que j’avais découverts à l’origine avec Pinnacle Sudio 8 en 2002).
Un fichier *.scn commence par un en-tête qui en hexadécimal est le suivant:
63 26 01 00 04 00 00 00
FF FF 03 00
0A 00 ‘SourceTape’
[nom complet du fichier]
00 00 00 00 00 00 00 00 (ou 00 00 00 00 00 00 0C 00)
{{nombre de scenes}}
Puis pour la première scène:
FF FF 01 00
04 00 ‘Clip’
50 xx yy 00
FF FF 01 00
05 00 ‘Scene’
[commentaire_1]
(scene_1)
(longueur_1)
00 00 00 00 01 80
[fichier]
00 00 00 00
00 00 00 00
(longueur_1)
<(image_1)> si (yy and $40)<>0
<[titre_1]> si (xx and $80)<>0
Puis pour chacune des scènes suivantes, notées scene_i (avec i>=2):
03 80 F0 xx yy 00 05 80
[commentaire_i]
(scene_i)
(longueur_i)
00 00 00 00 07 00
(scene_i)
(longueur_i)
(scene_i)
<(image_i)> si (yy and $40)<>0
<[titre_i]> si (xx and $80)<>0
Ici ma notation est la suivante:
{{nombre}}
est un nombre entier codé sur 2 octets(scene_i)
est le numéro de la frame dans le fichier avi où commence la scène i. Par exemple scene_1 est 0. Ce numéro est un entier codé sur 4 octets.(longueur_i)
est la longueur – en nombre de frames -sur 4 octets de la scène i. Donc (longueur_i)=(scene_i+1)-(scene_i)<xxx> si condition
: signifie que l’élément xxx est optionnel, et il n’est présent que si la condition est remplie[texte]
est une chaîne de caractères précédée de sa longueur et éventuellement de caractères de code UTF selon une des syntaxes suivantes:
00 est un texte vide
{len1} avec len1<$FF est un texte UTF-8 de longueur len1
FF {{len2}} avec len2<$FFFE est un texte UTF-8 de longueur len2
FF FE FF 00 est un texte vide
FF FE FF {len1} avec len1<$FF est un texte UTF-16 de longueur len1
FF FE FF FF {{len2}} avec len2<$FFFE est un texte UTF-16 de longueur len2
{len1} est la longueur du texte sur 1 octet
{{len2}} est la longueur du texte sur 2 octets – donc toujours précédée du code $FF
Le code FF FE FF signifie donc que le texte est en widechar, chaque caractère étant codé sur 2 octets.