Creare un DVD-Video partendo da delle immagini

Da TondoWiki.

Pre-Bozza. Il seguente articolo non ha ancora raggiunto lo stato di Bozza. Ciò significa che molto probabilmente è stato redatto semplicemente annotando i passi principali o altre cose che solo l'autore potrebbe comprendere. E' quindi da considerarsi non solo incompleto ma molto probabilmente anche impreciso e non formalmente corretto. Per questi motivi è in dubbio l'autorevolezza stessa del documento.

Indice

[modifica] Pre Requisiti

Installabili utilizzando i repository di debian-multimedia, ad aggiungere ad /etc/apt/sources.list

  • ffmpeg
  • codec video/audio (AC3)
  • dvdrecord

[modifica] Requisiti

  • dir2slideshow
  • dvd-slideshow
  • dvd-menu
  • Patch (nel caso di errori durante la codifica)

[modifica] Iniziamo

[modifica] Passo 0: dir2slideshow

# dir2slideshow -n 'Prima scritta' -t 5 -c 2 -a Song.mp3 -p prova_dvd/

Genera un file di testo con le istruzioni che serviranno a dvd-slideshow

  • Frutto dell'opzione -p che genererà un DVD nel formato PAL.
pal=1
  • Sfondo
background:0::black
background:1
  • "Prima scritta" in bianco su fondo nero. Dissolvenza in comparsa/scompara di 1 secondo e durata della scritta di 5 secondi (dissolvenze inclusa)
fadein:1
title:5:Prima scritta
background:0::black
fadeout:1
  • "Seconda scritta" esattamente come la prima.
fadein:1
title:5:Seconda scritta
background:0::black
fadeout:1
  • Canzone di sottfondo con dissolvenza iniziale di 2 secondi e finale di altri 2 secondi.
    • Se il video è più lungo della canzone, viene introdotto silenzio fino alla fine.
    • Se la canzone è più lunga del video, viene troncata la canzone.
  • Quindi se vogliamo la stessa canzone come colonna sonora di tutto il video, dobbiamo ripeterla N volte, sforando anche la durata del video, tanto verrà troncata in automatico alla fine del video.
background:2
/mnt/foto/prova_dvd/Song.mp3:1:fadein:2:fadeout:2
/mnt/foto/prova_dvd/Song.mp3:1:fadein:2:fadeout:2
/mnt/foto/prova_dvd/Song.mp3:1:fadein:2:fadeout:2
/mnt/foto/prova_dvd/Song.mp3:1:fadein:2:fadeout:2
/mnt/foto/prova_dvd/Song.mp3:1:fadein:2:fadeout:2
  • Dissolvenza in ingresso sulla prima foto
fadein:1
/mnt/foto/prova_dvd/img_0080.jpg:5
crossfade:2
/mnt/foto/prova_dvd/img_0081.jpg:5
crossfade:2
/mnt/foto/prova_dvd/img_0082.jpg:5
crossfade:2
/mnt/foto/prova_dvd/img_0083.jpg:5
crossfade:2
/mnt/foto/prova_dvd/img_0084.jpg:5
crossfade:2
/mnt/foto/prova_dvd/img_0085.jpg:5
crossfade:2
/mnt/foto/prova_dvd/img_0086.jpg:5
crossfade:2
/mnt/foto/prova_dvd/img_0087.jpg:5
crossfade:2
/mnt/foto/prova_dvd/img_0088.jpg:5
crossfade:2
/mnt/foto/prova_dvd/img_0089.jpg:5
fadeout:1
background:1
fadein:1
title:5:Realizzato da Tondo
background:0::black
fadeout:1

Che io ho modifcato alla fine per i "titoli di coda".

[modifica] Passo 1: dvd-slideshow

# dvd-slideshow -f Il_mio_primo_DVD.txt

Visto che ho aggiunto troppi file audio, ci ha pensato lui a saltarli e utilizzare solo i necessari...

