hmm, depends where the video renders too, if its the back buffer then you can always grab pixel data manually through the back buffer pointer (dbGetBackBufferPtr() - remember to dbLockBackBuffer() before and unlock it afterwards) - but if you are having trouble using normal techniques then my guess is it doesnt render there.
Quickly browsing the dark sdk help file myself (never messed with dvds personally) I can see one way around this may be
dbPlayAnimationToImage ( int iAnimation, int iImage, int iLeft, int iTop, int iRight, int iBottom )
my solution would be to play it to an image, paste the image to the screen each sync so you can view it playing and bind a key to screen grab, when you press it just use dbSaveImage() on that image. I see no reason why that wouldnt work?