Linux multimedia/Video/Authoring

Wikibooks, manuali e libri di testo liberi.
Indice del libro

Authoring[modifica]

Questa fase riguarda quasi esclusivamente i DVDe i VCD/SVCD. Essa consiste nel confezionare una serie di filmati organizzandoli in scene ed eventualmente collegandoli tramite dei menù. Le rispettive specifiche stabiliscono che la transizione fra una scena e l'altra deve avvenire senza soluzione di continuità, per cui i cosiddetti capitoli dei DVD e dei VCD si possono considerare come dei punti di accesso rapido ad un unico lungo filmato.

Vedremo innanzitutto esempi molto elementari di DVD, fino ad arrivare a DVD con menù semplici in modo da indicare come procedere per realizzazioni più complesse.

Per quanto riguarda i VCD, ci limiteremo a quelli senza menù e senza capitoli (help wanted!)

Authoring di semplici VCD[modifica]

Una volta creati dei file MPEG-1 compatibili con le specifiche VCD, questi possono essere usati facilmente per creare un VCD diviso in altrettanti capitoli, anche se privi di menù e altre caratteristiche avanzate.

La specifica VCD prescrive, oltre a vari parametri di codifica, anche il modo in cui i singoli file devono essere incisi in formato ISO9660 su CD. Questo è compito di vcdimager:

 $ vcdimager cap1.mpg cap2.mpg ... capN.mpg

Vengono così creati i file videocd.bin e videocd.cue: il primo contiene i filmati MPEG pronti per essere incisi su CD, il secondo contiene le istruzioni per farlo, tramite cdrdao, che incide CD in modalità Disk-At-Once (DAO):

$ cdrdao videocd.cue

Ovviamente è molto prudente fare prima una prova con un CD-RW e, se il player a cui è destinato lo riproduce, incidere su CD-R.

DVD video[modifica]

L'espressione DVD-Video sta per Digital Versatile Disc Video, e non si riferisce semplicemente ad un supporto fisico, come ad esempio il DVD-R: specifica un modo di organizzare contenuti multimediali in maniera versatile, permettendo all'utente un certo grado di interazione con il mezzo. In definitiva, i contenuti veri e propri di un DVD-Video sono degli MPEG-2 PS (MPEG-2 Program Stream), ma organizzati in maniera particolare per ottenere vari obiettivi, fra cui:

  • dividere un filmato in capitoli o scene, senza introdurre però alcuna pausa nella visione complessiva del filmato, e nello stesso tempo permettendo comunque di saltare da una scena all'altra molto rapidamente
  • gestire menù anche complessi, ad esempio per elencare le scene e permettere di saltare direttamente ad una qualunque di esse
  • aggiungere contenuti audio e video ai menù per renderli più gradevoli e accattivanti
  • permettere a tutto questo di essere inciso su un supporto DVD secondo un filesystem riconoscibile da lettori hardware anche economici

Si tratta di obiettivi tutt'altro che banali. Per realizzarli al massimo livello è stata definita una specifica piuttosto complessa. Come vedremo, realizzare DVD-Video con menù avanzati non è una passeggiata, anche disponendo di mezzi sofisticati.

La specifica DVD-Video è gestita dal DVD Forum.

Struttura logica di un DVD-Video[modifica]

A livello logico, un DVD-Video si compone di diverse componenti organizzate in una struttura gerarchica. Vediamole a partire dal grado più alto della gerarchia fino ai più bassi.

