Guida Come creare un DVD video con GNU/Linux usando solo comandi testuali

arthur

Utente Mitico
Autore del topic
5 Maggio 2009
8.204
0
Miglior risposta
0
Questa è una miniguida di base per transcodificare un filmato AVI in un DVD leggibile da un qualsiasi lettore DVD standard, su qualsiasi televisore.

Non pretende di essere una guida per la generazione di titoli, capitoli, menu e quant'altro. Con questo metodo otterrete un DVD molto semplice, che inizierà la riproduzione appena inserirete il disco nel lettore DVD e premerete il tasto "Play". Non avrete menu di sorta, tracce audio, video o sottotitoli da selezionare: è una transcodifica semplice e pulita, senza fronzoli o infiocchettature. Se volete creare un DVD con capitoli o menu questa guida non fa per voi.

Requisiti

Gli unici due programmi che dovrete avere sono ffmpeg e dvdauthor. Di seguito ho messo dei collegamenti alle homepage dei progetti e i metodi per ottenerli in distribuzioni Debian-like e Gentoo.


Moltissimi siti online diranno che avrete bisogno di molti altri strumenti per generare il vostro DVD video, ma per i DVD "fatti in casa" di solito si parte sempre da un unico filmato, e il formato più diffuso è il formato Microsoft AVI (Audio-Video Interleaved).

Con ffmpeg è comunque possibile convertire una vasta gamma di flussi video, tra cui WMV (Windows Media Video), flv (animazioni Adobe Flash), MPEG (in tutti i formati, ovvero DivX3/4/5, XviD, H.264, eccetera) e molti altri.
Quindi gli strumenti fondamentali sono solo i due elencati sopra.

Informazioni di base su FFmpeg

FFmpeg da solo merita più pagine per essere studiato per bene ed avere un risultato ottimale alla fine della transcodifica. Le cose più importanti da sapere sono:

  1. su che tipo di televisori andrete a vedere il DVD (se 4:3 o 16:9);
  2. la risoluzione del filmato che andremo a transcodificare.

I televisori più diffusi hanno un rapporto 4:3 o 16:9 (chiamati anche widescreen). Bisogna porre attenzione a queste informazioni per effettuare una transcodifica soddisfacente: un rapporto sbagliato potrebbe causare uno "stiramento" della risoluzione, originando una distorsione del flusso video.

Determinazione della risoluzione e del rapporto di un filmato

Per fare questo potete usare direttamente ffmpeg con qualche "artifizio" studiato ad hoc per filtrare solamente la risoluzione.

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

La risoluzione è l'insieme di queste due coordinate a cui, da ora fino alla fine dell'articolo, ci riferiremo con X come la coordinata "base" del rettangolo contenente l'output della lettura del filmato, e con Y come coordinata "altezza" dello stesso rettangolo. Entrambe sono misurate in pixel.
Il rapporto è invece un numero puro, il quoziente che si ottiene dividendo la coordinata X per la coordinata Y e permette di effettuare, a rapporto costante, uno zoom dello stream video senza distorcere il video stesso.

  • Ad esempio, un filmato che abbia risoluzione 720x400 ha un rapporto 1.8 (720/400, vicino a 16:9, ovvero 1.7777777...).
  • Viceversa, un filmato che abbia una risoluzione 512x384 ha un rapporto di 1.333333..., esattamente uguale a 4:3.

Riflessione sul rapporto

