Are Uppman
Home>AuAlign français
Le programme AuAlign

Realignez l'audio et la video d'un fichier AVI même dans le cas le plus difficile

English version here

Table
  1. le but d'AuAlign
  2. l'idée d'origine
  3. la solution AuAlign
  4. comment utiliser AuAlign
  5. contact
Télécharger AuAlign (exécutable, sources et JavaDoc)

Creative Commons License Le programme AuAlign avec code source est à votre disposition sous une  Licence Creative Commons.

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

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.

Site updated 08 May, 2017    Remarks and questions? areusite at free dot fr