Recover Data From Unfinalized DVD RW

Introduction

Sometimes you’ll end up having to deal with a DVD which has video recorded on it but the author neglected to finalize the disc. This can be a bit troublesome, because until the disc is finalized it doesn’t contain the necessary data to make it compatible with the DVD standard. Most consumer DVD players and PC based DVD drives rely upon this information to make sense of the data content on the DVD, so if it isn’t finalized most systems won’t open the disc.  Either it will open a blank explorer window, or it won’t mount this disc at all. What to do?

Well, thankfully, it is possible to recover from this situation. There are some commercial applications out there which will do it (get your wallet out) or you can make use of open source software instead. I am going to describe the process for some free open source software on Linux.

DVD+RW-Tools

First of all, you need some free open source software called DVD+RW-Tools.  This is a collection of programs for working with optical video disc media.  Most modern linux distributions come with the tools installed as standard.

Reading the disc

Once you have the tools installed, you can use them to extract useful information about the data content on your unfinished disc.  To do this, open a terminal and type:

dvd+rw-mediainfo /dev/dvd

You will get some output from the command.  Here is a sample of output from an unfinalised DVD+RW which has one track on it:

brian@kubuntu:~$ dvd+rw-mediainfo /dev/dvd
INQUIRY:                [HL-DT-ST][BD-RE  BH16NS40 ][1.03]
GET [CURRENT] CONFIGURATION:
Mounted Media:         13h, DVD-RW Restricted Overwrite
Media ID:              80SONY-W0
Current Write Speed:   2.0x1385=2770KB/s
Write Speed #0:        2.0x1385=2770KB/s
Speed Descriptor#0:    00/716191 R@6.0x1385=8310KB/s W@2.0x1385=2770KB/s
READ DVD STRUCTURE[#10h]:
Media Book Type:       00h, DVD-ROM book [revision 0]
Legacy lead-out at:    716800*2KB=1468006400
READ DVD STRUCTURE[#0h]:
Media Book Type:       32h, DVD-RW book [revision 2]
Last border-out at:    2045*2KB=4188160
READ DISC INFORMATION:
Disc status:           appendable
Number of Sessions:    1
State of Last Session: incomplete
"Next" Track:          1
Number of Tracks:      1
READ FORMAT CAPACITIES:
no media:              716192*2048=1466761216
00h(800):              716192*2048=1466761216
10h(10):               716192*2048=1466761216
15h(10):               716192*2048=1466761216
READ TRACK INFORMATION[#1]:
Track State:           incomplete incremental
Track Start Address:   0*2KB
Next Writable Address: 132208*2KB
Free Blocks:           583984*2KB
Fixed Packet Size:     16*2KB
Track Size:            716192*2KB
READ CAPACITY:          0*2048=0

Note that it is possible to have many video clips contained within a single track or you can have video clips spread across multiple tracks; it depends on how the video information was written by the original equipment.  You may also see multiple disc ‘sessions’.  In the sample case above, we have a single track within a single session and I happen to know that there are multiple video clips contained in it.

I will show you how to extract the video for the above single track, but the method is exactly repeatable for any number of tracks and any number of sessions.

The dd Command

‘dd’ is a command for copying data from some media.  To use it, you give it a block size, a start address, an end address, an input file and an output file.  To see how this applies to the above information, consider the following command:

dd bs=2048 skip=0 count=716192 if=/dev/dvd of=/$HOME/track1.vob

This will extract the single track from the disc and place it in your home.  To explain, let’s go through the parameters one at a time:

bs

This is block size.  To get the correct block size, take a look at the information from DVD+RW-mediainfo.  You will see that the data information (e.g. Start Address) is terminated with an asterisk and a number:

Track Start Address:   0*2KB

In this case we are given 2KB.  Since there are 1024 bytes in a kilobyte, the number to give for bs is 2048.

skip

This is the number of bytes to skip in order to reach the start address of the track.  In the above example the start address is 0, so there are 0 bytes to skip.  But in examples with multiple tracks and/or sessions, you will have non-zero start addresses.  Just enter the start address for the track you are interested in as the parameter for skip.

count

This is the number of bytes to extract, from the start address.  To obtain this information, simply use the track size data:

Track Size:            716192*2KB

if

This is the input file.  You need to supply the path to your DVD device.  In most cases it will be /dev/dvd

of

This is the location where the output file will be written.  $HOME works fine.

Finished – Play It!

Once you have extracted your track, you can play it in any standard media player.  You could also write it to a new disc, remembering to finalise it this time!!!

Good luck.

Brian Hoskins is a 35 year old Electronic Engineer from South Wales in the United Kingdom. He is passionate about Electronics Design, Computing, Programming and Science in general. He works as a Test Development Engineer at an automotive electronics company in South Wales and also carries out electronics design work on personal projects in his spare time. Brian has a BSc with honours in electronics engineering and is a member of the Institution of Engineering & Technology.

Recent Related Posts
This entry was posted in Computing, Computing Blog and tagged . Bookmark the permalink.