Guida a vStrip

Si tratta di uno tra i primissimi programmi che ho scoperto e mai abbandonato - in particolare quando stavo collaborando con l'autore per correggerne alcuni bug. vStrip è semplicemente il software più avanzato in circolazione per il trattamento di file VOB. In molti usano o hanno usato MPEGUtils per la sua GUI, più immediata ed amichevole, ma questo software non avrebbe scampo in un confronto diretto con vStrip. Laddove vStrip mette a nudo dal primo all'ultimo byte di ogni file VOB, MPEGUtils è soltanto in grado di processare file VOB che abbiano un'header valida (generalmente solo la prima) e nel caso in cui perdesse un certo numero di bytes all'inizio di ogni file sarebbe necessario inserire manualmente quanto mancante, per ogni file, calcolando la differente dimensione con strumenti come DVTool (per estrarre i bytes mancanti dai file di origine). Se qualche volta vi sarà capitato di fare tutto ciò avrete capito perchè non uso MPEGUtils. 

All'incirca dalla versione 0.5 è stato implementato il supporto CSS che semplifica notevolmente il lavoro in quanto possibile splittare i VOB dai VOB Id direttamente presenti su DVD, senza necessità di riversare il contenuto su disco rigido. Con la versione 0.6 è stato introdotto il parsing IFO sui sorgenti LiVid. Questa novità è molto interessante soprattutto per gli utenti di Flask, in quanto la modalità di rippaggio è pressoché identica: puoi scegliere con estrema precisione quali saranno i flussi audio e video da convertire. Ciò significa che tutti i problemi di multiplexing legati a titoli multiangolo e multilingua appartengono solo al passato. Dissimilmente da FlaskMpeg il parsing IFO corrente funziona perfettamente con casi ostici come "T2 Ultimate Edition". L'ultimissima versione tra le novità include il supporto multiangolo completo (per titoli come Disney R1 e simili), il supporto completo per l'UDF (1.00GB VOBs).

Dopo questa breve introduzione torniamo a concentrarci sull'argomento della nostra guida. Come da tradizione prenderemo in esame il DVD "The Matrix" per illustrare cosa sia in grado di fare il software. Premettiamo subito che si tratta di una buona scelta per il nostro esempio in quanto questo titolo ha streams multiangolo che danno vita ad una struttura molto complessa da analizzare.

Se preferisci verificare il funzionamento immediato con la GUI puoi saltare direttamente alla descrizione dei comandi da riga di comando, anche se personalmente ti consiglierei di continuare la lettura. Gli argomenti illustrati di seguito, infatti, non solo ti aiuteranno a comprendere meglio il funzionamento della GUI ma anche il suo stadio di sviluppo che per rigore di esattezza non richiede informazioni sul file tramite vStrip ma attraverso Windows stesso, generando potenziali problemi.

Prima di tutto è il momento di trovare il PGC (Program Group Chains.. in breve il modo in cui è possibile navigare sul DVD... per ulteriori informazioni consigliamo di visionare il manuale di Scenarist NT) presente sui dischi. Digita "vstrip f:\video_ts\vts_02_1.vob -if:\video_ts\vts_02_0.ifo"

Parsing "f:\video_ts\vts_02_0.ifo"...
0. Length: 02:22:19:201 in 106 cell(s).
1. Length: 00:00:18:193 in 1 cell(s).
2. Length: 00:00:50:193 in 1 cell(s).
3. Length: 00:00:00:213 in 1 cell(s).
4. Length: 00:00:00:213 in 1 cell(s).
5. Length: 02:22:19:201 in 106 cell(s).
6. Length: 00:00:50:213 in 3 cell(s).
7. Length: 00:02:68:225 in 3 cell(s).
8. Length: 00:01:16:213 in 1 cell(s).
9. Length: 00:01:01:213 in 1 cell(s).
10. Length: 00:03:50:229 in 2 cell(s).
11. Length: 00:01:19:213 in 1 cell(s).
12. Length: 02:22:19:201 in 106 cell(s).
13. Length: 02:22:19:201 in 106 cell(s).
14. Length: 02:22:19:201 in 106 cell(s).
15. Length: 00:00:00:213 in 1 cell(s).
16. Length: 00:00:00:213 in 1 cell(s).
17. Length: 00:00:00:213 in 1 cell(s).
Scanning for stream id's, press control-c to quit...
Found 0xBF = Private Stream 2 [@LBA 0]
Found VOB-ID: 01/CELL-ID: 01 [@LBA 0]
Encountered encrypted sector, attempting key recovery

