Conversioni video

Da GolemWiki.
Jump to navigation Jump to search

Conversioni e Programmi Video (in init tre).

"Alex.u - alessandro.ugolini@autistici.org"

Ingredienti
Mplayer, Mencoder, Transcode, lsdvd, dvdauthor, libdvdcss, Lame, Mjpegtools, image magick, ffmpeg, sox, gimp, lsdvd, toolame, vcdimager,(minimo indispensabile).

Per l'installazione degli ingredienti si utilizzano i vari gestori di pacchetti presenti in tutte le distro; per una personalizzazione e un eccellente rendimento e' preferibile compilare il tutto (cosa non da poco:->)."

Il presente doc serve a conoscere i vari termini usati nell'editing video, senza i quali sarebbe difficile usare ANCHE un programma con interfaccia grafica (a suon di clik).

Glossari

Formati video.

Mpeg1/2
Motion Process Expert Group - ES elementary stream senza info PS program stream audio-video-info
Avi
Formato file piu' che video. Audio Video Interleaved (alcuni riportano interlaced). Puo' contenere tutti i codec.
Mov
Contiene mpeg4 e acc audio.
Wmv
fanno tenerezza
OGM
Formato contenitore come l'avi. Puo' contenere qualsiasi codec A/V. Si possono aggiungere sottotitoli, menu. L'unico difetto e' che non e' ancora supportato dai riproduttori da tavolo.

Formati video (del televisore :^/)

Standard televisivi
ce ne sono 2 Pal e Ntsc con differenze di eimenzione, hz diversi, frame rate diverso
PAL
usato in europa e asia, dim. 720x576 area visibile 702x576, dim. del pixel 128x117 con aspect ratio di 1,094, frame rate 25 mezzi frame (50)
NTSC
usato in usa e japp, dim 720x486 area visibile 711x486, dim. del pixel 72x79 con aspect ratio di 0,911, frame rate 30 mezzi frame (60)
4/3
formato delle tv piu' comuni
4/3 nativo
formato video tipico dei cartoons
letter box
tipiche bande nere orizzontali, quando in una tv da 4:3 viene visualizzato un film in 16:9
16/9
formato televisivo wide screen
anamorfico
formato cinematografico leggermente allungato per essere adattato alle tv 16/9.
VistaVision
Formato cinematografico con dim 1.85:1
Cinemascope
Formato cinematografico con dim 2.35:1
RGB
descrizione del pixel R-red G-green B-blue tipica dei monitor
Aspect ratio
E' il rapporto che sta' tra la larghezza e l'altezza di un formato. (es 4:3 = asr 1,3333333)
Bitrate
Quantita' di informazioni espresse in bit in un secondo. (es. un file mp3 a 128Kbps = 1 secondo di musica = 128000 bit = 16000 byte al secondo)
YUV
descrizione del pixel Y-luminanza (giallo) U-crominanza (rosso-giallo) V-crominanza (blu-giallo)
dpi
pixel x pollice. Usato dagli scanner es 300 dpi (300 pixel in un pollice). Si puo' calcolare lo spazio utilizzato da un' immagine senza compressione. A4=21x29.7 cm 1-inch=2,54 cm profondita'=24 bit; (300dpi / 2.54 cm)^2 = 13950 pixel/cm^2 ; 21 x 29,7 x 13950 = 8700615 pixel totali; ogni pixel ha una profondita' di 24 bit e per fare un byte ci vogliono 8 bit - 8700615 x 24 / 8 = 26101845 byte overo 26 MB

Codecs Video