Video Manager
È il livello più alto nella struttura. I contenuti definiti a questo livello corrispondono di norma al tasto top menu o dvd menu disponibile sul telecomando. Inoltre sono quelli che vengono riprodotti appena di inserisce il DVD nel lettore. Può esserci anche più di un VMG, ma possono essere anche vuoti.
Title Set
Un DVD-Video deve contenere almeno un titleset, che fa da contenitore per i titoli. Teoricamente si può avere più di un titleset, ma questo praticamente ha senso solo se si devono riprodurre filmati con proporzioni diverse (ad esempio, alcuni a 4:3 e alcuni a 16:9). In tutti gli altri casi, un singolo titleset è tutto quello che serve. Il pulsante menu o title sul telecomando dovrebbe riportare a questo livello (che ci sia o meno un menù).
Titolo
Corrisponde al concetto generico di film, inteso come unità a sé stante. Al suo interno non prevede soluzioni di continuità, nel senso che lo si può vedere dall'inizio alla fine senza interruzioni o pause di sorta. Il titolo può contenere una o più Program Chain (PGC), ma all'atto pratico la suddivisione logica è in capitoli, contenuti nelle PGC.
Program Chain (PGC)
Si può dire che una Program Chain è una raccolta di file MPEG-2 con qualcosa in più. In particolare, ad ogni file MPEG-2 contenuto in una PGC si può associare una divisione in capitoli, indicare cosa fare prima e dopo la riproduzione di quel file, e molto altro. La parola chain dovrebbe proprio indicare una catena di comandi in sequenza, che nel caso più semplice si riducono alla sola riproduzione di un file MPEG-2.
Capitolo
Sebbene i capitoli siano specificati per ogni file MPEG-2 contenuto in una PGC, in definitiva sono suddivisioni logiche del titolo. Anche se ci sono più PGC in un titolo, e ognuna definisce diversi capitoli, tutti insieme questi capitolo sono una suddivisione del titolo. Mentre si guarda un titolo non si percepisce la divisione in capitoli, perché essa non introduce alcuna pausa nella riproduzione: i capitolo sono solo punti di accesso diretto che permettono di navigazione all'interno di un titolo che, altrimenti, sarebbe puramente sequenziale.

A vari livelli di questa gerarchia possono trovare posto dei menù. Anche i menù sono divisi in PGC. Questo perché è all'interno di una PGC che si può indicare il filmato da riprodurre quando viene selezionato un menù piuttosto che un altro, nonché quali azioni effettuare prima e dopo la riproduzione del menù. Ci sono due tipi di menù, distinti non tanto per i loro possibili contenuti, quanto per i distinti ruoli che hanno.

VMGM (Video Manager Menu)
Un Video Manager può contenere solo un menù, detto appunto VMGM. Se presente, viene riprodotto, altrimenti la riproduzione parte subito dal primo titolo del primo titleset, o dal primo menù del primo titleset, se presente. Tipicamente il VMGM è il menù principale di un DVD. Esso può puntare ai menù dei titleset, al primo titolo di un titleset, oppure ad un altro eventuale VMGM.
VTSM (Video Title Set Menu)
Un titleset può contenere dei menù, detti VTSM. Un VTSM può puntare a un titolo, a un capitolo o a un altro VTSM, purché all'interno dello stesso titleset. Può anche puntare al primo VMGM del disco. Se un titleset è privo di VTSM, la riproduzione parte dal primo titolo del titleset.

Struttura fisica di un DVD-Video[modifica]

Per struttura fisica intendiamo, con un'espressione forse impropria, come si presenta sul filesystem un DVD-Video. Il filesystem utilizzato è una versione semplificata dell'UDF, un filesystem che ha sostituito l'ISO9660 quando questo si è mostrato inadeguato alle esigenze del CD-RW e del DVD. A prima vista, sembra un filesystem come quello del DOS.

La prima cosa che si nota sono le due directory AUDIO_TS e VIDEO_TS. La prima è riservata per lo standard DVD-Audio, che codifica l'audio all'esorbitante frequenza di campionamento di 192 KHz, contro i 44.1 KHz del Compact DISC e 48 KHz del DAT e dello stesso DVD-Video.

