Guía de vStrip

Este es uno de los primeros programas que descubrí y al que nunca he dejado. vStrip es simplemente el programa más potente para procesar archivos VOB. Mucha gente usa, o ha usado MPEGUtils por su GUI pero esa herramienta no tiene nada que hacer contra Vstrip. vStrip rasca desde el primer al último byte de cada archivo VOB, MPEGUtils solo puede manejar VOB que comiencen con una cabecera adecuada (normalmente solo la primera) y si no, pierde cierto número de bytes al comiezo del procesado de cada archivo, que tiene que ser añadido calculando la diferencia de tamaño y usando DVTool para extraer los bytes perdidos de los archivos de origen. Si has hecho alguna vez esto comprenderás porque no usoMPEGUtils. 

En algún lugar de la versión 0.5 se añadió soporte para CSS, lo que simplifica gratamente la vida ya que puedes separar VOB a VOB directamente desde el DVD, lo que ahorra espacio y tiempo. La versión 0.6 añadio IFO parsing (análisis de los IFO) basado en las fuentes LiVid. Esto es incluso más interesante ya que puedes rippear DVD del mismo modo que Flask...así puedes elegir solo la cadena correcta (stream) que quieras. Esto implica que todos los problemas de multiángulo y multilenguaje y problemas similares son cosa del pasado. Y a diferencia de FlaskMpeg y su IFO parsing este funciona en los casos más complicados como la última edición de T2. La última versión añade soporte total para multilenguaje (Titulos Disney R1 y similares) mas soporte total para UDF (VOBs de 1.00GB).

Pero vamos al asunto...como siempre usaré 'The Matrix' para ilustrar lo que se puede hacer. Como esta película tiene multiángulos con una estructura compleja, es un buen ejemplo.

Si prefieres ver como funciona con el GUI pudes saltarte la descripción de los parámetros en línea de comandos, de todas maneras recomiendo que los leas. Te ayudarán a entender mucho mejor las cosas y el GUI en la versión actual puede dar problemas con un pequeño número de DVDs.

Primero de todo sacamos como los PGC (Cadenas de Grupos de Programas...que es como trabaja el navegador del DVD...para mas información mira el Scenarist NT manual) están en el disco.

Escribe "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

En este punto corta el proceso con Control-C.

El primer argumento indica el archivo VOB de entrada y el argumento -i indica el arhivo IFO a analizar. Si has usado FlaskMpeg 0.594 (o posterior) ya conoces esa lista...es la misma que la que da Flask. Cuando reproduces el DVD normalmente el titulo 1 se reproduce. Si reproduces al modo "siguiendo al conejo blanco" entonces es el titulo 6 el que se reproduce. Como deberías saber los ordenadores empiezan a contar desde 0, así que el PGC que queremos analizar es el PGC 0.

Para rippear la película escribe "vstrip streamlist.lst -if:\video_ts\vts_02_0.ifo -p0 -$1024 -omatrix.vob" como probablemente supones streamlist.txt es el archivo de la lista de cadenas (es una lista que dice el orden de los archivos de la película y los enumera consecutivamente) y tienes que usar SIEMPRE el streamlist. @ indica que el archivo de entrada esta incluido en una streamlist y no un archivo VOB, -p0 indica que analizamos el PGC 0, -$1024 le dice al programa que separe los archivos de salida en partes de 1024 MB.. si no indicas nada el archivo de salida será un solo archivo y algunos programas (y sistemas operativos...ya sabes...Win9X) no serán capaces de de leer el archivo. Finalmente -omatrix.vob indica que la salida se escriba en matrix.vob. El segundo archivo se llamará matrix_1.vob, etc. La @ para indicar el streamlist de entrada es opcional si tu streamlist tiene la extensión .lst.

Unas palabras acerca de la busqueda de la clave (keysearh): vStrip tiene un sistema avanzado de busqueda de claves y altamente configurable. Normalmente el primer archivo en la streamlist será escaneado y su clave será usada para todos los VOBs de la streamlist. Ahora incorpora algoritmos de desencriptación DeCSS+ que lo hacen mucho más potente. Los parámetro para ajustar el keysearch son los siguientes: -mX, -nX, -qX y -rX. -mX indica cual de las claves deducidas de las cadenas es la que merece la pena (como el keyseark de VobDec), -nX indica con cuantas claves coincidentes distintas prueba el DeCSS+, finalmente -qX indica que porcentaje de todas las claves encontradas son candidatas a ser usadas como claves de desencriptación. Los valores por defecto para -m, -n y -q son 8, 8 y 75 respectivamente. EL argumento final -rX ajusta el keysearch a la estructura de los VOB. -r1 buscará una clave para cada VOB id, -r2 busca en cada Cell, pero usando las misma clave para cada número de Cell. Por ejemplo si asumimos que tenemos un VOB id1 que tiene 3 Cells, entonces para el VOB id2 cell1-cell3 no se buscará una clave, pero parar el VOB id2 cell4 se buscará. Finalmente -r3 busca una clave para cada Cell sin importar el VOB id.