[dvd-slideshow]#####################################
[dvd-slideshow] Working on track 1 audio file 0
[dvd-slideshow] /mnt/foto/prova_dvd/Song.mp3
[dvd-slideshow] Volume adjust=0.95
[dvd-slideshow] Original audio track length=0:3:46.717
[dvd-slideshow] Fade in time=0:0:2.000 Fade out time=0:0:2.000
sox: Fade: warning: End time passed end-of-file. Padding with silence
[dvd-slideshow] Adding 0:0:1.000 to beginning of audio file
[dvd-slideshow] This audio plays in slideshow from 0:0:1.000 to 0:3:47.717
[dvd-slideshow] ###############
[dvd-slideshow] Working on track 1 audio file 1
[dvd-slideshow] /mnt/foto/prova_dvd/Song.mp3
[dvd-slideshow] Volume adjust=0.95
[dvd-slideshow] Original audio track length=0:3:46.717
[dvd-slideshow] Fade in time=0:0:2.000 Fade out time=0:0:2.000
sox: Fade: warning: End time passed end-of-file. Padding with silence
[dvd-slideshow] This audio plays in slideshow from 0:3:47.717 to 0:7:34.434
[dvd-slideshow] ###############
[dvd-slideshow] Working on track 1 audio file 2
[dvd-slideshow] /mnt/foto/prova_dvd/Song.mp3
[dvd-slideshow] Volume adjust=0.95
[dvd-slideshow] Original audio track length=0:3:46.717
[dvd-slideshow] Fade in time=0:0:2.000 Fade out time=0:0:2.000
sox: Fade: warning: End time passed end-of-file. Padding with silence
[dvd-slideshow] This audio plays in slideshow from 0:7:34.434 to 0:11:21.151
[dvd-slideshow] ###############
[dvd-slideshow] Working on track 1 audio file 3
[dvd-slideshow] /mnt/foto/prova_dvd/Song.mp3
[dvd-slideshow] Volume adjust=0.95
[dvd-slideshow] Original audio track length=0:3:46.717
[dvd-slideshow] Fade in time=0:0:2.000 Fade out time=0:0:2.000
[dvd-slideshow] This audio plays in slideshow from 0:11:21.151 to 0:12:15.000
[dvd-slideshow] ###############
[dvd-slideshow] Skipping un-needed audio file 4
[dvd-slideshow] ###############
[dvd-slideshow] Skipping un-needed audio file 5
[dvd-slideshow] ###############
[dvd-slideshow] Creating ac3 audio...
[dvd-slideshow]############################################################
[dvd-slideshow] Multiplexing audio and video...
[dvd-slideshow]############################################################

[modifica] Passo 2: dvd-menu

Se abbiamo un solo video conviene fare un DVD senza menu, che una volta inserito nel lettore parta senza mostrarci menu "inutili".

# dvd-menu -nomenu -f Il_mio_primo_DVD.xml

Se invece vogliamo mostrare un menu, procediamo come segue.

# dvd-menu -t 'Primo tempo' -t 'Secondo tempo' -f Primo_tempo.xml -f Secondo_tempo.xml -n '- Il mio video -'

[modifica] Passo 3: mkisofs

# mkisofs -dvd-video -udf -o primo-dvd.iso dvd_fs
I: -input-charset not specified, using iso-8859-15 (detected in locale settings)
 45.42% done, estimate finish Sun Dec  2 16:10:56 2007
 90.92% done, estimate finish Sun Dec  2 16:10:56 2007
Total translation table size: 0
Total rockridge attributes bytes: 0
Total directory bytes: 4096
Path table size(bytes): 42
Max brk space used 0
11008 extents written (21 MB)

[modifica] Errore

Utilizzando dvd-slideshow alla fine di tutto potreste incappare in un errore simile a questo anche se avete i codec ac3 e apparentemente è tutto ok. Questo è dovuto ad una opzione di ffmpeg sulla codifca audio che ora prevedere di esplicitare la unità di misura del bitrate.

