Tools of trade - vStripThis is one of the early programs I've discovered and which has never let me down - or when it did I was working with the author to fix the problem. vStrip is simply the most powerful VOB file processing program. Many people use or used MPEGUtils because of it's GUI but that tool doesn't stand a chance against vStrip. Whereas vStrip really strips from the very first to the last byte in every VOB file, MPEGUtils is only able to handle VOBs that begin with a valid header (usually only the first one) and if it doesn't it misses a certain number of bytes at the beginning of each file it processes which then have to be added by calculating the size difference and using DVTool to extract the missing bytes of the source files. If you've ever done that you know why I don't use MPEGUtils. Somewhere in the 0.5 tree CSS support was added which simplified our lives greatly since from now on you could split VOBs by VOB id directly off the DVD, which saves space and time. The 0.6 tree added IFO parsing based on the LiVid sources. This is even more interesting since now you can rip DVDs the way Flask converts them.. that is you can chose the right stream and only that one will be converted. That means that all multiangle, multilanguage and seamless branching problems are a thing of the past. And unlike FlaskMpeg this IFO parsing actually works on hard cases like T2 ultimate edition. But let's get down to business.. as usual I will use "The Matrix" to illustrate what can be done. Since that title has multiangles which results in a complex structure it's a good example. First of all it's time to find out which PGC (program group chains.. that's how the DVD navigation works.. for more info check the Scenarist NT manual) are on the disks. Type "vstrip f:\video_ts\vts_02_1.vob -if:\video_ts\vts_02_0.ifo" Parsing "f:\video_ts\vts_02_0.ifo"... At this point you can abort by pressing Control-C. The first argument indicates an input VOB file and the -i argument indicates which ifo file to parse. If you've used FlaskMpeg 0.594 before you'll know that list.. it's the same as Flask will give you. When you play the DVD in normal mode title 1 will play, if you play it in the "follow the white rabbit" mode then title 6 will play. As you may know on computers you start counting at 0, therefore the PGC we want to parse is PGC 0. To rip the movie type "vstrip @streamlist.txt -if:\video_ts\vts_02_0.ifo -p0 -$1024 -omatrix.vob" As you've probably guesses streamlist.txt is a streamlist file and you should ALWAYS use a streamlist. @ indicates that the input file is indeed a streamlist and not a VOB file, -p0 indicates to parse PGC 0, -$1024 tells the program to split the output files in 1024MB parts.. if you don't indicate anything the output file will be one huge file and certain programs (and operating systems.. can you say Win9x?) will not be able to read the files anymore. -omatrix.vob finally will indicate to write the output to matrix.vob. The 2nd file will be called matrix_1.vob, etc. A word about keysearch: vStrip has a really advanced keysearch which is highly configurable. Normally the first file in the streamlist will be scanned and the key used for all VOBs in the streamlist. It now incorporates DeCSS+ decryption algorithms as well which makes it even more powerful. The flags to adjust the keysearch are the following: -mX, -nX, -qX and -rX. -mX will set how many keys a key deduced from padding streams is worth (VobDec like keysearch) , -nX indicates for how many key occurences the DeCSS+ algorithm will look, -qX finally will set how many percent of all keys found a key candidate has to have to be used as decryption keys. The default values for -m, -n and -q are 8, 8 and 75 respectively. The -rX flag, finally, will allow you to adjust the keysearch on the VOB structure. -r1 will search every VOB id for a key, -r2 will search every Cell for a key, but using the same key for the every cell number. For instance let's assume we have VOB id 1 which has 3 cells, then VOB id2 cell1 - cell3 won't be searched for a key, but VOB id2 cell4 would. -r3 finally searches the key for each and every cell, no matter the VOB id. To rip a movie and split it by VOB id, simply add -v before indicating the output file, this will create files named outputname_VXX__.vob where XX represents the VOB id number. To split by Cell id add -c instead of -v before the output filename and you'll get files called outputname_VXXCYY.vob where XX represents the VOB id number once again and YY represents the cell number. It's also possible to combine switches that need no argument, for instance -c/v. You could write -comatrix.vob instead of -c -omatrix.vob. Or would you rather just demux the video stream and split to 30MB junks? No problem: "vstrip @streamlist.txt -if:\video_ts\vts_02_0.ifo -p0 -$30 -!domatrix.m2v 0xe0" does exactly that. the -! defaults to strip everything and -d enabled the demuxing mode. 0xe0 finally is the number of the video stream and this is almost always 0xe0. If unsure simply type "vstrip @streamlist.txt" which will return you something like that: Scanning for stream id's, press control-c to quit... As you can see in the 6th line vStrip found a video stream
and indicated it's id, then the stream's properties. Or would you rather
demux the audio track? No problem: "vstrip @streamlist.txt -if:\video_ts\vts_02_0.ifo
-p0 -$30 -!domatrix2 Now let's go for a complicated operation: "vstrip @streamlist.txt -if:\video_ts\vts_02_0.ifo -p0 -$30 -omatrix.vob 0xe0 0xBD 0x81 =0x80" will rip the movie as usual to a vob file that is being splitted but the soundtrack 0x81 will be remapped to 0x80. You can also indicate -l which will list the cell ids parsed by vStrip (vStrip0.6b only). If you'd rather specify the key on your own you can add the flag -k1234567890 which will then use the key 1234567890 to decrypt rather than search for a key. This is useful for VOBs where VobDec can't find a key. Then we have the -g options which will only keep the GOPs but still producing VOBs (so don't use -! or -d with it), in order to have small VOBs with only the audio tracks for use in Graphedit. However you can also keep the VOBs and simply use a multiple VOB source filter. -sX searches to LBA position X and start stripping from there (one LBA = 2048B), then you could change the frame rate and aspect ratio flags of the MPEG stream but that's probably not such a good idea. Conclusion: If you encounter a difficult case, want do demux an ac3 stream and make sure it has the same length as your video done is Flask, if you use a non IFO parsing capable de/encoding program you should use vStrip's ifo parsing. That way you get rid of unnecessary studio logos which screw up synch, ads, FBI warnings, etc right during the ripping process. vStrip is also the ony program that can handle discs that contain mastering errors. |