Forum Informatica Libera

Versione completa: Convertire DVD e contenuti speciali in formato mp4 tramite FFmpeg
Al momento stai visualizzando i contenuti in una versione ridotta. Visualizza la versione completa e formattata.
Se vogliamo convertire l'intero contenuto di un DVD in un file video formato MP4 mantenendo inalterata la qualità dell'audio e del video, possiamo utilizzare il comando

Codice:
ffmpeg -i /dev/sr0 -q:a 0 -q:v 0 ContenutoDVD.mp4 # Converte un intero DVD in un video formato MP4 mantenendo inalterata la qualità audio e video


Otterremo così un file video avente nome "ContenutoDVD.mp4" contenente non sono solo i files video relativi al film, ma anche i menù video, i contenuti extra, ed ogni altro contenuto multimediale eventualmente presente nel DVD.

Ora spiego come usare FFmpeg per estrarre i contenuti che ci interessano e convertirli in uno o più files video formato MP4.




La guida che segue, è pensata per convertire dei video che ancora si trovano nel DVD e mettere i video convertiti nella cartella in cui è stato aperto il terminale.

Qualora i video da convertire si trovassero in una qualsiasi altra cartella di una qualsiasi altra memoria di massa, occorre modificare di conseguenza il percorso di ciascun file video da convertire.

Qualora si desideri salvare i video in output in una qualsiasi altra cartella di una qualsiasi altra memoria di massa, occorre modificare di conseguenza il percorso di ciascun file video in output, oppure spostare i video dopo averli creati.

Qualora si desideri semplificare le operazioni contenute nello script, è possibile creare una cartella vuota, copiarvi i soli files .VOB che si desidera convertire; in questo modo, sarà possibile sia omettere il percorso dei files convertiti, sia omettere il percorso dei files da convertire. In un secondo tempo, si potrà provvedere a spostare i files video da conservare nella cartella di destinazione definitiva e/o cancellare i files che non interessa conservare.



1) Utilizzando il file-manager, accedere alla cartella 'VIDEO_TS' del DVD per visualizzarne il contenuto. I files video, sono quelli avente estensione '.VOB'.



2) Utilizzare un qualsiasi Video Player (es. VLC) per visualizzare i singoli files '.VOB' in modo da poter determinare quali ci interessa convertire ed a cosa sono relativi. Nel caso in esempio, ci interessano i files 'VTS_01_1.VOB', 'VTS_01_2.VOB', e 'VTS_01_3.VOB' perché relativi al video principale, ed il file 'VTS_07_1.VOB' perché relativo a contenuti extra che si desidera estrarre.



3) Utilizzando il file-manager, creiamo la cartella in cui vogliamo salvare i video convertiti, ci spostiamo al suo interno, e creiamo il file ListaDVD.txt contenente la lista dei files .MP4 che si vuole unire nel file video principale. Nel caso in esame, contiene:



Codice:
file 'VTS_01_1.MP4'
file 'VTS_01_2.MP4'
file 'VTS_01_3.MP4'



4) Apriamo un terminale nella cartella del DVD ove si trovano i video che ci interessano e, al fine di ottenere informazioni relativi ai video che ci interessa convertire, impartiamo il comando


Codice:
ffmpeg -i VTS_01_1.VOB -hide_banner ; ffmpeg -i VTS_01_2.VOB -hide_banner ; ffmpeg -i VTS_01_3.VOB -hide_banner ; ffmpeg -i VTS_07_1.VOB -hide_banner



ed esaminiamo l'output. Vediamo che tutti e 4 i video hanno risoluzione 720x576 pixels, formato 4:3, 25 fps. Infatti:


Codice:
$ ffmpeg -i VTS_01_1.VOB -hide_banner ; ffmpeg -i VTS_01_2.VOB -hide_banner ; ffmpeg -i VTS_01_3.VOB -hide_banner ; ffmpeg -i VTS_07_1.VOB -hide_banner
Guessed Channel Layout for Input Stream #0.2 : stereo
Input #0, mpeg, from 'VTS_01_1.VOB':
  Duration: 00:16:38.94, start: 0.360000, bitrate: 8597 kb/s
    Stream #0:0[0x1bf]: Data: dvd_nav_packet
    Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bottom first), 720x576 [SAR 16:15 DAR 4:3], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:2[0xa0]: Audio: pcm_dvd, 48000 Hz, stereo, s16, 1536 kb/s
