Table
- le but
d'AuAlign
- l'idée
d'origine
- la solution AuAlign
- comment utiliser
AuAlign
- contact
Le but
du programme
AuAlign
AuAlign a pour
but d'aider à réaliser l'alignement des pistes son et
images d'un fichier AVI
AuAlign est un générateur de JOBS d'alignement
audio-video pour VirtualDub
En effet, on constate que les fichiers AVI compressés
présentent souvent une dérive du son par rapport
à l'image. En fin de film le décalage peut atteindre
plusieurs secondes, voire des dizaines de secondes. Cette
dérive n'est pas toujours uniforme, ce qui oblige à
morceler le film pour la corriger.
Plus précisément l'origine du décalage peut être multiple (voir par exemple
ici)
et on a évidemment intérêt à adapter la solution choisie à la cause.
Cependant j'ai souvent constaté un décalage variable dans mes encodages DIVX AVI
dû à une source TV (TNT) MPEG2 de mauvaise qualité : quelques images ont été
perdues pendant l'enregisterment et l'encodage DIVX a subitement des pistes audio
et video désynchronisées. J'ai codé ce programme AuAlign pour m'aider à resynchroniser
les pistes dans ces cas où ni un unique
VirtualDub>Audio>Interleaving>Audio skew correction ni un
VirtualDub>Video>Frame rate>Change so video and audio durations match ne suffisent.
L'idée d'origine
d'AuAlign
Une première idée pour opérer cette
correction est alors d'utiliser un fichier AVS d'
Avisynth : en effet, un fichier AVS
du type
film=AviSource("Mes
videos\monFilm.avi")
f0=film.delayAudio(0.0).trim(0,
9884)
f1=film.delayAudio(-0.2).trim(9884,
64386)
f2=film.delayAudio(1.7).trim(64386,
93164)
f3=film.delayAudio(1.3).trim(93164,
99023)
AlignedSplice(f0, f1, f2,
f3)
peut corriger l'essentiel du décalage.
Dans la pratique on peut construire le fichier AVS ligne par ligne
: on passe le fichier AVS en construction à
VirtualDub, puis on
détermine progressivement les indices des frames où
un changement de décalage devient nécessaire.
Cependant fait à la main ce procédé a deux
inconvénients
- l'alternance entre l'édition du fichier AVS et le
contrôle du film est lourde, d'autant plus que lorsqu'on
recharge le fichier AVS modifié dans VirtualDub il faut
retrouver le dernier indice d'édition
- utiliser Avisynth comme serveur vidéo lorsque le fichier
est au point exige de recompresser le film, ce qui implique une
perte de qualité.
Voici comment AuAlign contourne ces deux problèmes.
La solution d'AuAlign
AuAlign règle ces deux problèmes de la façon
suivante
AuAlign automatise l'alternance
entre l'édition et le visonnage
AuAlign génère à la demande un fichier
VirtualDub JOBS permettant à VirtualDub de
tronçonner, corriger et réassembler le film, le tout
par 'direct stream copy'.
Conséquence : travail plus aisé, pas
d'incohérences dans le fichier édité,
génération rapide et sans perte de qualité
d'un film corrigé.
Voici comment utiliser
AuAlign
Notes :
AuAlign est écrit en Java 5.
Pour l'exécuter il faut un
Java Runtime
Environment version 5.0 ou supérieur.
AuAlign utilise
Avisynth et
VitualDub. Il est
indispensable de les avoir installés sur votre machine avant
de commencer.
AuAlign est un fichier JAR. Pour, l'exécuter la commande de
base est
java -jar AuAlign.jar
(Il est aussi possible de lancer le
programme en double-cliquant le fichier AuAlign.jar à
condition que les fichiers JAR possèdent une association
adéquate. Vérifiez dans l'Explorateur Windows,
Outils, Options des dossiers, Type des fichiers : l'extension JAR
doit être présente dans la liste comme 'fichier jar
exécutable'. Sinon vous pouvez l'y ajouter en l'associant
avec le programme 'javaw').
Interface
AuAlign présente l'interface que voici
(désolé, les images ne sont pas 100% à
jour)
On remarque les parties suivantes
- La partie haute permet de sélectionner et
d'afficher
le nom du fichier AVS à
éditer
le répertoire de travail pour les fichiers
générés
le film à traiter
- la partie basse comprend deux volets. Le premier, visible sur
l'image, est destiné à l'édition du fichier
AVS. Il comprend
deux boutons de lancement de
VirtualDub
une partie gauche permettant de surveiller le fichier AVS en
construction
une partie droite permettant d'éditer ce fichier
Le second volet permet de 1) voir
le fichier JOBS, 2) générer ce fichier sur
disque et 3) lancer VirtualDub avec ce fichier pour
générer le film corrigé.
Scénario d'édition
de base
Commencez par cliquer le bouton en haut à droite
Choisir fichier AVS. Le
répertoire choisi pour ce fichier AVS sera aussi le
répertoire de travail d'AuAlign pour ce fichier.
Si le nom du fichier AVS choisi n'existe pas, c'est probablement
que vous démarrez un nouveau projet
Si oui, vous êtes invité à sélectionner
le film à traiter. Quand cela est fait, le programme se
présente comme suit, et vous êtes prêt à
travailler.
Cliquez maintenant
VDub
dernière section. Le programme tente
d'exécuter la commande
VirtualDub
AuAlign_editsection.avs
où
AuAlign_editsection.avs est un
fichier temporaire. Pour que cela réussisse il faut que
VirtualDub soit accessible par AuAlign. Si ce n'est pas le cas,
AuAlign vous demande le chemin de VirtualDub. Ce renseignement sera
mémorisé pour les utilisations suivantes
d'AuAlign.
Lorsque VirtualDub s'ouvre, parcourrez le film avec le curseur et
repérez la première frame où le son est assez
décalé de l'image pour qu'une correction s'impose.
Comme il vaut mieux couper le film au niveau d'une keyframe,
utilisez la touche "recherche keyframe gauche" de VirtualDub.
Reportez l'indice de cette frame dans la partie droite d'AuAlign,
dans la case de la colonne nommée
frames (il faut double-cliquer dans la
case pour pouvoir éditer). Pressez ensuite 'entrée'
sur le clavier ; une nouvelle ligne apparaît et la
première représente maintenant la première
section du futur film corrigé.
Cette première fois, repérez aussi le nombre total
de frames du film complet, et reportez ce nombre dans
Indice dernière frame du film
en bas à droite d'AuAlign (ceci est à faire une seule
fois).
Cliquez de nouveau
VDub
dernière section. VirtualDub montre alors uniquement
la partie non encore corrigée du film, rendant ainsi
immédiate la poursuite du traitement.
Cette fois-ci, essayez d'estimer le déplacement de la bande
son à opérer. Reportez le temps en millisecondes dans
la case
décalage de
la section en cours de traitement. Un nombre positif retarde le
son, un nombre négatif avance le son.
Réexécutez
VDub
dernière section et écoutez le
résultat. Corrigez éventuellement le décalage
jusqu'à satisfaction. Avancez ensuite dans le film pour
trouver le nouvel indice où la dérive exige un autre
décalage que celui en cours, et reportez l'indice dans la
colonne
frames de la
section en cours.
Si le son est décalé dès le début du
film, vous pouvez évidemment aussi modifier la valeur du
décalage de la toute première section.
Continuez ce travail jusqu'à la fin du film.
Variantes du scénario de
base
A tout moment vous pouvez
- sélectionner une section (= une ligne) dans la grille
des sections et la réexécuter avec VirtualDub (bouton
VDub sect.
sélectionnée)
- modifier le début, le nombre d'images ou la fin d'une
section
- insérer une section vide (se placera après la
section sélectionnée)
- supprimer la section sélectionnée (elle est
concaténée avec la section qui la
précède)
Lorsqu'on modifie ainsi une section, les deux sections adjacentes
sont mises à jour (mais pas au-delà, n'étendez
donc pas une section au point d'introduire un nombre de frames
négatif).
Géneration du fichier
JOBS
Lorsque l'édition du fichier AVS est terminé, passez
sur le volet
Créer fichier
JOBS. Vous y verrez trois boutons.
Le premier permet de pré-visualiser le fichier JOBS qui sera
généré, le second génère et
stocke ce fichier dans le répertoire de travail pour une
éventuelle utilisation manuelle, le troisième
génère, stocke et exécute VirtualDub avec ce
fichier pour construire le film corrigé. Ce traitement prend
environ 2mn sur mon PC avec un processeur de 3GHz et pour un film
de 700Mo.
Notez en passant que vous trouverez le fichier du film
corrigé dans le répertoire de travail sous le nom
Xxx-out.avi si l'original est Xxx.avi.
Voilà....
Contact
Si ce programme vous a aidé ou si vous avez des suggestions, suivez le lien ci-dessous
pour me contacter.