mpeg1
(vcd) Libreria mpeg1 es.
mpeg2
(dvd) codec per dvd estenzione solo video .m2v
opendivx
codec libero, produce immagini YV12 codifica veloce.
divx
implementata in mplayer (e mencoder) la versione libera di divx4 con il nome di divx4linux. Utilizza mpeg4
xvid
Creato dalla separazione di openivx e divx5. Ottimo codec. Utilizza mpeg4
lavc
No comment. IL Codec GNU per eccellenza supporta un po' di tutto. E di tutto un po' parecchio bene. Utilizza mpeg4 e molti altri.
ffmpeg
E' una signora libreria che contiene codec opensource in grado di decodificare una gran parte di formati video: mjpeg,rv10,divx3-4-5,mp41,wmv1-2,HuffYUV,wma Molto piu' veloce dei codec proprietari. ovviamente.

Codecs audio

mpeg layer 2
mp2 con extension .mpa
mpeg layer 3
mp3 files musicali
mpeg layer 1
vcd
wma
v1 v2 di win
ac3 dolby
decodifica hw e sw x piu' canali compreso il dolby surround. Audio dei dvd.
ogg vorbis
libero - libreria simile all'mp3 anzi meglio
pcm
non compresso

Supporti CD/DVD

CD
I CD normalmente contengono una sola sessione. E' possibile creare piu' sessioni, di grandezza diversa. Lo spazio utilizzabile e' di 700 Mb, esistono in commercio CD High Capacity in grado di contenere fino a 1Gb, come esistono miniCD di grandezze diverse
CD-audio
I CD audio contengono piu' sessioni, una per ogni traccia audio. Le tracce audio contengono dati stereo campionate a 44100 Hz con 16 bit.
DVD
Digital Video Disk, puo' contenere 120 min di video, con qualche accorgimento anche di piu' ;). Per i dati, lo spazio disponibile e' 4,4 Gb circa e non 4,7 come dicono i costruttori!
DVD-video
caratteristiche
possibilita' di memorizzare fino a 8 tracce audio 
possibilita' di inserimento fino a 32 sottotitolazioni
possibilita' di inserire riprese (angle) da piu' punti di vista
possibilita' di inserire menu e contenuti multimediali
possibilita' di inserire punti di biforcazione, in modo da creare storie con conclusioni multiple.
DVD-RAM
DVD riscrivibili da 2.5 Gb per faccia
DVD5
4.7 Gb per faccia, singolo strato il piu' diffuso e utilizzato, spazio dati 4.4 Gb
DVD9
8.5 Gb singola faccia doppio strato, i comuni dvd-video in vendita
DVD10
9.7 Gb doppia faccia singolo strato, disponibili 8.8 Gb
DVD18
17 Gb doppia faccia doppio strato
Region
Il codice (da1 a 6) che identifica i 5 continenti. L' europa e' il 2

Raccolta delle info

info di un DVD

Il programma per eccellenza per raccogliere info da un dvd e' lsdvd. Nella sua massima espressione

$ lsdvd -x

libdvdread: Using libdvdcss version 1.2.5 for DVD access

Disc Title: DVDVOLUME Title: 01, Length: 01:52:36 Chapters: 31, Cells: 32, Audio streams: 03, Subpictures: 01

Title: 02, Length: 00:00:06 Chapters: 01, Cells: 01, Audio streams: 03, Subpictures: 01

Title: 03, Length: 00:02:45 Chapters: 06, Cells: 01, Audio streams: 00, Subpictures: 00

Title: 04, Length: 00:00:00 Chapters: 01, Cells: 01, Audio streams: 03, Subpictures: 01

Title: 05, Length: 00:01:38 Chapters: 01, Cells: 01, Audio streams: 03, Subpictures: 00

Title: 06, Length: 00:02:45 Chapters: 06, Cells: 01, Audio streams: 03, Subpictures: 00

Title: 07, Length: 00:00:18 Chapters: 02, Cells: 02, Audio streams: 00, Subpictures: 00

Longest track: 1

il Title 1 e' il piu' lungo, quindi si presuppone sia il film vero e proprio. Con Mplayer si ottengono le info relative allo scale, alla durata e al tipo di file.

mplayer dvd://1 -v -vo null -ao null 

Aumentando l'opzione -v si inrementa il livello di verbosita' (-v -v -v) Ulteriori info si trovano con tcprobe