At least one output file must be specified
[mpeg2video @ 0x564981e12440] Invalid frame dimensions 0x0.
    Last message repeated 2 times
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mpeg, from 'VTS_01_2.VOB':
  Duration: 00:16:31.66, start: 999.298333, bitrate: 8660 kb/s
    Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, smpte170m/bt470bg/bt470bg, bottom first), 720x576 [SAR 16:15 DAR 4:3], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0xa0]: Audio: pcm_dvd, 48000 Hz, stereo, s16, 1536 kb/s
    Stream #0:2[0x1bf]: Data: dvd_nav_packet
At least one output file must be specified
[mpeg2video @ 0x5577416a1440] Invalid frame dimensions 0x0.
    Last message repeated 3 times
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mpeg, from 'VTS_01_3.VOB':
  Duration: 00:03:22.75, start: 1990.895000, bitrate: 8552 kb/s
    Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, smpte170m/bt470bg/bt470bg, bottom first), 720x576 [SAR 16:15 DAR 4:3], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0xa0]: Audio: pcm_dvd, 48000 Hz, stereo, s16, 1536 kb/s
    Stream #0:2[0x1bf]: Data: dvd_nav_packet
At least one output file must be specified
Guessed Channel Layout for Input Stream #0.2 : stereo
Input #0, mpeg, from 'VTS_07_1.VOB':
  Duration: 00:06:22.12, start: 0.360000, bitrate: 7896 kb/s
    Stream #0:0[0x1bf]: Data: dvd_nav_packet
    Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bottom first), 720x576 [SAR 16:15 DAR 4:3], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:2[0xa0]: Audio: pcm_dvd, 48000 Hz, stereo, s16, 1536 kb/s
At least one output file must be specified
$



5a) Per converte un file video '.VOB' in un video formato 'MP4' utilizzando il codec video 'libx264' ed il codec audio 'aac', è sufficiente utilizzare un comando tipo
Codice:
ffmpeg -i Input.VOB -vcodec libx264 -filter:v fps=25 -acodec aac Output.MP4 # Converte il file video '.VOB' in un video formato 'MP4', utilizzando codec video: 'libx264' e codec audio: 'aac'

5b) Appurato che i video in formato .VOB da convertire in formato .MP4 hanno tutti proporzione 4/3 (risoluzione: 720x576), per poterli vedere con un televisore formato 16/9 senza deformazioni, occorre porli al centro di un riquadro formato 16/9 alto 576 pixels e largo (576*16/9)=1024 pixels in modo che appaiano (1024-720)/2= 152 pixels più a destra rispetto lo spigolo superiore sinistro del video. FFmpeg permette di raggiungere questo risultato impartendo un comando tipo:



Codice:
ffmpeg -i Input.VOB -vf pad=width=1024:height=576:x=152:y=0:color=red Output.mp4 # Converte nel formato .MP4 il video 'Input.VOB' e lo pone al centro di un riquadro alto 576 pixels e largo 1024 pixels in modo che inizi (1024-720)/2= 152 pixels più a destra rispetto lo spigolo superiore sinistro del video.



5c) I due comandi precedenti, possono essere integrati in un unico comando tipo

Codice:
ffmpeg -i Input.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=red Output.mp4 # Utilizza codec video: 'libx264' e codec audio: 'aac' per converte il file video '.VOB' proporzione 4/3 (risoluzione: 720x576) in un file video '.MP4' e lo pone al centro di un riquadro alto 576 pixels e largo 1024 pixels in modo che inizi (1024-720)/2= 152 pixels più a destra rispetto lo spigolo superiore sinistro del video.



