Logo
         Temps de connexion total : 52 minutes.ProfilMembresMessagerieAideRechercherCalendrier

Pages: [1]   En bas
  Répondre  |  Notifier  |  Marquer non lu  |  Partager ce sujet  |  Imprimer  
Auteur Sujet: [ Hyjoo-Tutos ] Initiation au format de sous-titres  (Lu 10579 fois)
EroGaKi et 0 Invités sur ce sujet
$p00ky
<? echo $p00ky ?>
Bébé Yéti is back !
On ne peut plus rien pour moi...
*


Oh enflure démoniaque !

Messages: 1162
Karma: +201/-32
Sexe: Homme
En ligne En ligne

Anime favori: Mnemosyne

Voir le profil WWW En ligne
« le: 22 avril 2009 à 15:57:40 »


Source: http://www.hyjoo.com/sujet-24414.html


Nom : Initiation au format de sous-titres avec effets SSA/ASS
Type : Traitement vidéo
Niveau : Débutant
Pré-requis : Avoir déjà eu affaire à des fichiers de sous-titres serait un plus
Objectifs : Se familiariser avec la syntaxe des fichiers de sous-titres permettant
des effets avancés: karaoké, rotations, distorsions, avec intégration de fichiers
graphiques et sonores, etc.

Liens Connex :

  • Logiciels pour linux
Subtitle Editor: http://kitone.free.fr/subtitleeditor/
Sabbu (aussi dispo pour Windows): http://www.sabbu.com/en/index.html
Orange Slice: http://www.nongnu.org/orange-slice/index.html

  • Logiciels pour Windows
Manuel complet sur le format SSA/ASS:
http://www.perlfu.co.uk/projects/asa/ass-specs.doc
Introduction au format SSA/ASS, en anglais:
http://www.matroska.org/technical/s...titles/ssa.html

Présentation et spécificités des format SSA et ASS

Le format de fichier ASS découle du format SSA (SubStation Alpha), format des
fichiers de sous-titres générés à l'origine par l'éditeur de sous-titres SubStation
Alpha.

Le format ASS est, avec SSA, un des rares formats de sous-titres permettant
une réelle gestion des styles et des effets sur le texte, il est en conséquence
très populaire dans le monde du fansub et du karaoké.

SSA permettait déjà une modification des sous-titres plus poussée que ne le
permettent les autres formats comme SRT, incluant une gestion avancée de
l'apparence et des effets basiques de karaoké.
Mais avec ASS, les possibilités sont encore plus nombreuses, sa principale
différence avec SSA étant qu'il est considéré comme encore plus avancé
(Advanced SSA) car il permet d'appliquer au texte des effets encore plus
sophistiqués que son grand frère: rotations, distorsions, etc., il permet aussi
une gestion des Styles avancée, l'intégration de fichiers audio, graphiques et
vidéo, etc.

Pour pouvoir lire ces sous-titres séparément avec une vidéo, vous n'aurez
besoin de rien de plus que ce qu'il faut pour lire des sous-titres 'basiques',
c'est-à-dire un lecteur vidéo avec un filtre DirectShow installé (VSFilter ou
anciennement VobSub). Pour les lire une fois 'fusionnés' avec la vidéo, vous
n'aurez même pas besoin de VSFilter.

Pour créer/modifier un fichier au format SSA/ASS, on a seulement besoin d'un
éditeur de sous-titres avancé compatible avec ce format, même si n'importe quel
bloc-note peut suffire tant que vous respectez la syntaxe et la structure du
script, un éditeur facilite grandement le travail, ainsi que le timing et la gestion
des couleurs. Cependant, pour une bonne compréhension du format et de la
syntaxe, je vais expliquer en détails la structure du fichier au format texte.

Quelques éditeurs de sous-titres compatibles

  • Avec Windows
SubStation Alpha, logiciel de référence qui malgré l'arrêt de son développement
(la dernière version est la 4.08) reste très populaire, notamment pour le
traitement des fichiers au format SSA.

Medusa qui reste lui aussi toujours autant utilisé malgré l'abandon du projet et
son remplacement par le logiciel ChronoSub, il est très complet et très agréable
à utiliser.

Chronosub, successeur de Medusa, c'en est une version améliorée et plus
avancée, avec une approche différente, qui a aussi de nombreux adeptes.

Subtitle Workshop, très bon éditeur qui est aussi très populaire, il est efficace et
complet et supporte de nombreux formats de sous-titres (hormis les images).

Ukyuu! qui dispose d'une très bonne réputation et de très nombreuses
fonctionnalités: édition, timing, traduction et karaoké.

VisualSubSync est un éditeur sympathique et bien pratique, spécialisé dans la
synchronisation des sous-titres avec le flux audio.

Aegisub, petit nouveau basé sur Medusa dont j'ai eu de bons échos, il gère les
formats SSA et ASS, et offre beaucoup de fonctionnalités.

Et Sabbu présenté ci-dessous.

  • Avec Linux
Sous Linux, les logiciels d'édition et de création de sous-titres supportant le
format ASS ne sont pas légion, mais il y en a quand même:

Sabbu, également disponible sous Windows, il supporte plusieurs formats de
sous-titres (dont SSA et ASS) dont on peut avoir une prévisualisation
instantanée ainsi que des effets appliqués.

Subtitle Editor est un bon logiciel d'édition et de timing qui permet une
prévisualisation audio et vidéo du résultat, il est facile à utiliser et supporte
plusieurs formats de sous-titres, on peut aussi l'utiliser lors des travaux de
traduction.

Orange Slice est un projet abandonné mais toujours utilisé/utilisable, il supporte
les formats SRT, SUB, SSA et ASS.

Notes générales sur la rédaction