$ tcprobe -i /dev/dvd -T 1

Con l'opzione -d Numero 0-1-2 si incrementano le info.

Con questo comando si ha in risposta il bitrate giusto da impostare per un' eventuale codifica in mpeg4 e audio mp3 abr a 128 kbps

info di un file avi

Si puo' usare mplayer (come sopra del resto!)

$ mplayer film.avi -v

o tcprobe

$ tcprobe -i film.avi (mpg)

Durata del film - qualita' dell' mp3

Nel caso dell'output riportato il film dura 1 ora 52 minuti e 36 secondi ovvero in sec. (112*60)+36 = 6756

La creazione di un buon MP3 e' del bitrate di 128 Kbit ma si puo' ricorrere a riduzioni piu' drastiche tipo di 64 (la meta' dello spazio accupato da un normale mp3)

Mb di spazio occupato di un mp3 128 Kbit durata 6756 secondi

[(128*6756)/8]/1000 = 108,096

un mp3 di durata 6756 occupa 108 Mb a "bitrate Fisso"

N.B. ci rimangono solamente 593 Mb di un cd da 700 Mb per metterci il video.

Calcolo del bitrate video

Si calcola in base allo spazio a disposizione.

Nel nostro caso

592 Mb (ovvero)

592*1000*8=4,736,000 Kbit disponibili

e un secondo del film puo' contenere

4,736,000/6756 = 701,00651 Kbit

Cmq la soluzione piu' veloce si ottiene lanciando tcprobe con dvd inserito. Il calcolo del bitrate video lo fa da solo impostando di default il codec audio mp3 a 128 kbps

$ tcprobe -i /dev/dvd 

import frame size: -g 720x576 [720x576] aspect ratio: 4:3 (*) frame rate: -f 25.000 [25.000] frc=3 audio track: -a 0 [0] -e 48000,16,2 [48000,16,2] -n 0x2000 [0x2000] audio track: -a 1 [0] -e 48000,16,2 [48000,16,2] -n 0x2000 [0x2000] [tcprobe] V: 67500 frames, 2700 sec @ 25.000 fps [tcprobe] A: 42.19 MB @ 128 kbps [tcprobe] CD: 650 MB | V: 607.8 MB @ 1888.4 kbps [tcprobe] CD: 700 MB | V: 657.8 MB @ 2043.8 kbps [tcprobe] CD: 1300 MB | V: 1257.8 MB @ 3907.9 kbps [tcprobe] CD: 1400 MB | V: 1357.8 MB @ 4218.6 kbps

Ritaglio alias Crop

con mplayer si puo' calcolare il ritaglio

$ mplayer dvd://1 -vop cropdetect -vo null -ao null

aggiungerei anche un capitolo in modo che sia parte interna del film

$ mplayer dvd://1 -chapter 3 -vop cropdetect -vo null -ao null

[-'bla'<bla>'bla']

crop area: X: 4..719 Y: 0..575 (-vf crop=716:576:4:0)28% 1,2% 0 0 41%

crop area: X: 4..719 Y: 0..575 (-vf crop=716:576:4:0)28% 1,2% 0 0 43%

ci interessa solo..........................^^^^^^^^^^^

facciamo una prova con un rettangolo bianco

$ mplayer dvd://1 -vop rectangle=716:576:4:0

oppure direttamente ritagliato

$ mplayer dvd://1 -vf crop=716:576:4:0

Prima ho usato mplayer con l'opzione -vop e ora -vf. Il manuale dice che -vop e' obsoleto e con -vf video filters si ottengono i soliti risultati

Funzionamento del crop - video

supponiamo la schermo 720 x 576

+-----------------------W-----------------------+ | | | | | | Z X | | | | | | +-----------------------Y-----------------------+

-vf crop=X:Y:Z:W

Attenzione che "X" e "Y" dipendono da "W" e "Z" supponiamo Z = 20 ; X =< [720-20] poiche' il crop taglierebbe una parte dello schermo inesistente

