PROBLEM: When accessing the drive directly, libdvdread cannot seek to blocks that are on the second layer of a DVD.
EXPECTATION: It shouldn’t matter if the device is mounted or not.
RESULT: It does matter, for reasons I haven’t found out yet.
SOLUTION: Mount the device somewhere on the file system. Everything should now work properly, wether you use the block device directly or the mount point.
TO REPRODUCE: Use any application that uses libdvdread. (In this example I’ll use MPlayer.) DO NOT MOUNT THE DEVICE or UNMOUNT THE DEVICE if using some form of automatic mounting for optical discs. Seek to a specific chapter until libdvdread fails.
mplayer -dvd-device /dev/sr0 dvd://[n] -chapter [x]
mplayer -dvd-device /dev/sr0 dvd://[n] -chapter [x+1]
mplayer -dvd-device /dev/sr0 dvd://[n] -chapter [x+2]
etc.
Eventually you’ll get to a point where playback does not start, and libdvdread will give the following error:
libdvdread: Can't seek to block xxxxxxxx
Note that the following will play to the end until a seek attempt is made that attemtps to seek to a block on the second layer:
mplayer -dvd-device /dev/sr0 dvd://[n] -chapter [last-working-chapter]
Mount the device somewhere:
mount -rt udf /dev/sr0 /media/dvd
Now use MPlayer to start play from the first non-working chapter.
mplayer -dvd-device [ /dev/sr0 | /media/dvd ] dvd://[n] \
-chapter [previously-nonworking-chapter]
Playback should be fine.
Jeff Kroll 11:47 am on January 11, 2012 Permalink |
Thanks for the info. One question: does the word following “-variant” essentially tell VBoxManage what is getting changed to what, i.e. putting “Standard” after “-variant” tells it that it’s changing a fixed to a dynamic?
BrainwreckedTech 12:36 pm on January 13, 2012 Permalink |
It only specifies what the new –variant type is going to be. Standard = dynamic.
Jeff Kroll 2:56 pm on January 13, 2012 Permalink |
Got it. Thanks.
Juliano 9:45 pm on January 22, 2012 Permalink |
Please help me with this:
I am entering this on Terminal:
VBoxManage clonehd [ /Users/JulianoCB/VirtualBox\ VMs/Windows\ XP\ SP3\ Clone/Windows\ XP\ SP3\ Clone.vdi][new.vdi] -variant Standard
But then I get this error:
VBoxManage: error: Could not find file for the medium ‘/Users/JulianoCB/[‘ (VERR_FILE_NOT_FOUND)
VBoxManage: error: Details: code VBOX_E_FILE_ERROR (0x80bb0004), component Medium, interface IMedium, callee nsISupports
Context: “OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadWrite, fForceNewUuidOnOpen, pMedium.asOutParam())” at line 210 of file VBoxManageDisk.cpp
Could not find the file but I droped from finder.
How could I fix this??
I am not very familiar with Terminal…
BrainwreckedTech 11:26 pm on January 27, 2012 Permalink |
First off, leave off the [ and the ] as those are used to indicate variables. They’re used in documentation of command line programs (DOS/Windows/Linux/Unix) as they’re aren’t very many formatting options available on the command line.
Second, with the surrounding white space, the [ is being interpreted as a relative file name. I take it you were in your home directory /Users/JulianoCB when you attempted to execute this command, hence /Users/JulianoCB/[ cannot be found.
Lastly, and pre-emptively, make sure you are using a double dash when using --variant. WordPress tries to be helpful and interprets -- as — unless it occurs in monospace text (pre, tt, code, etc.).