Je me suis librement inspirée de la syntaxe utilisée dans les man pour les choix
de valeurs, par exemple pour la balise {\q0}, "0" est une valeur qui peut être
comprise entre 0 et 3, je la présenterai donc sous la forme : {\q<0-3>}
Par extension, tout texte compris entre < >, doit être remplacé par une valeur,
sans les crochets.

I) Structure du fichier de sous-titres

Le format de fichier ASS a une syntaxe quasi identique à celle de SSA, les
commandes du format SSA ont été dans leur grande majorité reprises dans le
format ASS, et les effets spécifiques au format ASS seront pris en compte que
l'extention du fichier soit .ass ou .ssa (si le format ASS est supporté par le
lecteur vidéo bien sûr).

Sa structure ressemble vaguement à celle d'un fichier .INI sous Windows et sa
syntaxe à celle d'un document LaTeX, le fichier est au format texte et est
composé de 5 sections (les 3 premières étant les plus importantes) pourvues
d'une en-tête, chaque ligne est décrite par un mot-clef suivi de ':', et chaque
champ la composant est séparé des autres par une virgule. Les lignes ne
doivent surtout pas être coupées, quelle que soit leur longueur.

  • Section [Script Info]
* : si ce champ est laissé vide, il n'apparaitra pas dans le fichier après
traitement