interlaced

I video creati per essere visti alla TV sono interlacciati, cioe' creati da mezzi frame a righe dispari e pari, quindi, durante la visione su un pc o durante una codifica e' opportuno deinterlacciarli con un video filtro.

$ mplayer videointerlac.vob -vf pp=li

tra le opzioni di pp : lb-lineare blend li-lineare interpolato ci-cubico interpolato

Trasformazioni video

Rippare DVD.

L'operazione detta rippaggio consiste nel copiare il contenuto di un dvd-video sull'HD.

Per ripparlo si usa mencoder, vobcopy o transcode.

$ mencoder dvd://n -dvdangle n -chapter n -ovc copy -oac copy -o film.avi

Se si vuol rippare il film intero toglie l'opzione -chapter. Sid e' l'indice dei sottotitoli. Attenzione a dove viene lanciato che non ci siano nei paraggi file tipo frameno.avi :) oppure

$ vobcopy -l

Per mettere i sottotitoli in un file separato

$ mencoder dvd://n -dvdangle n -chapter n -vobsubout film -vobsuboutindex 
0 -sid 0 -ovc copy -oac copy -o film.avi

creando cosi due file film.idx e film.sub (conviene chiamarli come il file video, in modo che mplayer li carichi semplicemente con la 'v'). Con -sid si sceglie la lingua dei sottotitoli. Con vobsuboutindex si da un indice al file sottotitoli creato. All'interno dello stesso file si possono aggiungere piu' lingue, basta ripetere il processo e cambiare i numeri di vobsuboutindex e sid.

Encoding DVD

L'operazione di encoding consiste nel trasformare il dvd rippato, il dvd dal suo device o un qualsiasi file video in un altro formato video tramite l'uso di un codec. (come divx4 o lavc)

1° passaggio

Non e' proprio il primo passaggio del codificatore... con questo passaggio si crea un file frameno.avi contenente solo l'audio e alla fine dell'output, delle informazioni relative al bitrate video da usare

# mencoder film.avi -oac mp3lame -lameopts abr:br=128 -aid 130 
-af volume=2:sc -ovc frameno -o frameno.avi

da un risultato di calcolo tipo questo

[...]

Pos:2613,6s 65344f (100%) 135fps Trem: 0min 56mb A-V:0,038 [0:175]

Writing AVI index...

Fixing AVI header...

Recommended video bitrate for 650MB CD: 1897

Recommended video bitrate for 700MB CD: 2058

Recommended video bitrate for 800MB CD: 2379

Recommended video bitrate for 2 x 650MB CD: 3983

Recommended video bitrate for 2 x 700MB CD: 4304

Recommended video bitrate for 2 x 800MB CD: 4946

Video stream: 0,800 kbit/s (100 bps) size: 261356 bytes 2613,560 secs 65344 frames

Audio stream: 174,997 kbit/s (21874 bps) size: 57182184 bytes 2614,080 secs

2° passaggio

Nel secondo passaggio si riprende dalla dir corrente il frameno.avi con -oac copy, e diamo il pass=1 al codec divx (nelle opzini), creera' un file di log che verra' in seguito letto dall'opzione pass=2. Il risultato finale viene cancellato, ci interessa solo il file di log

$ mencoder film.avi -oac copy -ovc divx4 -divx4opts :br=2066:pass=1 -vf   
pp=de,crop=716:576:4:0,scale=480:-2 -aid 130 -o "/dev/null" 

oppure con il mitico lavc

$ mencoder filmavi -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2066:
vpass=1 -vf pp=li,crop=716:576:4:0,scale=480:-2 -aid 130 -o "/dev/null"

3° passaggio

ultimo passaggio, quindi creazione del file avi

$ mencoder film.avi -oac copy -ovc divx4 -divx4opts :br=2066:pass=2 -vf
pp=de,crop=716:576:4:0,scale=480:-2  -aid 130  -o "minonnafaleprove.avi" 