La risoluzione ed il rapporto sono due valori molto importanti per transcodificare un flusso AVI in un DVD video in modo da occupare più spazio possibile su schermo, per potersi godere al meglio il flusso video, e per non avere brutte sorprese come le coordinate X o Y eccessivamente "dilatate".
In ogni caso, se il rapporto è relativamente vicino a 4:3 o 16:9 (come l'esempio sopra, 1.8 è molto vicino a 1.777777...) un ridimensionamento non è indispensabile e l'effetto "stiramento" è a malapena percettibile.
Ci concentreremo quindi su rapporti generalmente "fuori standard" o molto diversi da 4:3 o 16:9.

Linea di comando fondamentale di FFmpeg

La transcodifica tramite FFmpeg si effettua sempre con la seguente linea di comando, leggermente modificata a seconda delle situazioni.

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

  • <file_input> è il flusso AVI in input.
  • -y sovrascrive eventuali flussi output preesistenti.
  • -target ntsc-dvd prepara ffmpeg per la generazione di un flusso MPEG1/2 non compresso per il video e a52 per il flusso audio, compatibili con i lettori DVD standard.
  • -sameq dice a ffmpeg che il flusso output deve essere della stessa qualità audio e video del flusso input.
  • <R> è il rapporto base, può essere 4:3 (su televisori 4:3) o 16:9 (su TV 16:9), o può essere omesso qualora si voglia conservare l'aspetto originale del filmato, o quando l'aspetto del filmato corrisponde all'aspetto degli schermi su cui verrà visto.
  • -s <risoluzione> è la risoluzione finale calcolata in base al rapporto, e non comprende le bande nere. È sempre espressa come XxY (640x480, 700x300, 512x384, 720x380...), in pixel.
  • -padtop <superiore> è l'ampiezza in pixel della banda nera superiore.
  • -padbottom <inferiore> è l'ampiezza in pixel della banda nera inferiore.
  • -padright <destra> è l'ampiezza in pixel della banda nera a destra.
  • -padleft <sinistra> è l'ampiezza in pixel della banda nera a sinistra.
  • <output> è il nome del file che conterrà il flusso video MPEG in uscita.

Note

  • La somma delle due bande (superiore e inferiore, o destra e sinistra) e della risoluzione dà come risultato una risoluzione tale da rispettare il rapporto 4:3 o 16:9.
  • Tutte le opzioni di ffmpeg possono essere messe in qualsiasi ordine, purchè <output> sia sempre l'opzione finale.
  • Il flusso output di ffmpeg per DVD video viene sempre salvato in formato MPEG non compresso. Personalmente consiglio sempre di salvarlo con estensione .mpg.

Esempi di calcolo della risoluzione

Il concetto fondamentale di questa pagina è riuscire a calcolare un numero di pixel necessari e sufficienti per creare delle bande nere laterali, o superiori e inferiori, in modo che il filmato abbia il rapporto giusto sul televisore su cui andremo a vedere il nostro film su DVD.

Una volta che si conosce il rapporto R = X / Y basta dividerlo per una delle coordinate massime raggiungibili dai rispettivi televisori, a seconda del rapporto stesso.

I valori di pixel delle bande nere devono SEMPRE essere multipli di 2. Se sono dispari potete renderli pari aumentandoli o diminuendoli di 1; la differenza di rapporto è pressoché impercettibile.

Esempio #1: R compreso tra 1.33... (4:3) e 1.77... (16:9)

Questo scenario va diviso in due casi.

1. TV 4:3: dividete 720 per il rapporto trovato, otterrete la coordinata Y mancante. Sottraetela a 576 e dividete il risultato per 2, ottenendo il valore di -padtop e -padbottom. Se Y si aggira intorno a 404 (da 400 a 408) il rapporto del filmato è 16:9 e il pad superiore e inferiore è 86.

2. TV 16:9: il rapporto va moltiplicato per 404, otterrete la coordinata X mancante. Questa va sottratta a 720 e il risultato va diviso per 2, ottenendo il valore di -padleft e -padright. Se X si aggira intorno a 540 (da 536 a 544) il rapporto del filmato è 4:3 e i pad laterali sono larghi 90 pixel.

Risoluzione esempio: 640x400 (R=1.6)

Per un TV 4:3 abbiamo 720 / 1.6 = 450; (576 - 450) / 2 = 63 (possiamo arrotondarlo a 64 o 62):

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Per un TV 16:9 abbiamo 404 * 1.6 = 646 (circa); (720 - 646) / 2 = 37 (possiamo arrotondarlo a 38 o 36):

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
.

Casi base

Si ha un caso base quando R è 16:9 e lo volete vedere su un televisore widescreen, oppure R è 4:3 e lo vedrete su televisori standard. In questo caso si possono omettere del tutto le opzioni -s, -padtop, -padbottom, -padleft, -padright e -aspect, e i relativi valori. Le invocazioni di ffmpeg diventano identiche e standard:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Riassumendo...

Potrebbe sembrarvi complicato. Anzi, è complicato. Però io trovo che sia il modo migliore di controllare l'output MPEG di FFmpeg, senza contare il fatto che potete ridimensionare a piacimento le bande nere in modo da renderne una più grande dell'altra, per lasciare più spazio sopra o sotto, o di fianco, per aggiungere effetti "esotici" ad un filmato (come titoli di testa, di coda, sottotitoli, descrizioni, didascalie...).

Authoring del DVD

Il particolare procedimento che permette di creare la struttura di un DVD video (con le classiche cartelle video_ts e audio_ts e tutti i file VOB e IFO) prende il nome di authoring, e un authoring testuale molto semplice si può fare con dvdauthor.

Una volta che abbiamo ottenuto la nostra transcodifica mpg con FFmpeg possiamo direttamente "dare in pasto" il filmato mpg a dvdauthor e fargli creare la struttura DVD video. Assicuratevi di avere sufficiente spazio su disco per la creazione della struttura; potrebbe richiedere una capacità residua variabile compresa tra 1GB e 8GB, dipende generalmente dalla qualità del filmato di partenza, dal bitrate, dai codec video e audio, dalla lunghezza dei flussi...

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

  • --title genera il titolo principale del DVD. In questa guida è coperta la generazione di un solo titolo.
  • -o <cartella> fa generare a dvdauthor la struttura del DVD video all'interno di <cartella>.
  • -f <mpg> prende in input il file .mpg creato da FFmpeg e ne fa l'authoring
.
La prima fase di authoring potrebbe impiegare un tempo relativamente lungo. In compenso, la seconda e ultima fase di authoring è pressoché istantanea e genera la sola tabella dei contenuti (TOC, Table of Contents) del DVD video, e si fa semplicemente con questa linea:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

  • -o <cartella> è la stessa cartella generata nel passaggio precedente; serve per dire a dvdauthor in quale struttura generare la tabella dei contenuti.
  • -T genera la tabella dei contenuti nella struttura DVD specificata
.
Al termine dell'authoring avrete una struttura DVD video pronta per essere trasferita su DVD.

E ora...?

L'ultima cosa che rimane da fare è generare il filesystem ISO9660 che verrà poi scritto sul DVD video. L'ultimo passo è molto semplice e lo descrivo in dettaglio in
Perfavore, Entra oppure Registrati per vedere i Link!
.

Fonte: Megalab