A questo punto puoi annullare l'elaborazione premendo la combinazione di tasti Control-C.

Il primo argomento specifica il file di VOB in input e l'argomento -i indica il file VOB da analizzare. Se hai usato qualche volta FlaskMpeg 0.594 (o superiori) la lista ti sarà già nota... è pressoché identica a quella fornita in output da Flask. Quando avvii la riproduzione di un disco DVD, in modalità normale, viene caricato il titolo 1 ma se avvii la riproduzione con la modalità "seguendo il coniglio bianco" viene riprodotto il titolo 6: il contatore inizia dal valore 0, perciò il PGC che vogliamo analizzare è il PGC 0. 

Per rippare il filmato digita "vstrip streamlist.lst -if:\video_ts\vts_02_0.ifo -p0 -$1024 -omatrix.vob"
Come avrai intuito streamlist.txt è la lista di stream (flussi) che dovresti SEMPRE usare come streamlist. @ indica che il file di input è in realtà un file di tipo streamlist e non VOB, -p0 indica di analizzare dal PGC 0, -$1024 chiede al programma di splittare i file in uscita in segmenti da 1024MB... non specificando nulla per questa opzione verrà generato un file unico di generose dimensioni che alcuni programmi (e sistemi operativi... possiamo dire Win9x?) non saranno più in grado di aprire. -omatrix.vob, infine, specifica il file di destinazione, nel nostro caso matrix.vob. Il secondo file sarà chiamato matrix_1.vob, e così continuando. Il carattere @ per indicare in input un file streamlist è opzionale se il file ha come estensione .lst.

Qualche informazione sull'engine di ricerca: vStrip è dotato di un motore di ricerca della chiava di decriptazione evoluto e sorprendentemente configurabile. Normalmente sarà il primo file della streamlist ad essere analizzato e le chiavi rilevate ad essere usate per tutti i file VOBs della lista. Alle sue apprezzate funzionalità ora è stato aggiunto un algoritmo di decriptazione DeCSS+, cosa che rende questa funzione perfino più avanzata di quanto realmente necessario. I campi configurabili per la ricerca sono i seguenti: -mX, -nX, -qX e -rX. -mX imposta il numero di chiavi per cui è valida la chiave estratta dal flusso dati (come il motore di ricerca di VobDec) , -nX indica il numero di occorrenze delle chiavi per le quali dovrà cercare l'algoritmo DeCSS+ , -qX inoltre specifica il numero (in percentuale) di delle chiavi trovate che dovranno essere assunte come candidate per la decriptazione finale. I valori predefiniti per -m, -n e -q sono rispettivamente 8, 8 e 75. Il campo -rX permette di modificare la ricerca delle chiavi in relazione alla struttura del VOB. -r1 cercherà ogni VOB id per una chiave, -r2 cercherà in ogni Cell ("Cella") per una chiave, ma avvalendosi della stessa chiave per ogni cella. Per il nostro esempio assumiamo che il VOB id 1 abbia 3 celle, il VOB id 2 cell1 - cell3 non possono essere usati per la ricerca al contrario di VOB id 2 cell4. -r3 cerca la chiave per ogni cella, ignorando il VOB id. 

Per rippare un filmato e splittarlo (dividerlo) considerando i suoi VOB id, aggiungi semplicemente -v prima di indicare il file di destinazione: in questo modo saranno creati file con denominazione outputname_VXX__.vob dove XX è il numero che rappresenta il VOB id. Per splittare il filmato per Cell id inserisci -c invece di -v prima del file di destinazione e otterrai file denominati outputname_VXXCYY.vob dove XX rappresenta il numero del VOB id e YY il numero della cella. E' possibile combinare tra loro le opzioni che non necessitano di argomento, come per esempio -c/v. Potresti anche scrivere -comatrix.vob invece di -c -omatrix.vob. 

Vorresti fare il demux dello stream video e splittare il tutto in segmenti da 30MB? Nessun problema: "vStrip @streamlist.txt -if:\video_ts\vts_02_0.ifo -p0 -$30 -!domatrix.m2v 0xe0" fa esattamente quanto desiderato! L'opzione -! è per impostare i valori predefiniti in ogni campo e -d per il demuxing. 0xe0 infine è il numero degli stream video e generalmente figura sempre 0xe0. Se non sei sicuro digita semplicemente "vstrip @streamlist.txt" ed otterrai in risposta qualcosa come:

