Accueil  Tutoriels  Outils Karaoké  Téléchargements  Multimedia  Contact

SweetKaraoké

Sous-titrage de karaokés


Guide Avisynth d'aide à la création d'un clip vidéo sous-titré



Ce guide va vous permettre de créer vos propres scripts Avisynth, utile lorsque vous désirez incruster un fichier sous-titre à l'aide des tutoriels "Incruster un fichier sous-titre dans une vidéo avec VirtualDubMod / VSFilter / Avisynth" et "Incruster un fichier sous-titre USF dans une vidéo avec VirtualDubMod / PicSubU / Avisynth".

Vous pouvez télécharger le fichier reprenant l'ensemble des filtres décrit dans ce tutoriel ici.

AviSynth, un frameserver.

Le frameserving est un processus par lequel vous transférez directement les signaux vidéos d'un programme vers un autre. Aucun fichier intermédiaire ou temporaire n'est créé. Le programme qui ouvre le fichier source et qui produit les signaux vidéos s'appelle frameserver (serveur de frames). Le programme qui reçoit les données peut être n'importe quel type d'application vidéo.

Comprendre la structure d'un fichier Avisynth.

Avec un peu de bon sens, comprendre les scripts *.avs est quelquechose d'assez aisée. Toutefois, rien ne vaut une bonne explication.

Création et édition du fichier :

C'est très simple, il suffit de faire un nouveau document texte et de remplacer l'extension .txt par .avs. Choisissez le BlocNote comme programme associé à cette extension.

La structure d'un script :

Un script est toujours construit suivant le même schéma :
# Chargement des plugins
# Importation des sources
# Utilisation des fonctions souhaitées (redimensionnement, découpage, filtrage...)

# Chargement des plugins
# Importation des sources
# Desentrelacement
# Découpage
# Redimensionnement
# Bordures
# Sous-titres

Exemple :
# Importation des sources
Mpeg2Source("C:\Clip_video.d2v")

# Découpage
Crop(0,10,708,546)
 
# Redimensionnement
BicubicResize(544,288)

# Bordures
AjouterBordures(0,50,0,50)

# Sous-titres
TextSub("C:\Clip_video.ass")

Remarque : tout ce qui suit un "#" n'est pas pris en compte par le script.

Chargement des plugins

Le chargement des plugins développés pour Avisynth se fait grâce à la fonction "LoadPlugin" suivi du chemin et du nom du plugin.
LoadPlugin("filename"[,...])

Exemple :
LoadPlugin("E:\Dvd\GORDIA~1\DGMPGDec\DGDecode.dll")
ou
LoadPlugin("DGDecode.dll") si la dll se trouve dans le sous-répertoire "plugins" d'Avisynth

Nota : le chargement des plugins AviSynth n'est plus nécessaire depuis la version 2.05+ (ou 2.5alpha du 17-12-02). Il suffit de mettre les *.dll dans le sous-dossier "plugins" d'AviSynth.

Filtres d'importation des sources

AVISource / MPEG2Source / OpenDMLSource / AVIFileSource / WAVSource / DirectShowSource