ricodarsi di cancellare i residui

$ rm frameno.avi 
$ rm divx2pass.log 

con lavc

$ mencoder film.avi -oac copy -ovc lavc -lavcopts
vcodec=mpeg4:vbitrate=2066:vpass=2 -vf pp=li,crop=716:576:4:0,scale=480:-2 
-aid 130 -o film.avi

Rippare e encodare con un solo passaggio

Se le dimenzioni finali del file video possono essere superiori al Gb, e' conveniente rippare con un solo passaggio, risparmiando un sacco di tempo :)

$ mencoder dvd://1 -aid 129 -sid 1 -vobsubout film -oac mp3lame -lameopts
abr:br=128 -af  volume=2:sc -ovc divx4 -divx4opts :br=2066 -vf
pp=ci,crop=716:576:4:0,scale=600:-2 -o film.avi 

In dettaglio

mencoder dvd://1 # dice a mencoder di leggere il dvd al title 1

-aid 129 # seleziona la lingua - un alternativa e' -alang it per selezionare lingua italiana

-sid 1 -vobsubout film # seleziona la traccia 1 dei sottotoli che in questo es. e' la traccia in italiano. Vobsubout specifica il file di destinazione. NB se non viene specificato vobsubout, i sottotitoli vengono "cuciti" sul video stesso e non e' possibile toglierli

-oac mp3lame -lameopts abr:br=128 # oac usa mp3lame come codec audio, average bitrate a 128 kbps

-af volume=2:sc # audio filters, aumento il volume di 2

-ovc divx4 -divx4opts :br=2066 # uso il codec divx4 con bitrate 2066

-vf pp=ci,crop=716:576:4:0,scale=600:-2 # video filters, pp=ci deinterlaccio il film con cubic-intepolar xche' e MOLTO interlacciato, ritaglio il video con crop, lo riscalo da 716 x 576 a 600 x "il calcolo lo fa lui col l'opzione -2"

-o film.avi # Nome del file finale

nel caso di lavc basta sostituire la riga del codec video con:

-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2066

Creare una piccola anteprima

Per controllare i settaggi senza dover aspettare delle ore si puo' creare una piccola anteprima tipo questa:

$ mencoder dvd://1 -aid 129 -sid 1 -ss 00:10:00 -endpos 00:01:00 -vobsubout 
film -oac mp3lame -lameopts abr:br=128 -af  volume=2:sc -ovc divx4
-divx4opts :br=2066 -vf pp=ci,crop=716:576:4:0,scale=600:-2 -o film.avi 

l'opzione -ss 00:10 dice di iniziare la lettura dopo 10 minuti, -endpos dice di fermarsi dopo 1 minuto di lettura il risultato e' una anteprima di un minuto 10 minuti dopo l'inizio del film.

Manipolare file video

Tagliare in due parti un file avi

Nel pacchetto transcode sono presenti numerosi eseguibili per la modifica degli avi. Cio' non toglie che si possa usare mencoder. Cmq per spezzare un file avi si usa avisplit:

$ avisplit -s 700 -i film.avi 

spezza l'avi in file da 700 Mb

$ avisplit -i film.avi -c -o out.avi -t 00:10:00-00:11:00,00:13:00-00:14:00

spezza e unisce l'avi dal decimo all'undicesimo minuto e lo incolla (-c) con il pezzo dal tredicesimo al quattordicesimo

Incollare due avi

avimerge e' l'ideale

$ avimerge -o filmone.avi -i film1.avi film2.avi film3.avi

oppure incollare una traccia audio

$ avimerge -o filmconaudio.avi -i film.avi -p audio2.avi -a 1


Incollare due video NON avi

$ mencoder video_divisi_00* -o ../video_completo.mpg -oac copy -ovc copy


Creare audio2.mpa da un mp3 e' un buona idea ...

$ transcode -i song.mp3 -x null,mp3 -g 0x0 -y raw -a 1 -o audio2.avi -u 50