Scanning for stream id's, press control-c to quit...
Found 0xBF = Private Stream 2 [@LBA 0]
Found VOB-ID: 01/CELL-ID: 01 [@LBA 0]
Encountered encrypted sector, attempting key recovery
Deduced key: 0xE169080299
Found 0xE0 = Video Stream 0 [@LBA 1]
Width = 720
Height = 480
Aspect-ratio = [3] 16:9 display
Frame-rate = [4] 29.97 (30000/1001) fps [NTSC video frame rate]
Found 0xBD = Private Stream 1, substream 0x80 (AC3 #0) [@LBA 6]
Found 0xBD = Private Stream 1, substream 0x81 (AC3 #1) [@LBA 7]
Found 0xBE = Padding Stream [@LBA 22]
Found VOB-ID: 02/CELL-ID: 01 [@LBA 4262]
Found 0xBD = Private Stream 1, substream 0x82 (AC3 #2) [@LBA 4267]

Come avrai notato nella linea numero 6 vStrip ha rilevato uno stream video ed indicato il suo id e le sue proprietà. Preferiresti fare invece il demux di uno stream audio? Come prima, basta una sola linea: "vstrip @streamlist.txt -if:\video_ts\vts_02_0.ifo -p0 -$30 -!domatrix2.ac3 0xBD 0x81" per il demuxing della seconda traccia audio con id 0x81 e suddivisione in segmenti di 30Mb. Gli stream audio sono stati anch'essi rilevati dal report di vStrip.. in particolare sono 3, 0x80 (la soundtrack principale in 5.1), 0x81 (i commenti) e 0x82 (e la traccia con la colonna sonora). 

Tutto chiaro fin qui? Vediamo di complicare un pò le cose: "vstrip @streamlist.txt -if:\video_ts\vts_02_0.ifo -p0 -$30 -omatrix.vob 0xe0 0xBD 0x81 =0x80" ripperà il filmato come visto in precedenza in un file VOB ma la soundtrack 0x81 sarà rimappata 0x80. 

Puoi indicare in aggiunta con -l la lista di cell ids analizzati da vStrip.

Per quanto riguarda il multiangolo è disponibile l'opzione -jX dove la X indica proprio lo stream dell'angolo da prendere in considerazione. -j0 disattiva la rimozione delle scene multiangolo, -j1 dovrebbe presentarti le scene con prima angolazione (normalmente l'inglese nei film Disney R1), etc.  

Per impostare una chiave manualmente è presente l'opzione -k1234567890 che provvederà ad usare 1234567890 per la decriptazione anzichè avvalersi del motore di ricerca delle chiavi. Questa opzione può rivelarsi utile per quei file VOBs in cui VobDec non riesce ad estrarre la chiave. Inoltre con l'opzione -g si possono mantenere solo le GOPs generando comunque i VOBs (però non usare anche -! o -d), al fine di ottenere piccoli VOBs con solo le tracce audio da importare in Graphedit. Volendo si possono anche preservare i VOBs e più semplicemente usare un filtro sorgente VOB multiplo. -sX cerca nella posizione X in LBA e avvia il processo di stripping da questo punto (1 LBA = 2048B), quindi potresti anche cambiare il frame rate e le proporzioni dello stream MPEG ma non si tratta di una buona idea. 

Qualche commento sulle novità introdotte con la v.0.8:

"vstrip d:\ -u" presenterà in output il lista completo in lba di tutti i file presenti sul DVD (d:\ indica la lettera del drive). Per chiarezza riportiamo un breve esempio:

VIDEO_TS/ [@LBA: 240 - 240]
VIDEO_TS.BUP [@LBA: 224407 - 224413]
VIDEO_TS.IFO [@LBA: 224400 - 224406]
VTS_01_0.BUP [@LBA: 539725 - 539739]
VTS_01_0.IFO [@LBA: 224415 - 224429]
VTS_01_0.VOB [@LBA: 224430 - 2321581]
VTS_01_1.VOB [@LBA: 224430 - 539724]
VTS_02_0.BUP [@LBA: 3504211 - 3504287]
VTS_02_0.IFO [@LBA: 539740 - 539816]
VTS_02_0.VOB [@LBA: 539817 - 612458]
VTS_02_1.VOB [@LBA: 612459 - 1136745]
VTS_02_2.VOB [@LBA: 1136746 - 1661032]
VTS_02_3.VOB [@LBA: 1661033 - 2054294]
VTS_02_4.VOB [@LBA: 2054295 - 2578581]
VTS_02_5.VOB [@LBA: 2578582 - 3102868]
VTS_02_6.VOB [@LBA: 3102869 - 3504210]
VTS_03_0.BUP [@LBA: 4097642 - 4097669]
VTS_03_0.IFO [@LBA: 3504288 - 3504315]
VTS_03_0.VOB [@LBA: 3504316 - 5601467]
VTS_03_1.VOB [@LBA: 3504316 - 4028602]
VTS_03_2.VOB [@LBA: 4028603 - 4097641]

L'opzione -t seleziona una libreria IO da usare. Nella versione 0.8 è stato implementato il supporto ASPI ed è usato come predefinito dal programma. -t1 seleziona clib (obsoleta) quindi ASPI (assumendo il caso in cui la prima non sia andata a buon fine... molto probabilmente con situazioni da 1.00GB), -t2 seleziona l'inverso e -t3 seleziona esclusivamente clib.
-e infine aggiunge il supporto per file di tipo non VOB. Se ad esempio volessi fare il demux di un file MPG standard (che bada non deve essere allineato 2k = 2^11 = 2048 bytes) dovresti inserire anche questa opzione.


La GUI (Interfaccia Grafica Utente)

Carica la GUI, primi il pulsante "Add..." e seleziona i file VOB del filmato principale (il numero più grande di file VOB numerati sequenzialmente... o i file che hanno stessi vts_xy nel nome come il più grande file .ifo contenuto nel disco DVD).

Se, nonostante la pressione del tasto "Add...". non dovesse comparire alcun file, allora seguito questo piccolo trucco. I dischi pirati (soprattutto quelli orientali) spesso sembrano non contenere files al loro interno. Ho riscontrato una cosa simile proprio con il mio DVD (originale) di Matrix R1. Fin dal giugno del 2000 non ho più trovato nulla ad eccezione dell'autorun.exe. Nella finestra di dialogo "Add..." puoi specificare il percorso e la cartella del tuo drive DVD. Ad esempio: al mio lettore DVD è associata la lettera F:. Quando specifico il percorso f:\video_ts\ nel campo dedicato ottengo immediatamente la lista dei files presenti. Aggiungo il primo file quindi chiudo la finestra di dialogo e premo il pulsante "Add..." nuovamente. Ora saranno visibili tutti i files! Se neanche in questo rimedio fosse risolutivo, puoi ricorrere al parser UDF di vStrip premendo il pulsante "UDF...".

vStrip potrebbe bloccarsi per un pò alla pressione del pulsante ma potrai verificare che il sistema non si effettivamente andato in crash con il LED del disco rigido.

Non appena avrai ottenuto il listato fai doppio clic su un file sulla sinistra: quest'ultimo sarà automaticamente portato nella lista di destra. Selezionati tutti i files, clicca su OK per continuare.

Per iniziare, premi il pulsante Run. Durante l'elaborazione dei files il programma visualizzerà VOB-ID: XY... l'operazione può comunque essere interrotta in qualsiasi istante. Al termine avrai ottenuto la lista completa degli stream audio e video disponibili. Stream 0xE0 è generalmente lo stream video, 0xBD 0x8x sono AC3 o stream DTS (generalmente DTS dovrebbe essere 0x88 o 0x89). 0x80 è lo stream audio predefinito - generalmente l'inglese. Stream IDs 0xAx indica stream audio PCM e 0xC0 stream audio MP2. Streams 0xBD 0x20 - 0x3F sono stream dedicati ai sottotitoli. OxBF, infine, è lo stream di padding (stiamo facendo riferimento alla prima immagine).

Accertati che la checkbox "Is VOB?" sia selezionata lavorando con file VOBs. Start e End LBA non sono molto importanti se disponibile il parsing dell'IFO. Ultimo ma non meno importante il caso in cui dopo il ripping siano presenti parti ancora criptate (ciò è chiamato impropriamente authoring.. spesso si utilizza una chiave CSS differente sul secondo livello del DVD) tu dovrai cambiare la chiave di ricerca:

In genere "Each VOB-ID" dovrebbe risolvere il programma ma puoi anche optare per "EAch VOB- & CELL-ID" che troverà tutti gli eventuali cambiamenti della chiave con certezza.

Inoltre i campi Mult e Tresh devono essere entrambi a 1.

Procediamo oltre, con la linguetta IFO:

Premi il pulsante "..." e seleziona il più grande tra i files .ifo presenti sul DVD quindi il PGC appropriato. In genere PGC0 è il filmato principale ma in caso di complesse diramazioni al filmato è possibile avere più PGCs con lunghezza differente. In situazioni analoghe dovresti selezionare la versione corrispondente alla versione che vuoi rippare (ad esempio: ID4 ha 4 PGCs, 2 con stessa lunghezza. Il più lungo è il director's cut, il più corto tra i due la versione theatrical anche se ignoro totalmente il perchè ci siano 2 PGCs per ogni versione). Se vuoi rippare solo alcuni VOB o CELL IDs, seleziona il VOB id corrispondente e deseleziona tutte le celle di cui non hai bisogno (deselezionare tutto è analogo ad ignorare direttamente il VOB id). Nella pratica, tuttavia, questa funzione non è molto utile. Con un titolo multiangolo puoi selezionare Angle 1: in tal modo saranno ignorate automaticamente tutte le scene inerenti altre angolazioni (come ad esempio i titoli di coda francesi / inglesi nei film Disney).

vStrip è in grado di ottenere anche un listato degli stream sottotitoli e degli stream audio con le corrispondenti lingue e proprietà.

Se vuoi estrarre ben determinati VOB IDs o Celle seleziona il punto di inizio appropriato quindi clicca con il tasto destro:

Al punto iniziale premi sulla voce "Set Start LBA". Ora clicca sull'ultima cella che vuoi includere nella selezione e premi sulla voce "Set End LBA". I valori della selezione saranno inseriti nei campi LBA presenti nella linguetta Input. Eventualmente possiamo selezionare direttamente un capitolo in questo modo ma il nostro fine è altro.

Procediamo con la linguetta Output

Seleziona un file di destinaziona quindi le dimensioni per l'eventuale splitting da applicare. Come valore limite suggerisco di non superare 1024MB. Le voci "By VOB-ID" o "By CELL-ID" non sono necessarie con il parsing del file IFO. Per un rippaggio tradizionale questo è tutto il necessario da sapere ed impostare per cui... clicca sul pulsante Run per completare l'operazione!

Se preferisci rippare soltanto alcuni stream bisogna configurare le opzioni avanzate. Selezionando demux sarà attivata la modalità demux. Ora sulla finestra destra seleziona SubStreams e tutti gli stream che vuoi "catturare" (ricorda che nella linguetta Input hai un listato completo degli stream). Selezionando "Only GOP-Headers" puoi creare VOBs audio cliccando semplicemente sugli stream audio interessati. Le immagini seguenti mostrano il procedimento per la cattura degli stream AC3 0x80 e 0x81 e come procedere per la creazione di un file VOB audio generato a partire da quest'ultimi.

Ancora un'altra interessante funzione. Mettiamo il caso che tu debba estrarre questi due stream audio e, allo stesso temp, fare il demux dello stream video su un altro file. Dopo aver correttamente impostato le opzioni per l'estrazione audio, come mostrato nell'immagine, clicca su Output 1 che puoi configurare allo stesso modo di Output 0. Ecco come fare il demux dello stream video:

Un'ultima nota: risparmierai molto tempo con la GUI se avrai ben compreso le opzioni da riga di comando. Difatti non è semplice comprendere in profondità tutte le opzioni della GUI senza le dovute conoscenze delle opzioni da riga di comando.

 


Conclusioni: Se hai incontrato un caso particolarmente ostico, vuoi fare il demux di uno stream AC3 ed essere sicuro che abbia esattamente la stessa lunghezza del video ottenuto con Flask, se non usi un programma de/encoding provvisto di capacità di parsing per l'IFO, vStrip è la soluzione che fa per te. In questo modo, inoltre, potrai fare a meno di banner non necessari, inserzioni, avvertimenti FBI e tutto quanto inerente il processo di ripping. Come se non bastasse vStrip è l'unico programma che permette di lavorare con dischi con problemi di masterizzazione.

>> Torna Indietro