Para rippear una película y separarla por VOB id, simplemente añade -v antes de indicar el archivo de salida, esto creará archivos llamados 'Nombre se salida_VXX.vob' donde XX representa el número id del VOB. Para separar por Cells añade -c en vez de -v antes del nombre del archivo de salida y tendrás archivos llamados 'Nombre de salida_VXXCYY.vob' donde XX representa el número de id del VOB e YY representa el número de Cell. Es también posible combinar parámetros que no tienen argumento por ejemplo -v/-c. Puedes poner -comatrix.vob en vez de -c -omatrix.vob

¿Puedes demultiplexar (separar sonido e imagen o audios uno s de otros...) la cadena de video y separarla en trozos 30MB? Sin problemas "vstrip @streamlist.txt -if:\video_ts\vts_02_0.ifo -p0 -$30 -!domatrix.m2v 0xe0" hace exactamente eso. El -! por defecto es para seleccionar todo y -d activa el modo de desmultiplexar. 0xe0 es el numero de la cadena de video y casi siempre es así (0xe0). Si no estás seguro escribe "vstrip @streamlist.txt" que te devolverá algo como esto:

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]

Como puedes ver en la 6 línea vStrip encuentra la cadena de video e indica su id, y las propiedades de la cadena. Si quieres simplemente extraer la banda sonora, sin problemas "vstrip @streamlist.txt -if:\video_ts\vts_02_0.ifo -p0 -$30 -!domatrix2.ac3 0xBD 0x81" desmultiplexa la segunda cadena de audio con id 0x81 y la separa en trozos de 30MB aunque no tiene ninguna utilidad hacero aquí. Puedes ver que cadenas de audio hay en la salida anterior de vStrip hay 3, 0x80 (banda sonora principal 5.1 ), 0x81 (comentarios) y 0x82 (solo música).

Ahora vamos a por una operación complicada: "vstrip @streamlist.txt -if:\video_ts\vts_02_0.ifo -p0 -$30 -omatrix.vob 0xe0 0xBD 0x81 =0x80" ripperá la pelicula normalmente en un archivo VOB que será separado en 30MB pero la cadena de sonido 0x81 pasará a ser la 0x80 en el nuevo VOB.

Puedes también indicar -l lo que dará la lista de ID de las Cell analizadas por vStrip

Para manejar multiángulos puedes añadir la opción -jX que especifica el ángulo a usar. -j0 elimina el multiángulo, -j1 te da el primer ángulo (normalmente Ingles en las películas R1 de Disney), etc.

Si quieres por casualidad especificar la clave puedes añadir el parámetro -k1234567890 con lo que se usará la clave 1234567890 para desencriptar en vez de buscarla. Esto es útil en VOBs en los que VobDec no puede encontrar una clave. Tenemos la opcion -g que solo selecciona los GPOs pero produciendo VOBs (así que no la uses con -! o -d), para tener VOBs pequeños con cadenas solo de sonido para usar en Graphedit. De todas maneras también puedes cojer los VOBs y usar un filtro para extraer el sonido. -sX busca la posición LBA X y empieza desde ella (un LBA=2048B), así puedes cambiar el frame rate y la relación de aspecto de la cadena MPEG, aunque probablemente esto no sea un buena idea.

Unas palabras acerca de las opciones de la versión v0.8:

"vstrip d:\ -u" te dará una lista completa de lba de todos los archivos del DVD (d:\ es el nombre del disco). La información se presenta de este modo:

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]

La opción -t selecciona la libreria de entrada/salida a usar. En v0.8 se a añadido soprte para ASPI, y es usado por defecto. -t1 seleciona clib (el modo antiguo) después ASPI (asumiendo que ha fallado el primero...sobre todo en casos de 1GB), -t2 seelcciona el inverso, y -t3 selecciona clib solamente.

Finalmente -e añade soporte para archivos que no sean VOB. Así que si quieres desmultiplexar un archivo mpg ( que no tenga 2k = 2^11 = 2048 bytes alineados) puedes querer poner esta opción.

 

La parte del GUI (Interface Gráfico del Usuario)

Arranca el GUI, pressiona Add... y selecciona los archivos VOB de la película principal (el mayor número de archivos VOB consecutivos, o los que tengan el mismo vts_xy en el nombre que el mayor archivo IFO del DVD)

Si no ves ningún archivo cuando pulsas Add.. entonces hay un pequeño truco. Especialmente en los DVD piratas de lejano oriente los discos parecen no tener ningún archivo. Incluso lo mismo empezo pasando con mi (oficial) R1 Matrix DVD. Desde junio del 2000 no he vuelto a ver más que autorun.exe en este disco. En el diálogo add puedes empezar metiendo el path y el directorio de tu DVD. Por ejemplo: mi DVD es la letra F: así que cuando empiezo poniendo f:\video_ts\ en el path, de repente tengo la lista de todos los archivos. Añade el primer archivo, cierra la ventana y pulsa el botón Add.. de nuevo. Finalmente podrás ver todos los archivos. Si eso no ayuda entonces usa el análisis UDF (UDF parser) de vStrip presionando el botón UDF...