6) Nella cartella in cui vogliamo salvare i video convertiti, creiamo il file 'ComandiDVD.txt' contenente:


Codice:
#!/bin/bash
# Utilizza codec video: 'libx264' e codec audio: 'aac' per converte alcuni file video '.VOB' proporzione 4/3 (risoluzione: 720x576)
# in file video '.MP4' posti al centro di un riquadro proporzione 16/9 alto 576 pixels e largo 1024 pixels
# in modo che inizi (1024-720)/2= 152 pixels più a destra rispetto lo spigolo superiore sinistro del video
# e poi concatena files video elencati nel file 'ListaDVD.txt'
ffmpeg -i /media/lmde3c/Punto_Di_Mount_DVD/VIDEO_TS/VTS_07_1.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green ContExtra.MP4
ffmpeg -i /media/lmde3c/Punto_Di_Mount_DVD/VIDEO_TS/VTS_01_1.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green VTS_01_1.MP4
ffmpeg -i /media/lmde3c/Punto_Di_Mount_DVD/VIDEO_TS/VTS_01_2.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green VTS_01_2.MP4
ffmpeg -i /media/lmde3c/Punto_Di_Mount_DVD/VIDEO_TS/VTS_01_3.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green VTS_01_3.MP4
# I due comandi che seguono sono alternativi l'uno all'altro, quindi uno di essi può essere omesso o 'commentato'
# ffmpeg -f concat -i ListaDVD.txt DVDout0.MP4 # crea un video formato 'MP4' unendo i files video elencati nel file 'ListaDVD.txt', utilizzando i parametri di default in base al formato del video in input e del video in output
ffmpeg -f concat -i ListaDVD.txt -vcodec libx264 -filter:v fps=25 -acodec aac -s 1024x576 DVDout1.MP4 # Crea un video formato 'MP4' unendo i files video elencati nel file 'ListaDVD.txt', utilizzando codec video: 'libx264' e codec audio: 'aac'


7) Salvare il file di testo ComandiDVD.txt così ottenuto.

8) Cliccare col tasto destro del mouse sul file di testo ComandiDVD.txt, selezionare [Proprietà]>[Permessi], ed assicurarsi che la voce "Consentire l'esecuzione del file come programma" sia selezionata.

9) Doppio click col tasto sinistro del mouse sul file di testo ComandiDVD.txt; nel pannello che si apre, selezionare la voce "Esegui nel terminale".

A questo punto, lo script si attiverà, eseguendo una dopo l'altra i comandi in esso contenuti.

La durata complessiva di esecuzione, varia a seconda della potenza del computer; in ogni caso, il vantaggio di utilizzare lo script risiede nel fatto che, mentre lo script lavora senza "momenti morti", noi possiamo dedicarci ad altro.

Saluto.

Sargon6
Buongiorno e grazie
In pratica rispondi alla richiesta che avevo fatto qui
In questa discussione ho indicato UNA possibile soluzione al problema di trasformare interi DVD in MP4.
Questa soluzione ha dei PRO e dei CONTRO.
PRO: Una volta adattato lo script al DVD da convertire in MP4, lo lanci, e fa tutto da solo, quindi, anche se il tempo di elaborazione dovesse rivelarsi lungo, lo si può trascorrere facendo altro, in quanto la conversione non richiede la presenza di un operatore umano.
CONTRO: lo script deve essere "personalizzato" per ogni singolo DVD che si desidera convertire.
Grazie ancora e buona giornata
Convertire contemporaneamente 3 DVD e relativi contenuti speciali in formato mp4 tramite FFmpeg

Questa guida spiega come usare FFmpeg per estrarre i contenuti di vari DVD che ci interessano e convertirli in uno o più files video formato MP4.

1) Utilizzando il file-manager, creare in una partizione del disco rigido una cartella vuota in cui svolgere le varie operazioni di copia e codifica video.

2) Inserire il primo DVD che si vuole convertire nel lettore DVD e, utilizzando il file-manager, accedere alla cartella ‘VIDEO_TS‘ del DVD per visualizzarne il contenuto. I files video, sono quelli avente estensione ‘.VOB‘.