Risincronizzare audio e video

usando avisync

$ avisync -i fim.avi -o out.avi -n -10

ritarda l'audio di 10 frames correggere un indice danneggiato

I risultati migliori li ho ottenuti con mencoder

$ mencoder film.avi -ovc copy -aoc copy --forceidx -o indicecorretto.avi


Codificare un vecchio video in un nuovo formato

Per salvare spazio su disco può essere utile ricodificare vecchi video con codec moderni es. h264 per il video e faac per l'audio.

ffmpeg -i vecchio_video.avi -acodec libfaac -ab 96k -vcodec libx264 -b:v 600k -threads 2 nuovo_video.mp4


Scrivere su un file di testo l'header di un avi

Utile per il debug aviindex -i film.avi -o film.index

DVD video

Copiare un dvd5

Nel caso si voglia duplicare un dvd5 con una copia 1:1, si puo' benissimo usare un programma di masterizzazione come k3b e fare un copia incolla da dvd sorgente a dvd destinazione, oppure al volo

$ dd if=/dev/cdrom of=/dev/dvdrw

o

$ growisofs -Z /dev/dvdrw=/dev/dvdrom

e chi piu' ne ha piu' ne metta.

Copiare un DVD9

Per dvd5 si intende un dvd da 4,7 Gb ovvero 120 min di film. Per fare una copia 1:1 occorre avere il dvd sorgente di 4,7 gb , cosa non da poco visto che i normali dvd a noleggio sono tutti di durata superiore (dvd9).

Occorre cosi' togliere il superfluo, come i contenuti speciali, gli audio extra ecc.. e rientrare nei 120 min. Se il film e' di durata superiore, si puo' ricorrere a 2 stratagemmi. 1 acquistiamo un dvd9 :) e facciamo la copia, 2 requantiziamo il film (non sempre il risultato funziona su tutti i lettori dvd da tavolo)