Code:
[Script Info]
; 1ère section, elle contient diverses informations optionnelles
; sur les sous-titres ainsi qu'une information TRES importante à 
; définir avec soin : la résolution de la vidéo 
; (il s'agit en fait du ratio d'affichage des sous-titres 
; en fonction de l'écran)
; Cette information sera déterminante pour les réglages positionnels.
; En utilisant une résolution de 1024x768, la plus répandue, on obtient
; des polices de 48 pixels, par exemple.
; Si 1 seul des 2 champs PlayResX et PlayResY est présent, l'autre sera
; calculé automatiquement en fonction des dimension réelles de la vidéo.
; Comme vous pouvez le voir, les commentaires commencent par un ';' 
Title : contiendra <untitled> si on le laisse vide
Original Script: auteurs du script (affichera <unknown> si on met rien)
Original Translation: traducteurs des sous-titres *
Original Editing: éditeurs du script *
Original Timing: timers du script *
Synch Point: indique le moment où le script est lancé, point de repère pour la
synchronisation *
Script Updated By: personnes ayant modifié le script *
Update Details: modifications apportées *
Script Type: version du format de script employée, V4.00 pour SSA, V4.00+ pour
ASS
Collisions: comportement préventif à adopter pour éviter les collisions, "Normal"

laissera les sous-titres se chevaucher tout en les conservant dans la marge en
bas de la vidéo, "Reverse" les décalera vers le haut (peut prendre beaucoup de
place)
PlayResX: <résolution horizontale> 
PlayResY: <résolution verticale> 
PlayDepth: règle la profondeur des couleurs (valeur par défaut: 0)
Timer: vitesse de lecture du script par rapport à la vitesse d'origine, par défaut
elle est égale à 100% ("100.0000"); l'augmenter fera apparaître les sous-titres
progressivement de plus en plus en avance, la réduire les fera apparaître de
plus en plus en retard 
WrapStyle: style de découpage des lignes par défaut, 0: la partie supérieure
sera la plus longue, 1: découpage au niveau de la largeur de la vidéo, 2: pas de
découpage auto, 3: la partie supérieure sera la plus courte (ligne spécifique au
format ASS)


  • Section [v4 Styles] pour SSA, [v4+ Styles] pour ASS
Code:
[v4 Styles]
; Contient les définitions de tous les styles utilisés dans le script
; Exemple pour le format SSA
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour,
TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, 
Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style:MyStyle,Arial,28,11861244,11861244  ,11861244,-2147483640,-1,0,
1,1,2,2,30,30,30,0,0


Code:
[v4+ Styles]
; Contient les définitions de tous les styles utilisés dans le script.
; Exemple pour le format ASS
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour,
OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY,
Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR,
MarginV, Encoding
Style:MyStyle,Arial,28,&H00B4FCFC,&H00B4FCFC,&H00000008,

&H80000008,-1,0,-1,0,100,100,0.00,0.00,1,1.00,2.00,2,30,30,30,0


Rmq: Les lignes ne doivent PAS être coupées

Un "style" permet de prédéfinir et d'associer plusieurs paramètres
concernant l'apparence, la position, etc. du texte.
Chacun des styles utilisés dans le script doit être défini par une ligne "Style", dont chacun des champs doit être défini précédemment par une ligne commençant par "Format :".
L'ordre des champs décrits dans la ligne "Format :" doit correspondre avec les valeurs qui leur sont associées dans la ligne "Style :".
Si les mêmes champs sont réutilisés dans le même ordre par un autre Style, il n'est pas nécessaire de les redéclarer via une ligne "Format:", puisque le
format reste le même.

Champs à la fois compatibles avec le format SSA et ASS :

Name indique le nom du style
Fontname indique le nom de la police installée à utiliser
Fontsize définit la taille de la police
PrimaryColour couleur primaire du texte (l'intérieur) au format BVR, notation hexadécimale (sur 8 caractères précédés de &H) ou sous forme d'un long int
SecondaryColour couleur secondaire du texte au format BVR utilisée lors d'un effet karaoké, notation hexadécimale (sur 8 caractères précédés de &H) ou sous forme d'un long int; elle remplacera la couleur primaire lors de l'affichage simultané de 2 sous-titres
TertiaryColour équivalent de OutlineColour pour le format ASS, il est devenu obsolète: couleur au format RVB qui remplacera la couleur primaire ou secondaire du texte en cas d'affichage simultané de 3 lignes
BackColour couleur au format RVB des bordures et ombres, notation hexadécimale (sur 8 caractères précédés de &H) ou sous forme d'un long int
Bold active la mise en gras du texte (-1) ou non (0)
Italic active la mise en italique du texte (-1) ou non (0)
BorderStyle définit le style des bordures et ombres, 1: contours et zone d'ombre, 3: Opaque box (style opaque)
Outline spécifie la largeur du contour du texte en pixels (sous la forme x.xx), si et seulement si "BorderStyle" est réglé à 1
Shadow spécifie la distance en pixels séparant le texte de son ombre (sous la forme x.xx), si et seulement si le champ "BorderStyle" est réglé à 1
Alignment définit l'alignement par défaut du texte en choisissant une position prédéfine, 1: en bas à gauche, 2: en bas au centre, 3: en bas à droite, il suffit d'ajouter 4 à une de ces valeurs pour se déplacer en haut de l'écran, ou d'y ajouter 8 pour se placer au centre de l'écran, sans modification de la position horizontale
MarginL règle la taille de la marge à gauche de l'écran en pixels, elle correspond à la distance entre le bord gauche de l'écran et la zone d'affichage du texte, valeur par défaut: 30
MarginR règle la taille de la marge à droite de l'écran en pixels, elle correspond à la distance entre le bord droit de l'écran et la zone d'affichage du texte,
valeur par défaut: 30
MarginV règle la taille de la marge verticale en pixels, à la fois en haut et en bas de l'écran; avec le texte est en bas de l'écran, cette marge correspond à la distance par rapport au bas de l'écran, avec le texte est en haut, la marge correspond à la distance par rapport au haut de l'écran, et si le texte est au milieu de l'écran, la valeur de la marge est ignorée; valeur par défaut: 30
AlphaLevel règle le degré de transparence du texte; 0: opaque, 255: complètement transparent; ce champ n'existe pas avec le format ASS
Encoding spécifie le charset à utiliser, 0: occidental (Latin), 128: japonais, etc.

Champs spécifiques au format ASS :

OutlineColour couleur au format RVB qui remplacera la couleur primaire ou secondaire du texte en cas d'affichage simultané de 3 lignes, notation hexadécimale (sur 8 caractères précédés de &H) ou sous forme d'un long int
Underline active le soulignement du texte (-1) ou non (0)
StrikeOut indique s'il faut barrer le texte (-1) ou non (0)
ScaleX modification/distorsion de la largeur du texte (axe horizontal X) en %, par défaut: 100
ScaleY modification/distorsion de la hauteur du texte (axe vertical Y) en %,
par défaut: 100
Spacing règle l'espacement entre les lettres en pixels (sous la forme x.xx)
Angle définit l'angle final d'une rotation en degrés (sous la forme x.xx);
l'angle de départ de la rotation est égal à la valeur spécifiée dans le
champ "Alignment"

Note: le niveau de transparence du canal alpha peut être définit avec le format ASS en complétant le format des valeurs couleur sous la forme AABBVVRR (A=Alpha, B=Bleu, V=Vert, R=Rouge) via les 4 champs relatifs aux couleurs.

  • Section [Events]
Code:
[Events]
; Contient les événements/actions du script, ce qui comprend les sous-titres, 
; les images, sons, vidéos et commentaires.
; Exemple pour le format SSA
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, 
Text
Dialogue:Marked=0,0:00:01.10,0:00:07.15,MyStyle,PersoName,0000,
0000,0000,,{\pos(400,500)}Texte qui sera affiché à l'écran


Avec le format ASS, le champ "Marked" est remplacé par le champ "Layer", "Marked=0" qui est la valeur correspondant au champ Marked n'apparait
donc pas après "Dialogue:", exemple :

Code:
[Events]
; Exemple pour le format ASS
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.10,0:00:07.15,MyStyle,PersoName,0000,0000,
0000,,{\pos(400,500)}Texte qui sera affiché à l'écran


Rmq: les lignes ne doivent PAS être coupées, ici j'ai pas eu le choix pour la mise en page ^^

Les lignes qui commencent par "Dialogue:" contiennent le texte qui doit être affiché à l'écran, le moment où il doit l'être et comment il doit être affiché : référence à un style et/ou balises d'apparence, effets, position, etc.

Chaque ligne "Dialogue:" doit être précédée d'une ligne "Format:" contenant la description des champs.
Si les mêmes champs sont réutilisés dans le même ordre par une autre ligne "Dialogue:", il n'est pas nécessaire de les redéclarer via une ligne "Format:", puisque le format reste le même.

La balise {\pos(<x>,<y>)} sera expliqué dans la partie de ce tutoriel sur les balises.

Vous connaissez déjà la signification des champs MarginL, MarginR et MarginV, si vous les réglez à 0, la taille des marges sera celle fixée par le style.

Marked spécifie si la ligne doit apparaître (Marked=1) ou non (Marked=0) comme étant "marquée" dans SubStation Alpha
Layer est le numéro de calque du sous-titre (un int), utilisé pour détecter et gérer les collisions: lors de collisions, la ligne de sous-titre ayant le numéro de calque le plus élevé sera positionnée au-dessus de celles en ayant un inférieur
Start indique à quel moment la ligne doit s'afficher à l'écran, sous la forme H:MM:SS:CC (H: heure, M: minutes, S: secondes, C: 1/100e secondes)
End indique à quel moment la ligne doit disparaitre de l'écran, sous la forme H:MM:SS:CC (H: heure, M: minutes, S: secondes, C: 1/100e secondes)
Style indique le nom du Style utilisé pour cette ligne (style par défaut: *Default)
Name indique le nom de celui qui prononce la ligne (rend le script plus lisible pour les travaux d'édition/traduction/synchronisation)
Effect choisit un effet de transition sur l'apparence du texte parmi les 3 que comprend le format SSA, ce champ est obsolète si on utilise la syntaxe ASS ; ces 3 effets de transition sont :
Karaoke pour un effet de remplissage/highlight mot à mot ou syllabe par syllabe selon l'implantation des balises;
Scroll up;<y1>;<y2>;<délai>[;fadeawayheight] indique que l'on veut que le texte défile du bas vers le haut, y1 et y2 sont les coordonnées verticales entre lesquelles doit défiler le texte, leur ordre n'a pas d'importance, elles seront interprétées en fonction de leur position l'une par rapport à l'autre, les régler à 0 fera défiler le texte sur toute la hauteur de l'écran. "délai" vaut entre 1 et 100 et règle la vitesse de défilement, plus elle sera grande plus la latence sera grande et plus le texte défilera lentement, et inversement si il est réglé à 0 le défilement se fera sans délai, donc très rapidement. "fadeawayheight" permet de régler le niveau de transparence de l'extrémité du côté qui défile, ici il s'agit de la hauteur, ça permet de produire un effet de "dégradé" de transparence lors du défilement du texte, il est réglé par défaut à 50, ce paramètre n'est pris en compte qu'avec le format ASS
Scroll down;<y1>;<y2>;<délai>[;fadeawayheight] indique que l'on veut que le texte défile du haut vers le bas, même remarque concernant les paramètres que pour l'effet "Scroll up", les 2 effets étant ici compté comme le même effet décliné différemment (ces 2 effets ont le même effet que l'utilisation avec ASS des 2 commandes \move et \fad)
Banner;<délai> fera apparaître le texte sur une seule ligne, quelle que soit sa longueur (cad même si il dépasse de l'écran) pour le faire défiler horizontalement de droite à gauche, l'option "délai" est la même que pour Scroll up et Scroll down, son équivalent ASS est :
Banner;<délai>[;lefttoright;fadeawaywidth] "lefttoright" est optionnel et vaut par défaut 0 pour des raisons de compatibilité avec son équivalent SSA, ce qui fait défiler le texte de droite à gauche par défaut, pour le faire défiler de gauche à droite il faut le régler à 1, "fadeawaywidth" est l'équivalent de "fadeawayheight" mais sur la largeur.
Text contient le texte qui sera affiché à l'écran, tout y est considéré comme tel donc on peut y inclure des signes de ponctuation comme les virgules sans problème, le texte peut contenir les commandes \n et \N (les seules qui soient utilisées sans accolades), ainsi que les balises contenant des commandes sur l'apparence, la position, les effets, etc. qui viendront "écraser" les paramètres du Style.

La section [Events] peut aussi contenir des lignes commençant par :

Comment: pour ajouter des commentaires
Picture: contient les même champs que la ligne "Dialogue:" mis à part le 10ème champ qui à la place du texte à afficher contient le nom et le chemin complet vers le fichier graphique à afficher (bmp/wmf/jpg/ico/gif) ; le Style spécifié est ignoré ; l'effet de transition "Scroll up" peut lui être appliqué, quant aux marges, la gauche et la verticale permettent de spécifier la position du coin gauche du bas de l'image ; pour centrer horizontalement l'image, il faut mettre la marge gauche à 0, pour la centrer verticalement il faut régler la marge verticale à 0.
Sound: contient les même champs que la ligne "Dialogue:" mis à part le 10ème champ qui à la place du texte à afficher contient le nom et le chemin complet vers le fichier sonore à jouer (Wave); le Style spécifié, les marges et le minutage du champ "End" sont ignorés, le fichier sera joué intégralement ou jusqu'à ce qu'on en lance un autre ; si un fichier AVI est lancé alors qu'un fichier Wave l'est déjà, les sons en provenance de la vidéo ne seront pas audibles, inversement si un fichier Wave est lancé alors qu'une vidéo contenant un flux audio l'est déjà, les sons en provenance du fichier Wave seront bloqués (faire attention à l'ordre de lancement).
Movie: contient les même champs que la ligne "Dialogue:" mis à part le 10ème champ qui à la place du texte à afficher contient le nom et le chemin complet vers le fichier vidéo à lancer (AVI); le Style spécifié ainsi que les effets de transition sont ignorés ; le champ "End" règle bien le moment auquel la vidéo doit disparaître, mais si le fichier AVI dure en réalité plus longtemps, les sons qui en proviennent continueront à être audibles (attention au minutage donc); les marges de gauche et verticale définissent la position du coin gauche du haut de la vidéo, contrairement aux fichiers graphiques (je vais pas dire attention partout, mais là aussi, à ne pas confondre ^^); pour centrer horizontalement la vidéo, il faut mettre la marge de gauche à 0, et mettre la marge verticale à 0 pour la centrer verticalement; là encore même remarque que pour les fichiers audio concernant l'ordre de lancement et ses conséquences.
Command: contient les même champs que la ligne "Dialogue:" mis à part le 10ème champ qui à la place du texte à afficher contient le nom et le chemin complet vers le programme à exécuter; le Style spécifié ainsi que les marges, les effets de transition et le champ "End" sont ignorés, le programme s'exécutera intégralement ou jusqu'à ce qu'on l'arrête manuellement; des commandes internes SSA peuvent aussi être utilisées: "SSA:Pause" et “SSA:Wait for trigger” ainsi que des commandes de contrôle de genlock (périphérique utilisé pour la synchronisation de l'ordi et de la source pendant l'acquisition/digitalisation vidéo), toutes commencent par "SSA:". "SSA:Pause" a le même effet que d'appuyer sur "P" pendant l'exécution du script (pourra servir de 2ème repère de synchronisation (le 1er Synch point étant spécifié dans la section [Script Info]) pour relancer le script au bon endroit suite à un changement de CD ou de face). "SSA:Wait for trigger" mettra aussi en pause mais la lecture reprendra automatiquement si le flux sonore en provenance de la carte son excède un certain seuil d'amplitude spécifié (peut être utilisé dans le même but que "SSA:Pause"), si ce seuil n'est pas atteint ou que P n'est pas pressé, la lecture reprendra au bout de 10 minutes.

  • Section [Fonts]
Si on choisit d'utiliser des polices non-standard (mais forcément TrueType), on peut spécifier leur intégration dans le script, elles se retrouveront alors ici sous la forme "fontname: <filename>" suivi du fichier binaire de police encodé en ASCII via la méthode d'encodage UUEncode sur des lignes d'au maximum 80 caractères.
Le nom de fichier est composé comme suit :

le nom de la police
+ "_"
+ "B" si la police contient des caractères gras
+ "I" si elle contient des caractères en italique
+ le chiffre correspondant au charset
+ l'extension ".ttf"

Par exemple : fontname: arial_0.ttf
pour la police arial avec un charset occidental (0)

  • Section [Graphics]
Si on choisit d'intégrer des images dans le script, elles se retrouveront ici sous la forme "filename: <filename>" suivi du fichier graphique encodé de la même façon que le sont les les polices intégrées.

Si on utilise le logiciel SubStation Alpha, il sauvegardera tous les fichiers intégrés au script dans un sous-répertoire de son répertoire d'installation, généralement appelé "Pictures".
Il essaiera de charger les images en fonction du chemin spécifié dans le script, et s'il ne les trouve pas, il cherchera alors dans ce répertoire "Pictures".

Remarque: cette intégration des fichiers n'est pas supportée par tous les logiciels d'édition, ni par tous les lecteurs vidéo, à vérifier avant donc.


II) Les balises, commandes et fonctions


Remarques générales


Les balises permettent de passer outre les déclarations de styles.

Structure des balises : elle sont formées d'accolades { } qui contiennent les différentes commandes que l'on souhaite appliquer. On place la balise correspondant au morceau de texte auquel on veut l'appliquer avant celui-ci.

Je parlerai alternativement des balises (les commandes comprises entre accolades), et des commandes en elles-même lorsqu'on les utilise sans accolades, c'est le cas lorsqu'on spécifie une commande comme argument dans une balise.

A chaque utilisation de balise on doit prendre en compte le fait qu'elle s'applique au texte qui la suit, mais que son effet ne s'arrête pas tout seul ou à la prochaine balise rencontrée, (hormis les 2 commandes de retour chariot et celles qui s'appliquent explicitement à toute la ligne comme celles gérant l'alignement) il continuera à s'appliquer jusqu'à la fin de la ligne, sauf si on le stoppe explicitement. Par exemple l'utilisation de la balise {\b1} devra être suivie de la balise {\b0} pour stopper son action:
Code:
{\b1}texte en gras{\fnArial}texte toujours en gras
{\b1}texte en gras{\b0}texte normal

Toutes les balises ayant pour effet un mouvement quelconque des sous-titres doivent prendre en compte le centre de gravité de la ligne dont la position a pu avoir été modifiée, celui-ci se trouvant par défaut centré en bas. Pour imaginer ce centre de gravité, il suffit de le considérer comme un point et de voir le texte comme un rectangle avec ce point en bas au centre.

Le système de coordonnées utilisé est un repère orthonormé avec un axe X horizontal correspondant à la largeur du texte, un axe Y vertical correspondant à la hauteur du texte, un axe Z de cote correspondant à la profondeur du texte, et un point d'origine renversé situé en haut à gauche de l'écran.


Balises communes au format SSA et ASS

  • Position et alignement du texte
Remarque: les deux commandes \n et \N sont utilisées sans accolades

\n renvoie à la ligne (sera ignorée selon la configuration de la balise {\q})

\N identique à \n, mais ne peut pas être ignorée

{\a<alignement>} spécifie l'alignement par défaut du texte, choisit une position prédéfinie, 0: alignement en fonction du style par défaut
1: en bas à gauche 5: en haut à gauche 9: au milieu à gauche
2: en bas au milieu 6: en haut au milieu 10: au centre de l'écran
3: en bas à droite 7: en haut à droite 11: au milieu à droite
vous remarquerez qu'il suffit de partir des 3 premières valeurs et de leur ajouter 4 pour se déplacer en haut de l'écran, ou d'y ajouter 8 pour se placer au milieu de l'écran, on se déplace ainsi verticalement en conservant la position horizontale, cela permet de s'y retrouver plus facilement qu'en ayant à retenir toutes les positions

  • Police et couleur
{\b<0-1>} spécifie si le texte doit être mis en gras (1) ou non (0)
Note: avec la syntaxe ASS, en spécifiant un chiffre supérieur à 1, ce paramètre sera utilisé pour régler l'épaisseur de la police: 400=normal, 700=gras

{\fn<police>} indique le nom de la police à utiliser (Font Name)

{\fs<size>} précise la taille de la police à utiliser (Font Size), comprise entre 0 et.. n'est pas limitée
Note: utilisée comme commande d'effet avec la fonction de transition ASS {\t(<t1><t2><A><effets>)}, elle permet d'appliquer au texte un effet de zoom avant ou arrière

{\<1-4>c&H<couleur>&} définit la couleur à appliquer à une partie du texte, le code hexadécimal de la couleur est en BVR (bleu vert rouge) sur 6 caractères max, FF=rouge, FF00=vert, FF0000=bleu, FFFFFF=blanc, etc.
1: colore l'intérieur des lettres
2: définit la coleur initiale lors d'un effet de karaoké
3: colore la bordure du texte
4: colore l'ombre du texte

  • Reset de la configuration
{\r} annule (Reset) toutes les balises de configuration de la ligne

  • Effet de karaoké
{\k<temps>} applique au texte un effet de remplissage saccadé, mot à mot ou syllabe par syllabe en fonction de la position des balises, et de gauche à droite; "temps" règle la durée du highlight en centièmes de seconde, comprise entre 0 et.. n'est pas limitée, un exemple :
Code:
{\k81}Quel {\k52}bel {\k26}effet {\k81}karaoke



Balises spécifiques au format ASS

  • Apparence de la police, transparence et flou
{\u<0-1>} spécifie si le texte doit être souligné (1) ou non (0)

{\s<0-1>} spécifie si le texte doit être rayé (1) ou non (0)

{\be<0-1>} spécifie si on veut que les les contours du texte soient flous (1) ou nets (0), abrév. de Blur Edge

{\<1-4>a&H<hexacode>&} règle le niveau de transparence du texte, "hexacode" est un code hexadécimal de deux caractères compris entre 00 (rendu opaque) et FF (invisible)
1: appliqué à l'intérieur des lettres
2: définit le degré de transparence initial lors d'un effet de karaoké
3: appliqué à la bordure du texte
4: appliqué à l'ombre du texte

{\alpha&H<hexacode>&} règle le niveau de transparence général, le code hexadécimal est sur 2 caractères compris entre 00 (rendu opaque) et FF (invisible)

  • Bordure, ombre et espacement
{\bord<size>} définit l'épaisseur de la bordure du texte en pixels, correspond à la taille que l'on veut pour le texte, entre 0 et.. n'a pas de limite

{\shad<distance>} définit la distance en pixels séparant le texte de son ombre, comprise entre 0 et.. n'a pas de limite
Note: l'ombre est toujours orientée vers le bas à droite

{\fsp<espacement>} définit l'espacement entre les lettres (Font SPace) en pixels, compris entre 0 et.. n'a pas de limite
Note: utilisée comme commande d'effet avec la fonction de transition ASS {\t(<t1><t2><A><effets>)}, elle permet la réduction/augmentation progressive de l'espace entre les lettres et donc un effet de rapprochement/éloignement des lettres ou portions du texte

  • Position et alignement du texte
{\q<0-3>} règle le comportement par défaut du retour à la ligne automatique, 0: lors d'un renvoi à la ligne, la ligne sera coupée de façon à ce que la portion supérieure soit plus grande que celle se retrouvant en dessous (la commande \n sera ignorée)
1: retour à la ligne effectué au niveau où le texte ne peut plus tenir dans la largeur de la vidéo (\n sera ignorée)
2: pas de renvoi à la ligne automatique (\n et \N seront donc prises en compte)
3: lors d'un renvoi à la ligne, la ligne sera coupée de façon à ce que la portion supérieure soit plus courte que celle se retrouvant en dessous (esthétiquement plus agréable) (la commande \n sera ignorée)

{\pos(<x>,<y>)} fonction qui indique la position de départ du texte, horizontalement avec la valeur "x", verticalement avec la valeur "y", en fonction de la résolution (définie dans la 1ère section [Script Info] du script) et du centre de gravité de la ligne
Note: 0,0 est la position en haut à gauche, x et y sont des entiers négatifs, positifs ou nuls, on peut donc déborder de l'écran
{\pos(<x>,<y>)} correspond à {\move(<x1>,<y1>,<x2>,<y2>,<t1>,<t2>)}
avec x2=x1, y2=y1 et t2=t1=0

{\an<1-9>} règle l'alignement par défaut du texte, choisit une position prédéfinie comme le fait la balise {\a}, mais cette fois les positions sont similaires à la disposition des chiffres de 1 à 9 sur le pavé numérique d'un clavier standard :
1: en bas à gauche 4: au milieu à gauche 7: en haut à gauche
2: en bas au milieu 5: au centre 8: en haut au milieu
3: en bas à droite 6: au milieu à droite 9: en haut à droite
vous remarquerez qu'il suffit de partir des 3 premières valeurs et de leur ajouter 3 pour se déplacer en haut de l'écran, ou d'y ajouter 6 pour se placer au milieu de l'écran, on se déplace ainsi verticalement en conservant la position horizontale, cela permet de s'y retrouver plus facilement qu'en ayant à retenir toutes les positions.
Note: cette balise permet également de déplacer le centre de gravité de la ligne auquel certains effets se réfèrent

{\org(<x>,<y>)} fonction qui permet de définir le centre de gravité (origine) d'une ligne quelle que soit sa position sur l'écran, celui-ci est fixé au point de coordonnée horizontale "x" et verticale "y"
Note: faire plusieurs tests de rotations/inclinaisons/déplacements avec différents centres de gravité aide à mieux comprendre le concept ; cette fonction est très utile pour déplacer la ligne dans le sens d'une rotation

  • Effets de karaoké
{\K<temps>} ou{\kf<temps>} applique au mot ou à la syllabe qui la suit un effet de remplissage progessif, fluide (de gauche à droite), "temps" règle la durée de l'effet en centièmes de seconde, sa valeur est comprise entre 0 et.. elle n'est pas limitée

{\ko<temps>} applique un effet karaoké de remplissage aux bordures du texte (de gauche à droite), "temps" règle la durée de l'effet en centièmes de secondes, sa valeur est comprise entre 0 et.. elle n'est pas limitée

  • Apparition/disparition et déplacement du texte
{\move(<x1>,<y1>,<x2>,<y2>,<t1>,<t2>)} fonction qui déplace le texte depuis le point de départ de coordonnée horizontale "x1" et verticale "y1", vers le point d'arrivée de coordonnée horizontale "x2" et verticale "y2"; t1 et t2 sont facultatifs, t1 est le temps de départ en millisecondes (après l'apparition initiale de la ligne à déplacer), t2 est le temps de fin de déplacement en millisecondes (après l'apparition de la ligne déplacée)
Note: comme il y a mouvement du sous-titre, il faut prendre en compte le centre de gravité de la ligne

{\fad(<t1>,<t2>)} fonction qui fait disparaitre et/ou apparaitre le texte en lui appliquant un effet de fondu (Fadding), "t1" correspond à la durée en millisecondes de l'effet de fondu lors de l'apparition du texte, "t2" correspond à la durée en millisecondes de l'effet de fondu lors de la disparition du texte. Leurs valeurs doivent être comprises entre 0 et... elle n'ont pas de limite.
Note: un seul effet de fondu est possible par ligne

  • Effets de distorsion et inclinaison
{\fsc<x-y><rate>} applique un effet de distorsion au texte (Font Scale), avec "x" on applique l'effet horizontalement sur la largeur du texte, avec "y" on applique l'effet verticalement sur la hauteur du texte, "rate" correspond au taux de distorsion compris entre 0 et.. n'est pas limité, pour un texte d'apparence "normale" il est égal à 100 (%) ; ça permet par exemple d'aplatir ou de grandir le texte (distorsion sur y), de l'étendre ou de le compacter au niveau de la largeur (distorsion sur x), etc.. ça permet donc de faire des effets "caoutchouc", qu'on peut associer à des déplacements et disparitions/apparitions pour faire rebondir le texte caoutchouté, par exemple
Note: cette balise ne peut pas être utilisée dans une fonction plus de 2 fois sur la même ligne et avec le même sens de distorsion

{\fr<axe><angle>} spécifie sur quel axe le texte doit effectuer une inclinaison (en fonction de son centre de gravité) soit :
sur l'axe horizontal correspondant à la largeur : "x"
sur l'axe vertical correspondant à la hauteur: "y"
sur l'axe correspondant en 3D à la profondeur : "z"
"angle" correspond à l'angle de l'inclinaison, qui peut être négatif, positif ou nul
Note: on peut utiliser plusieurs angles simultanément en faisant plusieurs appels à la commande \fr dans la même balise, par exemple:
Code:
 {frx15\fry25\frz45}texte

Rappel: si on définit un angle d'inclinaison pour un certain axe, sans le modifier par la suite sur le reste de la ligne, il sera appliqué à toute la ligne, par exemple:
avec
Code:
 {\frx30\fry45}test A{\frx50}test B

test B sera affiché avec une inclinaison sur l'axe Y égale à 45

  • Animation (enchaînements d'effets) et clips
{\t(<t1><t2><accel><cmds>)} fonction d'animation, ou de transition animée, qui permet d'enchaîner les commandes d'effets les unes derrière les autres, en les séparant par des virgules, en outre toute balise d'effet la précédant immédiatement sera elle aussi "enchainée" aux effets contenus dans cette balise. t1 correspond au temps de début de l'animation en millisecondes, t2 correspond au temps de fin d'animation en millisecondes,"accel" est optionnel, il correspond à l'accélération (à partir de 1) ou au ralentissement (entre 0 et 1) de l'animation, avec 1 la vitesse est linéaire
Note: les effets doivent suivre une certaine logique dans les enchainements, on commencera par l'apparence de la ligne à afficher, tout ce qui concerne sa police, puis l'apparence de la ligne à la fin de l'animation ; l'exemple commun d'animation est celle d'une rotation formée de 2 commandes d'inclinaisons successives de 25° sur l'axe de profondeur, la 1ère avec {\fr} la seconde avec {\t}:
Code:
{\frz25}{\t(0,1000,\frz25)}texte

On peut placer dans cette balise des commandes d'effets (cmds) sur les couleurs, les bordures, les ombres, les espacements entre lettres, la transparence et la taille de la police, les distorsions, les inclinaisons, clips
(mais seulement avec un rectangle)

{\clip(<x1>,<y1>,<x2>,<y2>)} fonction qui définit une zone de visibilité où apparaîtra le texte, la forme communément utilisée est un rectangle mais on peut utiliser des formes plus complexes; cette balise est en réalité un calque qui permet de faire des choses très variées, comme afficher plusieurs sous-titres de manière pyramidale en 2D, cad avec chaque ligne positionnée devant la moitié basse de la ligne la précédant, cela permet également d'appliquer une couleur différente à chaque "strate" ou couche d'une ligne, on peut aussi faire disparaître progressivement une ligne à l'aide de la fonction de transition et d'un calque rectangulaire, ou encore ne faire apparaître que la partie supérieure d'une ligne pour un défilement progressif, etc.
Le coin supérieur gauche du rectangle a pour coordonnée horizontale x1 et verticale y1, son coin inférieur droit a pour coordonnée horizontale x2 et verticale y2 ; ils peuvent prendre une valeur positive, négative ou nulle
Pour utiliser d'autres formes, il faut au préalable les créer avec les commandes de dessin, la syntaxe de la balise devient alors: {\clip([<1...5...>,]<commandes>)}
<1...5....> est l'argument équivalent de celui de la commande \p (commande de dessin décrite ci-après), {\clip1} active le mode dessin et {\clip0} le désactive
Ca permet de créer des effets à base de calques plus sophistiqués comme un effet de "miroir brisé", etc.

  • Reset de la configuration
{\r<style>} annule (Reset) toutes les balises de la ligne pour lui appliquer à la place le style "style", s'il n'est pas reconnu celui par défaut sera appliqué

  • Les balises de dessin
Notes importantes à propos de ces balises
Chaque dessin, appelé objet, doit être fermé ou il se retrouvera fermé automatiquement par une ligne droite simple.
Les coordonnées des objets sont toujours relatives à la position (x,y) du curseur et du mode d'alignement des sous-titres, automatique, prédéfini ou défini via une balise.
Les couleurs des dessins correspondront à celles qui ont été définies dans les lignes de style du fichier: la couleur de l'intérieur (PrimaryColour), des bordures et de l'ombre (BackColour).
Enfin, il faut savoir que les balises de dessin manquent cruellement de charme ^^

{\p<1...5...>+} <commandes> (\p<scale>) est la balise d'affichage des dessins,
{\p1+} active le mode dessin
{\p0} le désactive (à mettre à la fin de l'effet ou de la ligne)
<1...5...> règle l'échelle de l'objet
\p<scale> calcule l'échelle avec le facteur 2^(scale-1), avec \p4 on obtient une échelle de 2^(4-1), cad 8, on devra donc diviser toutes nos coordonnées par 8 pour se conformer à cette échelle
Note: les commandes doivent donc être comprises entre {\p1+} et {\p0} (sauf en ce qui concerne \clip); on doit toujours commencer par la commande move "m", et enfin si on veut utiliser la même commande plusieurs fois de suite, ça ne sert à rien de remettre à chaque fois son nom, il suffit de lister les coordonnées.
Les coordonnées se réfèrent à la position du curseur et sont fonction du mode d'alignement choisi. Les commandes "p" et "c" ne peuvent être utilisées qu'à la suite d'autres commandes relatives aux courbes B-spline.
Les 'commandes' que l'on peut utiliser avec cette balise sont au nombre de 7:

m <x> <y> déplace le curseur vers la position de coordonnée horizontale "x" et verticale "y"

n <x> <y> déplace le curseur vers la position de coordonnée horizontale "x" et verticale "y" en laissant les objets dessinés ouverts s'ils n'ont pas été fermés au préalable

l <x> <y> dessine une ligne entre le point correspondant à la position du curseur et celui ayant pour coordonnée horizontale "x" et verticale "y"

b <x1> <y1> <x2> <y2> <x3> <y3> dessine une courbe de Béziers cubique de degré 3 avec 4 points de contrôle, cad en langage digeste, une courbe.
Le 4ème point de contrôle non spécifié en argument correspond à la position du curseur
Note: les courbes de Bézier sont des courbes polynomiales paramétriques (je vous rassure, c'est pas contagieux ^^) très utilisées en dessin vectoriel,elles permettent de dessiner des courbes lisses qui joignent des points ou des polygones. Une petite applet java pour se faire une meilleure idée:
http://www.cs.princeton.edu/~min/cs426/jar/bezier.html

s <x1> <y1> <x2> <y2> <x3> <y3>...<xN> <yN>
dessine une courbe B-spline uniforme de degré 3 à N points, avec N supérieur ou égal à 3. Une courbe B-spline uniforme est une courbe paramétrique voisine de celles de Béziers, elle correspond en fait à une suite de courbes de Béziers connectées entre elles de manière continue.

Une applet qui génère et dessine en ligne des B-spline, ça peut aider à voir un peu comment se débrouiller sans devoir resortir un vieux bouquin de maths ^^
http://alex.yvart.free.fr/SCIENCES/BSpline/bspline.html

p <x> <y> a pour effet d'étendre la courbe B-spline jusqu'au point ayant pour coordonnée horizontale "x" et verticale "y"

c permet de fermer la courbe B-spline (tout objet dessiné doit être fermé)

{\pbo<y>} permet d'excentrer de "y" pixels la ligne de base courante où sont placés tous les objets par défaut (sa position est relative à celle des sous-titres et marges verticales) ; comme l'origine se trouve en haut à gauche de l'écran, pour monter les objets on utilise une valeur "y" négative, et pour les baisser on utilise une valeur "y" positive.


Ce tutoriel est un condensé de notes éparpillées prises au fil des utilisations, des explications de la doc 'officielle' (fournie en lien connex) et de remarques personnelles, pour cela j'ai essayé de rendre l'ensemble facile à suivre mais j'ai pu ne pas être claire sur certains points ou avoir commis des erreurs, merci de me le signaler si c'est le cas ^^

J'aurai pu donner un peu plus d'exemples d'effets et détailler davantage l'utilisation des balises de dessin par exemple, mais vu la taille du tutoriel j'ai préféré éviter, cependant il sera peut-être suivi d'un autre tutoriel plus 'pratique' que théorique, détaillant les différentes étapes de création, édition, synchronisation et encodage d'un sous-titre au format SSA/ASS qui y remédiera, je verrai ^^'

Bien sûr, en passant par un éditeur spécialisé vous n'aurez pas à entrer tout ça à la main, loin de là, mais un aperçu de la syntaxe devrait vous aider à en comprendre l'interface et les différentes options et donc permettre une utilisation efficace.

Ca devrait être particulièrement utile si vous n'utilisez pas d'éditeur spécifique et que vous créez/modifiez le fichier au format texte brut. Il y a je pense de quoi bien se familiariser avec ce format pour s'y mettre tranquillement tout en obtenant rapidement des résultats sympas, sachant que les possibilités de combinaisons des différentes commandes n'ont de limite que l'imagination de celui qui s'en sert, il y a de quoi s'amuser

Share this topic on Del.icio.usShare this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on LiveShare this topic on MySpaceShare this topic on RedditShare this topic on StumbleUponShare this topic on TechnoratiShare this topic on TwitterShare this topic on YahooShare this topic on Google buzz

Pages: [1]   En haut
  Répondre  |  Notifier  |  Marquer non lu  |  Partager ce sujet  |  Imprimer  
 
 

+ Réponse Rapide
Dans la Réponse Rapide, vous pouvez utiliser du BBCode et des smileys comme sur un message normal, mais à partir d'une interface plus rapide d'accès.

Attention, il n'y a pas eu de réponse à ce sujet depuis au moins 120 jours.
À moins que vous ne soyez sûr de vouloir répondre, pensez éventuellement à créer un nouveau sujet.

Portal Management Extension PortaMx v0.961-1 | PortaMx © 2008-2009 by PortaMx corp.
Powered by SMF 2.0 RC1.2 | SMF © 2006–2009, Simple Machines LLC
XHTML RSS WAP2
Page générée en 0.119 secondes avec 23 requêtes. (Pretty URLs adds 0.001s, 0q)