La seconda directory è invece usata appunto per il DVD-Video. Essa non contiene altre sottodirectory, e i nomi dei file aderiscono rigorosamente alla norma 8.3 (8 caratteri per il nome base, 3 per l'estensione). Questa scelta facilita certamente la produzione di lettori hardware, perché non obbliga i produttori a gestire un filesystem sofisticato.

I file sono di diversi tipi. Ecco quelli principali:

VTS_XX_Y.VOB
Blocco Y del titolo XX. Ogni titolo dev'essere fisicamente suddiviso in file di 1 GiB ciascuno, numerati in sequenza. Ogni file è a tutti gli effetti un MPEG-2 program stream, seppure con vincoli molto forti rispetto alla notevole flessibilità prevista dall'MPEG-2. Questi file contengono quindi il video, l'audio, i sottotitoli e i menù in multiplex. Il limite di 1 GiB ha soprattutto lo scopo di semplificare il firmware dei lettori hardware. Ovviamente, poiché i supporti DVD più capienti arrivano a 9,4 GiB, le dieci cifre da 0 a 9 sono sufficienti a gestire il titolo più grande possibile. Ecco perché la singola Y. La doppia XX è motivata invece dal fatto che il numero di titoli non è legato alle dimensioni dei filmati: si possono avere quindi anche 100 singoli titoli, ovviamente entro il limite complessivo di 9,4 GiB o il più comune 4,7 GiB.
VTS_XX_0.IFO/BUP
Informazioni che permettono la navigazione all'interno del titolo XX: come è diviso in capitoli, cosa fare se si preme top menu, e cose simili. C'è un solo file di questo tipo per ogni titolo, indipendentemente dal numero di blocchi in cui il titolo stesso è diviso. I file con estensione BUP sono copie di backup di quelli con estensione IFO.
VIDEO_TS.VOB
Questi file sono simili a quelli già visti per i titoli, ma si riferiscono ai title set (da cui TS, appunto). Questi file vengono letti per primi (non a caso il nome viene prima degli altri), e contengono il menù principale, nonché informazioni su quale titolo dev'essere riprodotto per primo, e se automaticamento oppure no. Non contenendo filmati veri e propri, se non il minimo necessario a vivacizzare i menù e il loro uso, raramente sono grandi come quelli dei titoli.
VIDEO_TS.IFO/BUP
Hanno esattamente lo stesso significato già visto per i file VTS.

dvdauthor[modifica]

In Linux esiste un solo e definitivo strumento per effettuare l'authoring di DVD: dvdauthor. È una utility a riga di comando, e tutti gli applicativi di authoring, siano grafici o testuali, sono interfacce più o meno sofisticate per dvdauthor. Naturalmente l'uso diretto di dvdauthor, vista la complessità della specifica DVD-Video, diventa presto troppo complicato, ma almeno all'inizio è molto utile per capire come funziona l'authoring.

dvdauthor può essere usato sia con opportune opzioni, sia preparando un opportuno file XML contenente tutte le indicazioni necessarie. Per ora vedremo soltanto il secondo tipo di utilizzo, perché più intuitivo, anche se ovviamente chi non ha familiarità con XML potrebbe incontrare qualche difficoltà all'inizio.

Authoring di DVD senza menù[modifica]

Disponendo di una serie di file *.mpg prodotti secondo le specifiche DVD video, è piuttosto facile creare semplici DVD divisi in scene, ma privi di menù e altri orpelli.

Vedremo due casi elementari: un titolo diviso in più capitoli, e più titoli a loro volta divisi in capitoli. Questo secondo caso è poco pratico in mancanza di menù, perché bisogna selezionare i titoli con pulsanti non molto standard sul telecomando. Però è un caso utile per vedere in seguito come gestire più titoli tramite dei menù.

Un title set, un titolo, più capitoli[modifica]

Supponiamo dunque di avere alcuni file cap1.mpg, cap2.mpg,... capN.mpg, compatibili con la specifica DVD video. Va creato un file XML come il seguente:

<dvdauthor dest="mio-dvd">
  <vmgm/>
  <titleset>
    <titles>
      <pgc>
        <vob file="cap1.mpg"/>
        <vob file="cap2.mpg"/>
        ...
        <vob file="capN.mpg"/>
      </pgc>
    </titles>
  </titleset>
</dvdauthor>

Avendo specificato più file con gli elementi vob, il titolo risulterà diviso automaticamente in altrettanti capitoli. Si potrebbe usare una diversa suddivisione con l'attributo chapters degli elementi vob. In particolare, il titolo potrebbe essere costituito di un solo file, e con un opportuno attributo chapters si potrebbe ottenere esattamente la stessa divisione in capitoli. Ad esempio:

<dvdauthor dest="mio-dvd">
  <vmgm/>
  <titleset>
    <titles>
      <pgc>
        <vob file="unico.mpg" chapter="00:00:00.000,00:04:12.000,...,00:20:28.160" />
      </pgc>
    </titles>
  </titleset>
</dvdauthor>

(ovviamente i puntini sospensivi non fanno parte della sintassi).

Un title set, più titoli[modifica]

Dividendo i file in più PGC, il risultato è che il title set conterrà altrettanti titoli. Fra l'uno e l'altro si osserverà una vistosa pausa perché, come si è visto sopra, ogni titolo ha il suo insieme di file VTS*.VOB, e il lettore cambia file quando passa da un titolo all'altro. Questo non avviene in un singolo titolo, perché i capitoli sono solo punti di accesso diretto ai file che costituiscono un titolo.

<dvdauthor dest="mio-dvd">
  <vmgm/>
  <titleset>
    <titles>
      <pgc>
        <vob file="titolo1.mpg"/>
      </pgc>
      <pgc>
        <vob file="titolo2.mpg"/>
      </pgc>
        ...
      <pgc>
        <vob file="titoloN.mpg"/>
      </pgc>
    </titles>
  </titleset>
</dvdauthor>

Anche in questo caso si potrebbero dividere i titoli in capitoli con l'attributo chapters per gli elementi vob.

Come già accennato, un DVD creato in questo modo non è molto pratico, perché per selezionare un titolo si può solo usare il pulsante Display presente sui telecomandi, non sempre con questa dicitura, e non sempre con le stesse funzioni. Un tasto simile permette di vedere in sovrimpressione il numero di titolo e cambiarlo poi con i tasti freccia (e forse anche con i tasti numerici), ma dipende tutto dal particolare telecomando.

Si tratta insomma di una soluzione non solo poco pratica, ma anche poco standard. I menù sono decisamente più comodi, e funzionano con qualunque telecomando.

Authoring effettivo ed incisione[modifica]

Prima di vedere esempi più evoluti di authoring, vediamo come si crea effettivamente la struttura del DVD e come si incide sul supporto: infatti queste operazioni sono praticamente indipendenti dal modo in cui si è programmato il lavoro di dvdauthor.

Supponendo che il file XML di configurazione si chiami mio-dvd.xml, il comando:

$ dvdauthor -x mio-dvd.xml

crea una directory mio-dvd con la corretta alberatura, che poi può essere incisa con growisofs:

$ growisofs -Z /dev/dvd -dvd-compat -dvd-video mio-dvd

È importante che la directory mio-dvd sia vuota prima di invocare dvdauthor, che non si preoccupa di svuotarla: il risultato può essere una directory non conforme alla specifica DVD video.

Lo stesso risultato si può ottenere invocando dvdauthor senza ricorrere al file XML, ad esempio nel modo seguente:

$ dvdauthor --title --file=unico.mpg --chapters=00:00:00.000,00:04:12.000,...,00:20:28.160 --output=mio-dvd

(almeno nel caso elementare di un solo titolo e più capitoli), e invocando poi growisofs nel modo già visto.

I menù in generale[modifica]

Prima ancora di creare un menù, è opportuno chiarire alcuni concetti.

Sfondo[modifica]

Innanzitutto, e questa non è una complicazione da poco, anche un menù del tutto statico è in realtà un file MPEG-2. Inoltre, anche se il menù appare privo di audio, deve in realtà avere una traccia audio, eventualmente silenziosa. La durata di un menù statico è la minima possibile, ma deve essere un filmato. Per i DVD commerciali questo è un fatto molto positivo, perché permette di creare menù animati molto accattivanti. In certi casi si esagera: prima di poter fare una qualsiasi scelta dal menù, bisogna sorbirsi un filmato che dopo due volte annoia.

Per le prime esperienze con i menù può essere una buona idea usare un estratto di 30 o 60 secondi da un proprio filmato, magari proprio uno di quelli da mettere sul DVD che si vuole creare: presupponendo che sia già un MPEG-2 per DVD-Video, con avidemux o programmi simili, anche a riga di comando, questa estrazione è molto facile.

Più avanti vedremo come creare menù statici, con o senza audio, a partire da un'immagine prescelta.

Bottoni[modifica]

Un menù senza bottoni è del tutto inutile, anche se è pur sempre un menù secondo la specifica. Il problema è che i bottoni sono gestiti come i sottotitoli, e l'unico programma che li gestisca è spumux, di solito presente nello stesso pacchetto di dvdauthor.

Un bottone ha sempre tre stati:

normale
È lo stato in cui si trova il bottone prima che l'utente prenda un'iniziativa. Tuttavia un bottone potrebbe essere creato già nello stato evidenziato o, più raramente, selezionato.
evidenziato
Quando l'utente usa i tasti freccia sul telecomando, sposta la sua attenzione sui diversi bottoni del menù che, a turno, vengono appunto evidenziati. Un solo bottone per volta può essere in questo stato.
selezionato
Quando un bottone è evidenziato e l'utente preme il tasto Ok o Enter che sia sul telecomando, il bottone evidenziato passa nello stato selezionato. Di norma, a questa operazione corrisponde l'avvio di un titolo, il salto ad un altro menù o altre azioni simili, ma il bottono può anche non servire a niente, e rimanere nello stato selezionato, per quanto inutile possa sembrare una cosa del genere.

Per creare l'effetto grafico dei tre stati, si devono creare tre griglie diverse da sovrapporre. In teoria, su ogni griglia ci devono essere le stesse forme, colorate in modo diverso per distinguere gli stati, ma sono possibili anche scelte molto più complicate.

È importante tenere presente alcune limitazioni:

  • le immagini devono essere in formato PNG oppure BMP. Poiché spesso si dispone di immagini in JPEG, può capitare di dover prima convertire lo sfondo prescelto in uno di questi due formati
  • i colori dei bottoni su ogni griglia devono essere solo due

Il menù più semplice: niente audio, sfondo fisso e bottoni testuali[modifica]

Senza andare troppo avanti con la teoria, vediamo subito un tipo di menù che si può considerare il più elementare. Per crearlo bastano infatti ingredienti minimi:

Generare lo sfondo[modifica]

Per creare lo sfondo partiremo da un'immagine JPEG, diciamo sfondo.jpg, che deve avere dimensioni 720x576, conformemente alla norma PAL. Il seguente comando, che utilizza due degli mjpegtools, genera lo stream video del filmato di sfondo, denominato sfondo.m2v:

jpeg2yuv -n 25 -I p -f 25 -j sfondo.jpg | mpeg2enc -n p -f 3 -b 2000 -o sfondo.m2v

Il primo comando, a partire dall'immagine sfondo.jpg (-j sfondo.jpg), invia allo standard output 25 frame (-n 25) con interlacciamento progressivo (-I p) e con un frame rate di 25 frame al secondo (-f 25), secondo la norma PAL. Dal momento che il numero di frame prodotti (-n 25) corrisponde esattamente al frame rate scelto (-f 25), lo stream che viene passato allo standard output ha la durata di un secondo esatto.

Il secondo comando della pipeline crea il file sfondo.m2v (-o sfondo.m2v) in formato MPEG-2 generico (-f 3), codificando i frame YUV prodotti dal comando precedente secondo la norma PAL (-n p). Inoltre usa un bitrate di 2000 Kpbs (-b 2000). La maggior parte dei player, come totem, mplayer, ffmpeg e altri, potranno rilevare una durata dello stream così creato molto diversa da un secondo, ma quello che conta è il numero di frame creati in questo modo: se sono 25, la durata è di un secondo.

A questo punto serve lo stream audio, che poi andrà miscelato con quello video per creare il filmato di sfondo vero e proprio. Il seguente comando crea un file audio sfondo.mp2 contenente un secondo di silenzio:

dd if="/dev/zero" count=48000 bs=4 | toolame -b 128 -s 48 /dev/stdin sfondo.mp2

Il primo comando invia allo standard output 48000 campioni di 4 byte nulli, corrispondenti all'informazione contenuta in un secondo di suono stereo a 16 bit (anche se si tratta di puro silenzio). Il bitrate in questo caso è di ben 1536 Kbps (48000*16*2), ma il secondo comando nella pipeline preleva dallo standard input questi campioni e li converte in uno stream audio compatibile con la specifica DVD-Video, abbassando il bitrate a 128 Kbps (-b 128) e conservando la frequenza di campionamento di 48 KHz (-s 48). Poiché la frequenza di campionamento è esattamente il reciproco del numero di campioni ricevuti, il suono risultante dura esattamente un secondo.

L'ultimo passaggio è il multiplexing:

mplex -f 8 -o sfondo.mpg sfondo.m2v sfondo.mp2

Questo comando, sempre della suite mjpegtools, miscela lo stream video sfondo.m2v e lo stream audio sfondo.mp2, creando un file sfondo.mpg (-o sfondo.mpg) conforme alla specifica DVD-Video (-f 8).

Va detto che nel caso di menù statici senza audio non è strettamente necessario che l'audio e il video abbiano la stessa durata, ma quando si aggiunge l'audio a un video dinamico il discorso è ben diverso: il video potrebbe continuare mentre l'audio è finito o viceversa, che non è proprio il massimo della qualità.

Generare i bottoni[modifica]

Per generare i bottoni testuali useremo il programma convert della suite ImageMagick: con poche opzioni esso permette di creare la griglia di base, e per ottenere le altre due basta cambiare solo il colore. In questo modo è facile creare un proprio comando personalizzato per generare menù testuali. Vedremo ora un esempio minimale, a partire dal quale è però possibile ottenere menù testuali di tutti i tipi.

Un comando per generare un'immagine denominata $MASK.png con due bottoni di colore $COLOR può essere il seguente:

convert -size 720x576 xc:transparent +antialias -pointsize 30 \
-fill $COLOR -draw "text 80,80 'Titolo 1'" -draw "text 80,160 'Titolo 2'" $MASK.png

Per generare le tre griglie richieste, diciamo buttons.png, highlight.png e select.png, rispettivamente in bianco, blu e rosso, basterà invocare il comando sopra cambiando opportunamente i valori delle variabili $COLOR e $MASK: la posizione e il font delle stringhe testuali saranno esattamente gli stessi su tutte e tre le griglie, in modo da garantire che il menù funzionerà correttamente.

Bisogna poi istruire spumux a creare i sottotitoli a partire dalle immagini appena create. Un file come il seguente è sufficiente in questo caso:

<?xml version="1.0" encoding="utf-8"?>
<subpictures>
  <stream>
    <spu highlight="highlight.png" force="yes" start="00:00:00.00" select="select.png" image="buttons.png" autoorder="rows" autooutline="infer" outlinewidth="20">
      <button name="button01"/>
      <button name="button02"/>
    </spu>
  </stream>
</subpictures>

Il significato dovrebbe essere abbastanza chiaro. Notare però che nulla si è detto a spumux circa la posizione dei bottoni: spumux è infatti in grado, esaminando le PNG indicate, di ricavare la posizione dei bottoni. I parametri importanti sono autooutline=infer e outlinewidth=20, che istruiscono spumux ad esaminare un'area di 20 pixel in entrambe le direzioni intorno ad un potenziale bottone per determinare con sicurezza le posizioni dei bottoni.

spumux va ora invocato come segue:

spumux menu.xml < sfondo.mpg > menu.vob

In questo esempio, menu.xml è il nome del file XML visto sopra, sfondo.mpg è il filmato di sfondo creato nel paragrafo precedente, e menu.vob è il filmato risultante dalla sovrapposizione dei bottoni allo sfondo.

Generare il DVD[modifica]

Non resta che istruire dvdauthor a generare la struttura fisica del DVD. Avendo creato un menù con due soli bottoni, potremo creare solo un DVD con due titoli, oppure con un solo titolo diviso in due capitoli. Sceglieremo la prima situazione, solo a titolo di esempio.

Un file XML per istruire dvdauthor a creare un DVD con due titoli selezionabili tramite i bottoni del menù creato sopra può essere il seguente:

<?xml version="1.0" encoding="utf-8"?>
<dvdauthor dest="DVD" jumppad="1">
 <vmgm>
   <menus>
     <video aspect="4:3"/>
     <pgc>
       <button name="button01">jump title 1;</button>
       <button name="button02">jump title 2;</button>
       <vob pause="inf" file="./menu.mpg"/>
     </pgc>
   </menus>
 </vmgm>
 <titleset>
   <titles>
     <pgc>
       <vob file="./a.mpeg"/>
       <post>call vmgm menu 1;</post>
     </pgc>
   </titles>
 </titleset>
 <titleset>
   <titles>
     <pgc>
       <vob file="./b.mpeg"/>
       <post>call vmgm menu 1;</post>
     </pgc>
   </titles>
 </titleset>
</dvdauthor>

Vediamo ora le righe più rilevanti di questo stesso file separatamente.

<dvdauthor dest="DVD" jumppad="1">

L'attributo dest dell'elemento dvdauthor specifica la directory in cui sarà creata la struttura fisica del DVD-Video.

 <vmgm>
   <menus>
     <video aspect="4:3"/>
     <pgc>
       <button name="button01">jump title 1;</button>
       <button name="button02">jump title 2;</button>
       <vob pause="inf" file="./menu.vob"/>
     </pgc>
   </menus>
 </vmgm>

Questo blocco descrive il Video Manager Menu: si dichiara un aspect ratio di 4:3 e una sola program chain che specifica le azioni associate ai due bottoni, nonché il filmato da usare come sfondo (il file menu.vob ricavato nella sezione precedente).

I nomi dei bottoni devono corrispondere esattamente a quelli indicati nel file menu.xml usato nella sezione precedente per creare il filmato di sfondo con i bottoni. L'ordine non è rilevante, ma per evitare di fare confusione è una buona idea cercare di usare i nomi nello stesso ordine nei due file.

 <titleset>
   <titles>
     <pgc>
       <vob file="./a.mpeg"/>
       <post>call vmgm menu 1;</post>
     </pgc>
   </titles>
 </titleset>
 <titleset>
   <titles>
     <pgc>
       <vob file="./b.mpeg"/>
       <post>call vmgm menu 1;</post>
     </pgc>
   </titles>
 </titleset>

I due elementi titleset definiscono i titoli. Ognuno dichiara una sola program chain contenente un solo file MPEG-2 compatibile DVD-Video, nonché l'azione da eseguire una volta terminato il filmato. In questo caso, avendo un solo menù, precisamente il VMGM, la sola cosa sensata da fare è saltare ad esso una volta finito un filmato. Naturalmente si potrebbe far saltare al secondo titolo una volta finito il primo e viceversa, in modo che i due titoli siano riprodotti alternati finché non si interviene col telecomando, ma è una scelta soggettiva.

A questo punto, se il file XML descritto sopra si chiama dvd.xml, si invoca dvdauthor come segue:

dvdauthor -x dvd.xml

Se tutto è andato per il verso giusto, nella directory DVD si trova la struttura fisica del DVD-Video. Prima di inciderla è un'ottima idea provare il DVD con ogle, xine o altro, indicando al comando di aprire questa directory. Solo se il DVD si comporta come ci si aspettava si può incidere la directory sul supporto come indicato sopra.

Authoring avanzato di DVD video[modifica]

Una caratteristica veramente interessante del DVD video sono i menù e la possibilità di accedere direttamente a parti di un singolo film senza introdurre soluzioni di continuità, come avviene invece per filmati DivX che, essendo file distinti, mostrano vistose pause nel passaggio da un filmato all'altro. Realizzare menù anche semplici non è però operazione molto immediata.

spumux[modifica]

Praticamente l'unico applicativo che consente di creare menù con bottoni, immagini, audio e quan'altro è spumux, di solito installato insieme a dvdauthor. Lo stesso dvdauthor è predisposto per utilizzare i menù interattivi creati da spumux, col quale condivide parte delle specifiche XML. Quasi tutti gli applicativi, sia grafici che testuali, che cercano di facilitare le operazioni di authoring più complesse non fanno altro che invocare spumux, come d'altronde invocano dvdauthor per tutto il resto.

Strumenti a GUI: dvdstyler e qdvdauthor[modifica]

dvdstyler consente solo di creare, sia pure molto facilmente, dei menù con bottoni testuali, anche se versioni più recenti, ma non molto stabili al 2008, si spingono alquanto più in là. Ha una gradevole interfaccia GTK2, e può essere adeguato in situazioni non troppo complesse.

qdvdauthor è più completo, e consente di usare immagini per i bottoni, nonché di selezionare da ciascun filmato l'istantanea da usare per un bottone (cosa che dvdstyler fa di testa sua). Purtroppo ha un'interfaccia assai primitiva dal punto di vista grafico, anche se le funzionalità ci sono tutte e sono anche molto avanzate. Inoltre i bottoni, di qualsiasi tipo siano, devono essere posizionati a mano, e le funzioni di allineamento automatico di più bottoni obbligano a funambolismi con mouse e tastiera che portano facilmente a sbagliare e a perdere i nervi.

Un punto in più a favore di qdvdauthor è l'estrema trasparenza delle operazioni che effettua: per ciascuna operazione l'utente ha la possibilità di sapere esattamente quale comando (e con quali parametri) sarà eseguito per realizzare quella particolare operazione. Questo costituisce un prezioso aiuto per il principiante, che può sperimentare i singoli comandi e magari creare dei propri script per la shell più adeguati alle proprie esigenze.

Strumenti a CLI: dvdwizard[modifica]

Uno strumento molto elementare, ma molto valido è dvdwizard. La sintassi della riga di comando è davvero molto semplice e ben studiata. Se da un lato non è possibile stabilire dove e come andranno collocati i bottoni e le thumbnail, né quale istantanea di ciascun capitolo o titolo sarà usata per il relativo bottone, dall'altro è veramente facile ottenere un risultato soddisfacente. Ad esempio, il comando:

 dvdwizard -o mio-dvd -t "Primo film" chap1.mpg chap2.mpg -c0 
   -t "Secondo film" chaps*.mpg -c0 
   -T "Mia raccolta"

crea una directory mio-dvd pronta per growisofs (opzione -o mio-dvd): il DVD si presenterà con uno sfondo tratto da uno dei file chap1.mpg e chap2.mpg, e due bottoni testuali, ma ben rifiniti, dal titolo Primo film e Secondo film, sovrastati dal titolo dell'intero DVD (opzione -T "Mia raccolta"). L'opzione -t richiede per prima cosa una stringa come titolo, seguita da un numero qualsiasi di file MPEG, eventualmente usando caratteri jolly (cosa molto pratica, se i file sono ordinati già sul filesystem).

I due titoli saranno divisi in capitoli in base ai file MPEG indicati (opzione -c0): nel caso del primo film saranno solo due capitoli, ciascuno con una thumbnail tratta dal rispettivo file; per il secondo film, i capitoli corrisponderanno ai file chaps*.mpg, indipendentemente dal loro numero (ovviamente, però, ci sono delle limitazioni). Specificando un valore diverso da 0 per l'opzione -c si possono dividere i capitoli in modo diverso da quello semplice legato al numero di file.

Come qdvdauthor, anche dvdwizard lascia ampie e documentate traccia di quanto ha svolto, grazie ai file dvdwizard.log e dvdwizard.cmd: in essi si può scoprire come ha fatto ad ottenere un certo risultato. Inoltre alcune opzioni possono essere scritte in un file di configurazione (.dvdwizard/dvdwizard.conf, almeno su sistemi Debian): quando si è presa la mano, si può molto accelerare la creazione di nuovi DVD usando sempre le stesse opzioni.