3) Utilizzare un qualsiasi Video Player (es. VLC) per visualizzare i singoli files ‘.VOB‘ in modo da poter determinare quali ci interessa convertire ed a cosa sono relativi.

4) Se dal primo DVD si vuole estrarre in filmato principale scomposto in 3 files '.VOB' ed un filmato di contenuti extra che rientra in un unico file '.VOB', li copiamo nella cartella di lavoro creata al punto 1 e li rinominiamo in sequenza rispettivamente 01parte01.VOB, 01parte02.VOB, 01parte03.VOB, e 01extra01.VOB.

5) Apriamo un terminale nella cartella del DVD ove si trovano i video che ci interessano e, al fine di ottenere informazioni relativi ai video che ci interessa convertire, impartiamo il comando
Codice:
ffmpeg -i 01parte01.VOB -hide_banner ; ffmpeg -i 01parte02.VOB -hide_banner ; ffmpeg -i 01parte03.VOB -hide_banner ; ffmpeg -i 01extra01.VOB -hide_banner


ed esaminiamo l’output. Vediamo che tutti e 4 i video hanno risoluzione 720×576 pixels, formato 4:3, 25 fps.

6) Togliamo il primo DVD dal lettore DVD e al suo posto mettiamo il secondo DVD e, utilizzando il file-manager, accedere alla cartella ‘VIDEO_TS‘ del DVD per visualizzarne il contenuto. I files video, sono sempre quelli avente estensione ‘.VOB‘.

7) Utilizzare un qualsiasi Video Player (es. VLC) per visualizzare i singoli files ‘.VOB‘ in modo da poter determinare quali ci interessa convertire ed a cosa sono relativi.

8) Se dal secondo DVD si vuole estrarre in filmato principale scomposto in 2 files '.VOB' ed un filmato di contenuti extra che rientra in un unico file '.VOB', li copiamo nella cartella di lavoro creata al punto 1 e li rinominiamo in sequenza rispettivamente 02parte01.VOB, 02parte02.VOB, e 02extra01.VOB.

9) Apriamo un terminale nella cartella del DVD ove si trovano i video che ci interessano e, al fine di ottenere informazioni relativi ai video che ci interessa convertire, impartiamo il comando
Codice:
ffmpeg -i 02parte01.VOB -hide_banner ; ffmpeg -i 02parte02.VOB -hide_banner ; ffmpeg -i 02extra01.VOB -hide_banner


ed esaminiamo l’output. Vediamo che tutti e 3 i video hanno risoluzione 720×576 pixels, formato 4:3, 25 fps.

10) Togliamo il secondo DVD dal lettore DVD e al suo posto mettiamo il terzo DVD e, utilizzando il file-manager, accedere alla cartella ‘VIDEO_TS‘ del DVD per visualizzarne il contenuto. I files video, sono sempre quelli avente estensione ‘.VOB‘.

11) Utilizzare un qualsiasi Video Player (es. VLC) per visualizzare i singoli files ‘.VOB‘ in modo da poter determinare quali ci interessa convertire ed a cosa sono relativi.

12) Se dal terzo DVD si vuole estrarre in filmato principale formato da un solo file '.VOB' ed un filmato di contenuti extra che anch'esso rientra in un unico file '.VOB', li copiamo nella cartella di lavoro creata al punto 1 e li rinominiamo in sequenza rispettivamente 03parte01.VOB, e 03extra01.VOB.

13) Apriamo un terminale nella cartella del DVD ove si trovano i video che ci interessano e, al fine di ottenere informazioni relativi ai video che ci interessa convertire, impartiamo il comando
Codice:
ffmpeg -i 03parte01.VOB -hide_banner ; ffmpeg -i 03extra01.VOB -hide_banner

ed esaminiamo l’output. Vediamo che tutti e 2 i video hanno risoluzione 720×576 pixels, formato 4:3, 25 fps.

14) Ora possiamo togliere anche l'ultimo DVD dal lettore DVD.