Output #0, ac3, to '/home/tondo/projet_dvd/dvd-slideshow_temp_7554/audio1.ac3':
  Stream #0.0: Audio: ac3, 48000 Hz, 5:1, 0 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
Error while opening codec for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height
[dvd-slideshow] ERROR during ffmpeg execution!
[dvd-slideshow] see /home/tondo/projet_dvd/dvd-slideshow.log for details
[dvd-slideshow] cleanup...

Effettuate la patch come scritto in fondo alla pagina. Dopo di che tutto dovrebbe filare liscio.

Potrebbe però presentarsi lo stesso problema nell'utilizzo di dvd-menu e basta fare la stessa cosa, ovvero

[modifica] Patch da adottare

[modifica] dvd-slideshow

  • Modificare il file /usr/bin/dvd-slideshow con un normale editor di testo (Nano/Vim/Vi o altri):
    • Cercare la sezione sottostante intitolata setup audio parameters
    • E aggiungere una k al parametro audio_bitrate
    • audio_bitrate=224 diventa audio_bitrate=224k e così anche per audio_bitrate=128 e audio_bitrate=192.
    • Dovrebbe trattarsi delle linee 3989, 3997 e 4004 rispettivamente.
# setup audio parameters
if [ "$vcd" -eq 1 ] ; then
        ac3=0  # force mp2
        audio_bitrate=224k
        video_bitrate='1152'
        audio_sample_rate=44100
        mplex_type=1
        aspect_ratio="4:3"
        mpeg2enc_params="-v 0 -4 2 -2 1 -H -b 1150 -n n -s -f $mplex_type"
elif [ "$svcd" -eq 1 ] ; then
        ac3=0  # force mp2
        audio_bitrate=128k
        video_bitrate='4500'
        audio_sample_rate=44100
        mplex_type=4
        aspect_ratio="4:3"
        mpeg2enc_params="-v 0 -4 2 -2 1 -H -b 2500 -n n -s -f $mplex_type"
else
        audio_bitrate=192k
        video_bitrate='3800'
        audio_sample_rate=48000
        mplex_type=8
        if [ "$widescreen" -eq 1 ] ; then
                aspect_ratio="16:9"
                mpeg2enc_params="-v 0 -a 3 -q 4 -4 2 -2 1 -s -M 0 -f $mplex_type"
        else
                aspect_ratio="4:3"
                mpeg2enc_params="-v 0 -a 2 -q 4 -4 2 -2 1 -s -M 0 -f $mplex_type -E -N -R 2"
        fi
fi

[modifica] dvd-menu

  • Cercare le diciture audio_bitrate e come sopra aggiungere una k
if [ "$vcd" -eq 1 ] ; then
        # setup audio parameters
        ac3=0
        audio_bitrate=224k
        audio_sample_rate=44100
        mplex_type=1
        ffmpeg_target='vcd'
elif [ "$svcd" -eq 1 ] ; then
        # setup audio parameters
        ac3=0
        audio_bitrate=224k
        audio_sample_rate=44100
        mplex_type=4
        ffmpeg_target='svcd'
else
        audio_bitrate=128k
        audio_sample_rate=48000
        mplex_type=8
        ffmpeg_target='dvd'
fi
  • cercare l' IF sottostante (basta cercare "192") e aggiungere una k anche qua.
       if [ "$ac3" -eq 1 ] ; then
               checkforprog ffmpeg
               echo "[dvd-menu] Creating ac3 audio..."
               check_rm "$tmpdir/audio.ac3"
               ffmpeg -i "$tmpdir/audio.wav" -vn -y -ab 192k -acodec ac3 -ar ... ... ...
               if [ "$fadein" -eq 1 ] || [ "$fadeout" -eq 1 ] ; then
                       ffmpeg -i "$tmpdir/fade_audio.wav" -vn -y -ab 192k -acodec ac3 -ar ... ... ...
               fi

Strumenti personali