Il DVD sorgente va comunque "smontato", cosa non difficile ma che richiede molto tempo. Per semplificare il tutto esiste uno script in perl in grado di facilitare questo compito (NB il piu' delle volte funziona!). Da http://james.nontrivial.org/projdvd.htm e' possibile scaricare dvd2iso.pl, l'utilizzo e' pittosto semplice. Editare lo script e inserire la directory di lavoro che abbia almeno 20 Gb di spazio libero, inserire il dvd e lanciare

$ ./dvd2iso.pl -c -D -a 2 -k -v 5000

A questo punto dentro la directory di lavoro abbiamo una dir chiamata out contenente i vob, pronti da essere trattati con dvdauthor e masterizzati, nel caso in cui lo spazio sia ridimenzionato rispetto all'originale.

Nel caso il file .vob sia comunque piu' grande del necessario, si puo' requantizzare a mano anziche' rilanciare lo script con un bitrate piu' basso, basta estrarre il flusso video

$ tcextract -i out/nomefile.vob -x mpeg2 -a 1 ottenendo cosi' 2 file .m2v mpa. E' il momento di requantizzare

Nel pacchetto transcode si trova l'eseguibile tcrequant. Per calcolare la requantizzazione risolvere la seguente formula fattore di requant = (grandezza del filevideo .m2v / (grandezza del supporto - grandezza del file audio .mpa)) * 1.04 con il numeretto ottenuto si lancia tcrequant

$ tcrequant -i file.m2v -o film.m2v -f fattore di requant a questo punto ricreiamo il file .vob, vedere la sezione multiplexaggio

da Divx a DVD5

Prendere le info

$ tcprobe -i film.avi alla riga: ... [avilib] A: 44100 Hz, format=0x55, bits=0, channels=1, bitrate=128 kbps ... Attenzione al bitrate audio, non puo' essere superiore dell'originale (128). X la specifica dvd deve andare da 32 kbps a 192 kbps per audio mono, 64 kbps a 384 kbps per audio stereo

  1. transcodifica

$ transcode -i film.avi -V -y mpeg -F d -E 44100 -b 128 -o primodvd

creando cosi' 2 file primodvd.m2v primodvd.mpa. Ultimamente frugando nel man di transcode ho scoperto questo:

$ transcode -i film.avi -V -y mpeg -F d -E 44100 -b 128 --export_prof dvd-pal -o primodvd

L'opzione export prof si preoccupa di rendere l'output totalmente compatibile con lo standard DVD

  1. multiplexaggio

unione di primodvd.pmpa primodvd.m2v

$ tcmplex -o film.vob -i primodvd.m2v -p primodvd.mpa -m d

supponiamo di avere un altro file audio in un altra lingua (primodvdeng.mpa), si puo' aggiungere con:

$ tcmplex -o film.vob -i primodvd.m2v -p primodvd.mpa -s primodvdeng.mpa -m d

  1. trasformazione in formato dvd

con dvdauthor da riga, al volo. Creare due dir A e B, dentro A metterci il film.vob o i vari film.vob. Dopodiche'

$ dvdauthor -o B A/*

in questo modo si mettono tutti i vob di A nella dir di B con i relativi .ifo .bup.

$ dvdauthor -T -o B

Crea la tabella dei contenuti del DVD. Si puo' procedere alla masterizzazione.

Creazione di un menu

  1. Scegliere un immagine

L'immagine di sfondo deve essere di formato 4:3. Con gimp 2, dal menu nuovo si puo impostare nuova immagine PAL, incollarci dentro qualsiasi tipo di disegno e salvare con il formato png o jpeg. Alla solita immagine aggiungere un layer trasparente e disegnare i pulsanti di attivazione. Successivamente verra' salvata in modalita' 4 colori (salvarla 2 volte in 2 colori diversi). Ottenendo cosi 3 immagini : menu.png select.png high.png.

  1. L'audio

Si puo' creare una traccia audio con una musichetta oppure una traccia audio vuota, poiche' e' indispensabile avere una traccia audio.

$ mplayer -ao pcm /arc/mp3/musichetta.mp3 

trasformo un mp3 in un wav (audiodump.wav)

$ mp2enc -r 48000 -o menu_audio.mpa < audiodump.wav 

trasformo un wav in un mp2 ottenendo il menu audio. Oppure una traccia audio vuota con un semplice:

$ dd if=/dev/zero bs=4 count=1920 | toolame -b 128 -s 48 /dev/stdin menu_audio.mpa
  1. Un filmato con menu.png

Con il file menu.png e' necessario creare un filmato ovvero uno stream MPEG2 formato PAL 720x576

$ pngtopnm menu.png | ppmtoy4m -n 50 -r -F 25:1 -A 128:117 -I p |mpeg2enc -n p 
-f 8 -o menu_video.m2v 

Nel caso l'immagine sia in formato jpeg

$ jpeg2yuv -n 50 -I p -f 25 -j menu.jpeg | mpeg2enc -n p -f 8 -o menu_video.m2v
  1. Unire il filmato con l'audio

Si usa mplex come sempre!

$ mplex -f 8 -o menu.mpg menu_video.m2v menu_audio.mpa 
  1. Creazione dei bottoni animati

Creare il file xml per spumux (e' nel pacchetto dvdauthor) vedere l'esempio spumux.xml

<subpictures>
<stream>
<spu start="00:00:00.0" end="00:00:00.0" highlight="high.png" select="select.png"
force="yes" autoorder="columns" autooutline="infer"> </spu>
</stream>
</subpictures>


All' interno del tag spu sono presenti le immagini contenenti i bottoni in png indicizzato a 4 colori, highligh sta ad indicare l'attivazione al passaggio del mouse e select il colore al momento della pressione. Start ed End sono uguali, sta ad indicare un loop del menu video. Autoorder, dice a spumux che i pulsanti sono ordinati per colonne.

$ spumux spumux.xml < menu.mpg >menu_finito.mpg 

Con questo il menu con i pulsanti e' fatto.

Inserire i sottotitoli.

Il problema piu' grande e' estrarre i sottotitoli dal dvd in formato .srt. Il programma subrip, nato x win, e' gpl e gira bene in emulazione con wine.

L'utilizzo e' semplicissimo, dopodiche creare un nuovo file xml che servira' per inserire i sottotitoli.

<subpictures>
<stream>
<textsub filename="film.sub" characterset="ISO8859-15" fontsize="28.0"
font="arial.ttf" horizontal-alignment="left" vertical- alignment="bottom"
left-margin="30" right-margin="60" top-margin="20" bottom-margin="30"
subtitle-fps="25" movie-fps="25" movie-width="720" movie-height="574" />
</stream>
</subpictures>
 

Inserire il font arial.ttf nella directory .spumux della propria home. Se non esiste, crearla. e per unire al video

$ spumux sub.xml < film.mpg > film_sottotitolato.mpg

Creazione DVD finale con dvdauthor

Ancora un file xml contenente i tag x le specifiche, stabilire capitoli, pul santi, e menu.

<dvdauthor dest="dvd/" >
<vmgm>
<menus lang="it" >
<video format="pal" aspect="4:3" />
<subpicture lang="it" />
<pgc>
<vob file="menu.mpg" pause="inf"/>
<button>jump title 1;</button> 
<button>jump title 2;</button>
</pgc>
</menus>
</vmgm>
<titleset>
<titles>
<pgc>
<vob file="film1.mpg"/>
<post>call menu;</post>
</pgc>
<pgc>
<vob file="film2.mpg"/>
<post>call menu;</post>
</pgc>
</titles>
</titleset>
</dvdauthor>


Per creare piu' capitoli aggiungere alla voce vob del film l'opzione chapter es:

<vob file="film.mpg"chapters="0:10:00.000,0:20:00.000 />

Mettere menu, file xml e file video tutto nella stessa directory

$ dvdauthor -x tuttoillavoro/film.xml

Masterizzazione

Si puo' creare un' immagine con mkisofs, oppure masterizzare il contenuto della dir di lavoro con growisofs

$ mkisofs -dvd-video -v -o dvd.iso cartella con dvd

$ growisofs -Z /dev/hdc -dvd-video /home/utente/tuttoillavoro/DVD

Creare VCD

Che cosa?

avendo un avi per le mani si puo' trasformare in un vcd (attenzione alla durata)

Come?

Si puo' redigere l'avi al codec yuv4mpeg della famiglia di mjpeg tool. creando una named pipe dal nome dell output di mplayer si lancia il programma Oppure la stessa cosa con transcode. Un esempio:

$ mkdir filmout

$ mkdir filmout.mpa

si creano 2 named pipe

$ transcode -i film.avi -V -y yuv4mpeg,mpeg -b 224 -Z 352x288 -o filmout -k -C 2

con questa roba transcode prende l'avi e spedisce il flusso video alla named pipe filmout e il flusso audio alla named pipe filmout.mpa. Su una consolle diversa digitiamo:

$ cat filmout.mpa > film.mpa

cosi copiamo il contenuto della pipe nel file audio .mpa

$ cat filmout | mpeg2enc -f 1 -n p -o film.m1v

mplex

Con il programma mplex si incolla audio e video.

$ mplex -f 1 -o film.mpeg film.m1v film.mpa

vcdimager

e per renderlo vcd a tutti gli effetti e prepararlo alla masterizzazione si usa vcdimager

$ vcdimager -l "boia de!" -p film.mpeg

ottenendo = videocd.bin (immagine binaria) = videocd.cue (indice delle tracce)

Nella dir /usr/share/doc/mplayer/examples/ c'e' un file di nome mencvcd.gz. E' uno script che fa la stessa roba utilizzando mencoder. E' obbligatorio provarlo!

Masterizzalo!

$ cdrdao write --speed 4 --device 0,0,0 videocd.cue