Guida alla creazione di DVD video

#

Listato 14

La generazione dei sottotitoli
 
<!--
DVD authoring suite
makesottotitoli.wsf
(c) copyright 2007 Roberto Ceccarelli
-->

<job>
<runtime>
<named name="filename" helpstring="Il nomefile del filmato" required="true" type="string" />
<named name="font" helpstring="Eventuale tipo di carattere (default: verdana)" required="false" type="string" />
<named name="pointsize" helpstring="Eventuale dimensione del carattere (default: 35)" required="false" type="string" />
<named name="vpos" helpstring="Eventuale distanza dal fondo pagina (default: 35)" required="false" type="string" />
<named name="color" helpstring="Eventuale colore del carattere (default: white)" required="false" type="string" />
<named name="language" helpstring="Eventuale lingua (default: it)" required="false" type="string" />
</runtime>

<script language="JScript">
// dichiarazione variabili
var filename, font, pointsize, vpos, color, language ;
var oSPU, oXML;
var spuel, spuList, spuItem;
var lista, langList;
var imgname, txt;
var im;

// controllo che esista l'argomento principale
if( !WScript.Arguments.Named.Exists("filename"))
{
        WScript.Arguments.ShowUsage();
        WScript.Quit();
}
filename = WScript.Arguments.Named("filename");

// controlli e impostazione default argomenti facoltativi
if( WScript.Arguments.Named.Exists("font") )
{
        font = WScript.Arguments.Named("font");
}
else  
{
        font = "verdanab.ttf";
}
if( WScript.Arguments.Named.Exists("pointsize") )
{
        pointsize = WScript.Arguments.Named("pointsize");
}
else  
{
        pointsize = "35";
}
if( WScript.Arguments.Named.Exists("vpos") )
{
        vpos = WScript.Arguments.Named("vpos");
}
else  
{
        vpos = "35";
}
if( WScript.Arguments.Named.Exists("color") )
{
        color = WScript.Arguments.Named("color");
}
else  
{
        color = "white";
}
if( WScript.Arguments.Named.Exists("language") )
{
        language = WScript.Arguments.Named("language");
}
else  
{
        language = "it";
}

// lettura del file di configurazione
var oXML = new ActiveXObject("msxml2.domdocument.4.0");
oXML.async = false;
oXML.load(filename + ".xml");
var lista = oXML.getElementsByTagName("caption")

// inizializzazione ImageMagick
im = WScript.CreateObject("ImageMagickObject.MagickImage.1");

// carico il template del file di controllo di spumux
oSPU = WScript.CreateObject("Msxml2.DOMDocument.4.0");
oSPU.loadXML("<subpictures><stream/></subpictures>");

// inserisco i parametri
spuList = oSPU.getElementsByTagName("stream");

for(var i=0; i<lista.length; i++) {
    // estraggo il nodo dalla lista fornita in input
        spuItem = lista.item(i);

        // creo l'elemento spu per il file di controllo di spumux
        spuel = oSPU.createElement("spu");
        spuel.setAttribute("start",spuItem.getAttribute("start"));
        spuel.setAttribute("end",spuItem.getAttribute("end"));
        imgname = "temp\\"+filename+"_"+i+"_"+language+".png";
        spuel.setAttribute("image",imgname);
        spuList.item(0).appendChild(spuel);
       
        // ricerco il testo tra gli elementi del nodo
        langList = spuItem.getElementsByTagName(language);
        txt = langList.item(0).text;
       
        // creo l'immagine
        im.Convert( "-type", "palette", "-colors", "3", "+antialias", "xc:transparent", "-resize", "720x576!", "-font", font, "-pointsize", pointsize, "-draw", "gravity south stroke black fill "+color+" text 0,"+vpos+" '"+txt+"'", "png8:"+imgname);
}

// salvataggio del file di controllo di spumux
oSPU.save("temp\\"+filename+"_spu_"+language+".xml");
</script>
</job>
Inizio pagina
 
Home page