15) Nella medesima cartella di lavoro, creiamo il file ListaDVD01.txt contenente la lista dei files che si vuole unire nel primo file video principale, ma con estensione MP4. Nel caso in esame, contiene:

Codice:
file '01parte01.MP4'
file '01parte02.MP4'
file '01parte03.MP4'


il file ListaDVD02.txt contenente la lista dei files che si vuole unire nel secondo file video principale, ma con estensione MP4. Nel caso in esame, contiene:

Codice:
file '02parte01.MP4'
file '02parte02.MP4'


15) Nella cartella in cui vogliamo salvare i video convertiti, creiamo il file ‘ComandiDVD.txt‘ contenente:
Codice:
#!/bin/bash
# Utilizza codec video: 'libx264' e codec audio: 'aac' per converte alcuni file video '.VOB' proporzione 4/3 (risoluzione: 720x576)
# in file video '.MP4' posti al centro di un riquadro proporzione 16/9 alto 576 pixels e largo 1024 pixels
# in modo che inizi (1024-720)/2= 152 pixels più a destra rispetto lo spigolo superiore sinistro del video
# e poi concatena files video elencati nel file 'ListaDVD0x.txt'
#
ffmpeg -i 01extra01.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green 01extra01.MP4
ffmpeg -i 01parte01.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green 01parte01.MP4
ffmpeg -i 01parte02.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green 01parte02.MP4
ffmpeg -i 01parte03.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green 01parte03.MP4
#
# ffmpeg -f concat -i ListaDVD01.txt DVDout01.MP4 # crea un video formato 'MP4' unendo i files video elencati nel file 'ListaDVD01.txt', utilizzando i parametri di default in base al formato del video in input e del video in output
#
ffmpeg -i 02extra01.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green 02extra01.MP4
ffmpeg -i 02parte01.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green 02parte01.MP4
ffmpeg -i 02parte02.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green 02parte02.MP4
#
ffmpeg -f concat -i ListaDVD02.txt -vcodec libx264 -filter:v fps=25 -acodec aac -s 1024x576 DVDout02.MP4 # Crea un video formato 'MP4' unendo i files video elencati nel file 'ListaDVD02.txt', utilizzando codec video: 'libx264' e codec audio: 'aac'
#
ffmpeg -i 03extra01.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green 03extra01.MP4
ffmpeg -i 03parte01.VOB -vcodec libx264 -filter:v fps=25 -acodec aac -vf pad=width=1024:height=576:x=152:y=0:color=green DVDout03.MP4
#
# poweroff # Chi desidera che il computer si spenga  a lavoro finito, deve de-commentare questa riga, togliendo il simbolo # al suo inizio.
#


16) Salvare il file di testo ComandiDVD.txt così ottenuto.

17) Assicurarsi che nella cartella ci sia tanto spazio libero quanto ne occupano i files già presenti.

18) Cliccare col tasto destro del mouse sul file di testo ComandiDVD.txt, selezionare [Proprietà]>[Permessi], ed assicurarsi che la voce “Consentire l’esecuzione del file come programma” sia selezionata.

19) Doppio click col tasto sinistro del mouse sul file di testo ComandiDVD.txt; nel pannello che si apre, selezionare la voce “Esegui nel terminale”.

A questo punto, lo script si attiverà e, se nella cartella di lavoro esiste spazio libero a sufficienza, eseguirà una dopo l’altro i comandi ivi contenuti.

20) Lo script può contenere, come ultima istruzione, il comando poweroff, che serve per spegnere il computer al termine dell'esecuzione dello script stesso.
Detta istruzione può essere utile quando si avvia lo script e poi, mentre il computer lavora, l'utente decide di uscire di casa, o fare altro che non prevede l'uso del computer. Quando è prevista l'istruzione di detta istruzione, si consiglia di chiudere il file-manager ed ogni altra applicazione non necessaria all'esecuzione dello script avviato.

21) A lavoro ultimato (potrebbero trascorrere anche ore, ma non occorre la vostra presenza davanti al PC), cancellare i files video intermedi che non si desidera conservare.