vStrip parecera que se cuelga por un momento cuando pulsas el botón. Pero si ves el LED de tu disco es que todo va bien.

Una vez que tengas la lista haz doble click en un archivo a la izquierda y se añadirá a la lista de la derecha. Una vez seleccionados todos los archivos pulsa OK



Ahora pulsa RUN para empezar. Después de que empiece mostrando VOB-ID: XY... puedes abortar la ejecución. Ahora tienes la lista del sonido y las cadenas de subtitulos. La cadena 0xE0 es normalmente la de vídeo, 0xBD 0x8x son cadenas AC3 o DTS (normalmente DTS suele ser 0x88 o 0x89). 0x80 es la cadena del idioma por defecto -normalmente Inglés. Las IDs de las cadenas 0xAx suelen ser audio PCM y 0xC0 son cadenas de audio MP2. Las cadenas 0xBD 0x20 - 0x3F son los subtítulos. Finalmente OxBF is la cadena de relleno. (se refiere al btw de la primera película).

Aseguraté que es VOB el cuadro está marcado cuando estás manejando VOBs no es importante si tienes IFO parsing. Por último si tienes una película que aún tiene partes encriptadas después del rippeo (se llaman improper authoring...normalmente usan otra clave CSS en la segunda capa del DVD) Puedes cambiar la decryption search:

Normalmente cada VOB-ID tiene su truco, pero asegurate de que seleccionas cada VOB-&CELL-ID lo que asegurará encontrar cualquier cambio de clave, por si las moscas.

Aseguraté de que has seleccionado Mult and Tresh para cada uno.

ahora vamos a la pestaña IFO:

Pulsa el botón ... y seleciona el mayor ifo del DVD. Entonces selecciona el PGC apropiado. Normalmente PGC0 es la película principal, pero en el caso de películas con ramificaciones tendrás varios PGCs con diferentes longitudes. En este caso selecciona la versión que corresponda a lo que quieras rippear (Por ejemplo: ID4 tiene4 PGCs, 2 con la misma longitud). El mayor es el director's cut, El mas pequeño es la versión comercial, y nadie sabe porque hay dos PGCs para cada una). Si quieres rippear algún VOB o Cell ID especifico, solamente selecciona el correspondiente VOB y desmarca todas las Cells que no quieras (desmarcando todo se saltará es VOB ID). Pero de hecho esta opción no es muy util. si tienes un título multiángulo puedes seleccionar el ángulo 1 lo que pasará por alto todos los otros (como los créditos intercambiables en Ingles o Francés en las películas de Disney)

Puedes tener también un listado de cadenas de subtítulos y sonido con los correspondientes idiomas y priedades.

Si quieres extraer un VOB particular o un Cell ID selecciona el punto de comienzo apropiado, y botón derecho del ratón:

En el punto de comienzo seleccionado pulsa Set Start LBA. Click en el último Cell que quieres incluir en la selección y pulsa Set End LBA. Los valores sepondrán en los campos de el cuadro de LBA. Eventualmente puedes querer seleccionar capítulos aquí pero por el momento esto es lo que tenemos que hacer.

Now go to the output tab

Elige un nombre de salida, entonces selecciona el tamaño que quieras. un valor altamnete sugerido es 1024MB. Separar por VOB o CELL-ID no suele ser necesario gracias al IFO parsing. Par aun rippeo normal todo lo que hay que hacer es pulsar el botón Run.

Si solo quieres algunas cadenas concretas entonces ve a advanced options. Marcando demux se activará el demux mode. Ahora a la derecha marca SubStreams y selecciona todas las cadenas que quieras (recuerda que en el cuadro d entrada tienes un listado de todas las cadenas). Si seleccionas Only GOP-Headers puedes crear VOBs de audio simplemente selecionando la scadenas de audio. LA siguiente captura muestra como sacar las cadenas AC3 0x80 y 0x81 y crear un archivo VOB de audio con ellas.

Hay una cosa más. Si quieres extraer esas dos cadenas de audio y desmultiplexar la cadena de vídeo en otro archivo. Después de tener configurada la extración del audio en Output 1, puedes hacerlo de la misma forma en Output 0. Aquí es donde desmultiplexarás la cadena de vídeo:

Por último: Tardarás menos tiempo con el GUI si entiendes las opciones en línea de comandos...son un poco difíciles de explicar todas las posibilidades en el GUI sin conocer como funciona la línea de comandos.

Conclusión: Si te encuentras en un caso difícil, quieres desmultiplexar una cadena ac3 y asegurarte de que tiene la misma longitud que el video hecho en Flask, si usas un IFO parsing capaz de codificar/decodificar puedes usar vStrip. De este modo no tendrás que hacer inecesarios estudios de logos, anuncios o advertencias del FBI...durante el rippeo. Vstrip es también un programa capaz de manejar discos con errores de masterización.

>> VOLVER


Spanish translation by: guirlle | Content by Doom9.net - The definitive DVD backup resource