AVISource("filename"[,...])
MPEG2Source(filename"[,...])
OpenDMLSource("filename"[,...])
AVIFileSource("filename"[,...])
WAVSource("filename"[,...])
DirectShowSource("filename"[,...])

AVISource

AVISource("filename"[,...])

Le filtre AVISource accepte comme argument un ou plusieurs noms de fichiers placés entre des guillemets, et y accède en utilisant soit l'interface "AVIFile" de Video for Windows ou le code OpenDML interne d'AviSynth (importé de VirtualDub). Ce filtre peut lire n'importe quel fichier dans lequel est inclu le processus de gestion (handler) AVIFile. Cela ne comprend pas seulement les fichiers AVI mais aussi les fichiers WAV, les fichiers AVS (scripts AviSynth), et les fichiers VDR (serveur de trames VirtualDub). Si vous passez de multiple nom de fichiers comme arguments, les clips seront réunis ensemble avec UnalignedSplice.

Le filtre AVISource examine le fichier pour déterminer son type et le transmet au handler AVIFile ou OpenDML approprié. Au cas ou vous rencontriez un problèmes avec l'un ou l'autre gestionnaire de processus, vous pouvez alors utiliser les filtres OpenDMLSource et AVIFileSource qui forceront l'utilisation d'un des handlers. L'un et l'autre peuvent lire normalement des fichiers AVI (< 2Go), mais seul le handler OpenDML peut accéder à des fichier de taille supérieur, et seul le handler AVIFile peut gérer d'autres types de fichier tels que WAV, VDR et AVS.

Parce que l'interface AVIFile supporte les fichiers WAV, il a été ajouté WAVSource qui est un alias de AVIFileSource

Exemples :
AVISource("d:\capture.avi") # Notes pour les programmeur en C: les anti-slaches ne sont pas doublés
AVISource("c:/capture/00.avi") # Le slash avant fonctionne aussi
AVISource("f:\soundtrack.wav") # Ca marche
WAVSource("f:\soundtrack.wav") # Ca aussi
AVISource("cap1.avi","cap2.avi) # Equivalent à AVISource("cap1.avi")+AVISource("cap2.avi")

MPEG2Source

MPEG2Source("filename"[,...])

MPEG2Source est un un décompresseur de flux mpeg et mpeg2 supportant l'optimisation CPU (idct=,votre processeur), le post-processing (cpu=,divers réglages possibles lors de la lecture du film ) ou le desentrelacement (ipp=).

Pour l'optimisation CPU (eventuellement aller un peu plus vite à l'encodage) :
Pour le desentrelacement :
ipp=false signifie que l'option est désactivée donc pas de desentrelacement (false=faux)
ipp=true signifie que l'option de désentrelacement est activée (true=vrai)
Si vous ne stipulez rien, c'est comme si vous écriviez "ipp=false"

Pour le post-processing (conseillé uniquement pour les sources de mauvaises qualités) :
cpu=1 (jusqu'à 4) activera le filtre de deblocking (le filtre de "deblocking"opère à travers les bords d'un bloc 8x8, à la fois sur le plan de la luminance et de la chrominance des couleurs. Cela aide à réduire la pixellisation causée par le codec.).
cpu=5 (ou 6) activera le filtre de deringing (le filtre de "deringing" est utilisé pour éliminer les bruits causés par le processus de quantisation, aussi appelé effet Gibbs. A cause de la grande consommation en CPU, celui-ci n'est activé que sur les Pentium-III et les processeurs plus récents).

Exemple :
MPEG2Source("clip_video.d2v", idct=5,ipp=false,cpu=3)

DirectShowSource

DirectShowSource("filename"[,fps])

DirectShowSource accède au fichier par l'intermédiaire de l'interface DirectShow, le même système de lecture multimédia qu'utilise Windows Media Player. Il peut lire la majorité des format que le Media Player utilise, y compris MPEG, MP3 et QuickTime en plus des fichiers AVI que AVISource ne supportent pas (comme DV type 1 ou des fichiers utilisant uniquement les codecs seulement disponible sous DirectShow. Essayez de lire les fichiers AVI avec AVISource en premier et si cela ne fonctionne pas alors essayez ce filtre à la place.

Il y a certaines restrictions :

Les filtres utiles pour la création d'un clip vidéo sous-titré

Desentrelacement

Bibliothèque de liens dynamiques (dll) nécessaire : decomb.dll
Commande : FieldDeinterlace()
Téléchargement : Decomb

Ce filtre permet de désentrelacer l'image si elle provient d'une vidéo entrelacée (utile pour des sources vidéos à 23.976 fps)

Découpage

Bibliothèque de liens dynamiques (dll) nécessaire : avisynth.dll
Commande : Crop(left,top,width,height)

Le Crop est la fonction qui consiste à rogner les bandes noires d'une vidéo. Le filtre Crop découpe les pixels en trop de chaque trame, les valeurs numériques représentant des pixels. Veillez à ce que ces valeurs soient toujours multiples de 2 ou 4. Voici comment se présente l'expression de Crop dans Avisynth:

Exemple :
crop(0,66,0,-62)
-le 1er chiffre indique le rognage à gauche
-le 2eme chiffre indique le rognage en haut
-le 3eme chiffre indique  le rognage à droite (valeur négative)
-le 4eme chiffre indique le rognage en bas (valeur négative)

Redimensionnement

Bibliothèque de liens dynamiques (dll) nécessaire : avisynth.dll
Commande : voir ci-dessous

Il s'agit d'une étape très importante dans la réalisation d'une vidéo compressée, car ces filtres, non seulement, redimensionnent votre image mais ils le font en étant plus ou moins précis ou au contraire plus ou moins flou.
Il est préférable, pour une meilleure qualité d'images, de choisir une résolution dont les chiffres soient des multiples de 16, voir de 8 mais pas 4 et encore moins 2. Personnellement je ne choisis que des multiples de 16. D'ailleurs, certains filtres Avisynth ne fonctionnent qu'avec des résolutions multiples de 16. La syntaxe d'un filtre de resize est généralement la suivante:

BicuBicResize(L,H) ==> d'abord la largeur ensuite la hauteur

Les principaux filtres de re-dimensionnement sont :

Il s'agit d'un trés bon filtre. Il possède l'avantage d'être trés polyvalent. Toutefois, il est assez lent. Il permet non seulement de définir la largeur et la hauteur mais il peut, en plus, inclure deux variables supplémentaires contenant des informations lui permettant d'être plus ou moins précis ou flou.

Exemple :
BicubicResize(624,320,0,0.33) : plutôt flou, on dit Soften (adouci) ==> moins de bruit, mais moins de détails
BicubicResize(624,320) : valeur par défaut ==> peut s'ecrire également (592,320,0.33,0.33)
BicubicResize(624,320,0,0.50) : pour un re-dimensionnement neutre
BicubicResize(624,320,0,0.75) : pour un redimensionnement plus précis, on dit sharpen (aiguiser) ==> donc plus de "bruit"
Il s'ecrit exactement de la même manière que le Bicubic c'est à dire que vous pouvez lui intégrer les deux variables supplémentaires selon que vous désiriez sharper ou au contraire flouter votre image. C'est un filtre assez rapide et qui est bien adapté aux animes.

Exemple :
BiclubinResize(592,320) : par défaut
C'est surement le filtre qui offre le plus de compressibilité. Il est rapide mais pas trés précis. A ne surtout pas utiliser avec un denoiser, sans quoi, votre image risquerait de manquer crucialement de détails. Avec ce filtre pas de variables d'ajustement du sharpen/soften.

Exemple :
BilinearResize(512,304)
Le plus pointu et le plus précis mais forcement le moins compressible et le plus lent. A utiliser de préference avec un bon denoiser et un bitrate suffisament conséquent. Pour les inconditionnels des images sharper c'est le filtre idéal.

Exemple :
LanczosResize(640,272)
Trés certainement le filtre le plus rapide...mais le moins performant. A éviter !

Exemple :
SimpleResize(592,320)

Bordures

Bibliothèque de liens dynamiques (dll) nécessaire : avisynth.dll
Commande : AjouterBordures(gauche,haut,droit,haut, couleur) ou AddBorders(left,top,right,bottom,color)

Le filtre AddBorders (ou AjouterBordures) ajoute des bords (valeurs en pixels) autour de l'image.

Exemple :
AddBorders(0, 56, 0, 72, $000000) : gauche = 0, haut = 56, droit = 0, haut =72, couleur = noir (couleur en hexadécimale codée sur 6 caractères)

Sous-titres

Sous-titres au format *.srt, *.ssa, *.ass et *.usf :

Bibliothèque de liens dynamiques (dll) nécessaire : VSFilter.dll
Commande : TextSub("SubtitleName")
Téléchargement : VSFilter

Le filtre permet d'incruster dans une vidéo un sous-titre au format *.srt, *.ass, *.ass et *.usf.

Exemple :
TextSub("E:\Karaoké\Subtitle.ass")

Sous-titres au format *.srt, *.ssa et *.ass :

Bibliothèque de liens dynamiques (dll) nécessaire : VobSub.dll
Commande : VobSub("SubtitleName")
Téléchargement : VobSub 2.23

Le filtre permet d'incruster dans une vidéo un sous-titre au format *.srt, *.ass, et *.ass.

Exemple :
VobSub("E:\Karaoké\Subtitle.ssa")

Sous-titres au format *.usf :

Bibliothèque de liens dynamiques (dll) nécessaire : picsubu.dll
Commande : PicSubU("SubtitleName")
Téléchargement : PicSubU

Attention : un bug existe dans le filtre dshow "PixiShow" et la dll "picSubU". La transparence est codée avec la valeur hexadécimale "00" et l'opacité avec la valeur hexadécimale "FF". Pour palier ce problème, éditez-le sous-titre avec un éditeur de texte et remplacez la valeur "00" de la transparence des styles par la valeur "FF" comme dans l'exemple ci-après.

Le plugin picsubu.dll doit ABSOLUMENT se trouver dans la section "SOURCE VIDEO".

Le filtre permet d'incruster dans une vidéo un sous-titre au format *.usf.

Exemple :
#  PLUGINS
#
#  SOURCE VIDEO
LoadPlugin("picsubu.dll")
MPEG2Source("D:\Video.d2v")
#
# SOUS-TITRES
PicSubU("D:\Sous-titre.usf")
Nombre total de visiteurs :