Après discussion entre Modérateurs/Redacteurs, je vous propose une petite astuce pour corriger un décalage audio...
...Astuce que j'ai expérimenté 3 fois avec succès pour corriger un décalage audio d'une vidéo AVI/DivX.
Cette astuce n'ayant apparemment pas été tentée, je vous la propose. Testez-là et dites-moi si ça marche chez vous !
Sur les films « Next » et « Pirates des Caraïbes 3 », je me suis retrouvé avec un décalage audio... ce qui n'est pas rare, j'en conviens !
Mais plutôt que de me prendre la tête à tenter de corriger le décalage, j'ai réalisé un nouvel encodage (toujours à partir du rip du DVD) avec modification du Script AVS.
Donc, édition du script AVS dans la fenêtre de prévisualisation. [N°1 sur la capture d'image]
(Ouvrez la fenêtre de Prévisualisation de Ri4m et cliquez sur « Editer le Script »
Vous obtenez donc un fichier texte ressemblant à ceci :
# **** Ripp-it & AVIsynth 2.5x script **** pass 1
LoadPlugin("C:\PROGRA~1\RIPP-I~1\dlls\undot.dll")
LoadPlugin("C:\PROGRA~1\RIPP-I~1\dlls\VSFilter.dll")
LoadPlugin("C:\PROGRA~1\RIPP-I~1\dlls\MPEG2Dec3.dll")
# Video codec : DivX
# Video bitrate : 1239966
Source="H:\TRAITE~1\Encoder\PIRATE~1\VTS_04_1.d2v"
Largeur=720
Hauteur=400
ratio =1.800000
vratio =1.800000
Crop_g=0
Crop_d=0
Crop_h=0
Crop_b=0
Indice=0.172218
Video=mpeg2Source(Source)
Video=Undot(Video)
Video=BilinearResize(Video, Largeur, Hauteur)
Video=TextSub(Video, "H:\Traitement\Encoder\Pirates des Caraibes 3\04-Francais4 Wide Letterbox _Ripp-it.ssa")
Return(Video)
Si vous avez déjà regardé de près un fichier AVS (AviSynth) créé lors de l'encodage avec Ri4m, vous pourrez constater que le fichier de la « Passe 2 » comporte des lignes supplémentaires...
Trois lignes justes avant « Return(Video) » qui permettent de rajouter l'audio...
Audio=WAVsource("H:\TRAITE~1\Encoder\PIRATE~1\audio0.wav")
Audio=DelayAudio(Audio, 0.000000)
Video=AudioDub(Video, Audio)
Donc, dans votre fichier AVS en cours, vous ajoutez vous-même ces trois lignes et vous obtiendrez ceci :
# **** Ripp-it & AVIsynth 2.5x script **** pass 1
LoadPlugin("C:\PROGRA~1\RIPP-I~1\dlls\undot.dll")
LoadPlugin("C:\PROGRA~1\RIPP-I~1\dlls\VSFilter.dll")
LoadPlugin("C:\PROGRA~1\RIPP-I~1\dlls\MPEG2Dec3.dll")
# Video codec : DivX
# Video bitrate : 1239966
Source="H:\TRAITE~1\Encoder\PIRATE~1\VTS_04_1.d2v"
Largeur=720
Hauteur=400
ratio =1.800000
vratio =1.800000
Crop_g=0
Crop_d=0
Crop_h=0
Crop_b=0
Indice=0.172218
Video=mpeg2Source(Source)
Video=Undot(Video)
Video=BilinearResize(Video, Largeur, Hauteur)
Video=TextSub(Video, "H:\Traitement\Encoder\Pirates des Caraibes 3\04-Francais4 Wide Letterbox _Ripp-it.ssa")
Audio=WAVsource("H:\TRAITE~1\Encoder\PIRATE~1\audio0.wav")
Audio=DelayAudio(Audio, 0.000000)
Video=AudioDub(Video, Audio)
Return(Video)
Attention, ne vous trompez pas sur le chemin du fichier Wave. Le chemin est identique à celui de la source indiqué plus haut dans le script. Le nom du fichier Wave, même s'il n'est pas encore créé est toujours le même : audio0.wav
Si vous avez constaté un décalage audio, c'est que vous avez déjà réalisé un encodage.
Ouvrez ce fichier AVI dans VirtualdubMPEG2 (ou virtualdub) et cliquez sur « Fichier - Informations de fichier ». L'analyse va indiquer la longueur du fichier vidéo et celle du fichier audio...
Relevez la différence et rapportez-la sur la ligne : Audio=DelayAudio(Audio, 0.000000)
Dans mon cas, c'était un décalage de 600 ms (millisecondes) trop tôt. Ce qui nous donne :
Audio=DelayAudio(Audio, 0.600000)
Dans le cas ci-dessus, le chiffre est donc positif. Si le son arrive en retard, il faudra mettre un chiffre négatif. Exemple : Audio=DelayAudio(Audio, -0.600000) !
Et donc le fichier complet sera :
# **** Ripp-it & AVIsynth 2.5x script **** pass 1
LoadPlugin("C:\PROGRA~1\RIPP-I~1\dlls\undot.dll")
LoadPlugin("C:\PROGRA~1\RIPP-I~1\dlls\VSFilter.dll")
LoadPlugin("C:\PROGRA~1\RIPP-I~1\dlls\MPEG2Dec3.dll")
# Video codec : DivX
# Video bitrate : 1239966
Source="H:\TRAITE~1\Encoder\PIRATE~1\VTS_04_1.d2v"
Largeur=720
Hauteur=400
ratio =1.800000
vratio =1.800000
Crop_g=0
Crop_d=0
Crop_h=0
Crop_b=0
Indice=0.172218
Video=mpeg2Source(Source)
Video=Undot(Video)
Video=BilinearResize(Video, Largeur, Hauteur)
Video=TextSub(Video, "H:\Traitement\Encoder\Pirates des Caraibes 3\04-Francais4 Wide Letterbox _Ripp-it.ssa")
Audio=WAVsource("H:\TRAITE~1\Encoder\PIRATE~1\audio0.wav")
Audio=DelayAudio(Audio, 0.600000)
Video=AudioDub(Video, Audio)
Return(Video)
A noter que ainsi, les fichiers AVS des Passes 1 et 2 seront totalement identiques.
Vous pourrez vérifier après avoir réalisé l'encodage.
Vous avez fait les modifications ?
Alors fermez le fichiers AVS qui va vous demander d'enregistrer les modifications... Acceptez bien sûr !
Vous constaterez alors que le Script AVS a été « Figé » par Ri4m (la ligne « Figer Script » juste en dessous du bouton « Editer le script » est cochée)...
Ceci afin d'éviter toute modification ultérieure non souhaitée. [N°2 sur la capture d'image]
Il est donc très important d'avoir déjà réalisé les modifications éventuelles de taille ou de crop... parce que maintenant, Niet !!!
Votre encodage peut maintenant être réalisé... En respectant une dernière chose :
Le script AVS étant figé, vous devrez encoder votre film en deux étapes.
Cliquez d'abord sur le bouton « Faire AUDIO » [N°3 sur la capture d'image]
Quand l'audio est fait, vous pourrez cliquer sur « Faire VIDEO » [N°4 sur la capture d'image]
Un message vous dira que l'audio doit déjà être fait... (ce qui est le cas !)
Voilà, dans quelques heures, vous aurez un beau film tout neuf sans décalage...
...heuuu, normalement !
Bon, evidemment ça a fonctionné plusieurs fois chez moi. Ce qui ne veux pas dire que ça fonctionnera tout le temps et chez tout le monde.
L'explication de l'astuce est un peu longue, mais l'astuce elle-même est en fait ultra simple.
De ce fait, je suis d'ailleur étonné que personne n'y ait pensé avant !
Bon encodage !
@+
PS : Pour une meilleure compréhension et suite à quelques demandes de précisions, j'affiche ici deux captures d'images...


