Unfinished Disk = unretrievable video?

posted in DVD Burning, viewed 983 times

I’ve got a bunch of DVD’s that have been partially burnt, but remain unfinished. The HDD DVD recorder I used was a Sony RDR-HX710, but I no longer have access to it. I’m looking for a way to rip the burnt video information from the disks and put them onto a new disk, however nothing I’ve tried will recognize the disk, let alone the info on it. Any suggestions? reply

Feedback
01-27-2010 11:00 PM
Patrick

<pre>
/**
- Copy and paste the C code portion of my comment into a Text Editor
- Read C comments on how to compile and use this program
- Save the C code as: dvchop.c
- Compile dvchop.c
- Put the dvchop program binary where it can be conveniently executed.

- Use dvdisaster or readcd to perform the unfinalized DVD recovery
(note that an unfinalized DVD is not mountable)
- Use dvchop to extract .vob Titles
- Pick the .vob files you want to keep.

The purposes of this program are to:
- produce clean .vob files for editing recorded video.
- extract contiguous VOB sectors from an .iso copy of an unfinalized DVD.
- recover DVD video without re-encoding, decoding or muxing.
(note that the produced output files may be rejoined to reproduce
the original input file)

Extra:
If you want to make One title from several, use the following type of command:
cat movie_002.vob movie_005.vob | ffmpeg -i /dev/stdin -target dvd -vcodec copy -acodec copy test.vob
*/

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

/**
Compile as follows for &gt; 2GB file access
gcc -Wall -D_FILE_OFFSET_BITS=64 dvchop.c -o dvchop

License: GNU LGPL, version 3
Version: dvchop [November 23 2010 r2]
Copyright 2008, David Savinkoff

This program reads concatenated .VOB files or an .iso file
from stdin and makes less than 402 files using the output
filename provided on the command line.
When an output file ends with .vob.j, it is not recognized.
Note that this program will not recognize anything if the
file input doesn’t start on the first byte of a sector.

usage: cat filename(s) | dvchop output_filename
usage: cat VTS_01_?.VOB | dvchop dvd
usage: cat unfinalizedDVD.iso | dvchop movie
*/

void exit4error(char *string)
{ fputs(string, stderr); exit(1);
}

int main(int argc, char *argv[])
{ FILE *fd1;
void *buff1;
char OutputFileName[255];
unsigned char *chk;
double SCR, prevSCR;
int SubFileNumber=0;

if(argc!=2) exit4error(“usage: cat filename(s) | dvchop output_filename\n”);
if((buff1=calloc(512,4)) == NULL) exit4error(“calloc error\n”);

chk=buff1;
snprintf(OutputFileName, 64, "%s_%.3d.vob.j”, argv[1], SubFileNumber);
printf(“processing: %s\n”,OutputFileName);

if((fd1=fopen(OutputFileName,“wb”)) == NULL)
exit4error(“output file error\n”);
prevSCR=2576980377600.0; /* 1.0 greater than largest value */
for(;;)
{ if(fread(buff1, 4, 512, stdin) != 512)
exit(0);

/* MPEG-2 Program Pack == 0x000001BA */
if(chk[0]==0x00 &amp;&amp; chk[1]==0x00 &amp;&amp; chk[2]==0x01 &amp;&amp; chk[3]==0xBA)
{ SCR=300.0*((chk[8]&gt;&gt;3)+chk[7]*32.0+(((chk[6]&amp;~7)&gt;&gt;1)+(chk[6]&amp;3))*8192.0+
chk[5]*1048576.0+(((chk[4]&amp;(8+16+32))&gt;&gt;1)+(chk[4]&amp;3))*268435456.0)
+ (((chk[9]&gt;&gt;1)+(((unsigned)(chk[8]&amp;3))&lt;&lt;7)) % 300);

/* Note: maximum allowed interval between SCRs is 700ms */
if((SCR &lt;= prevSCR) || (SCR &gt; prevSCR+18900000.0))
{ fclose(fd1);
if(SubFileNumber++ &gt;400)
exit4error(“too many output files generated\n”);
snprintf(OutputFileName, 64, "%s_%.3d.vob”, argv[1], SubFileNumber);
printf(“processing: %s\n”,OutputFileName);
if( (fd1=fopen(OutputFileName,“wb”)) == NULL )
exit4error(“output file error\n”);
}
prevSCR=SCR;
}else
{
if(prevSCR&lt;2576980377600.0)
{ fclose(fd1);
if(SubFileNumber++ &gt;400)
exit4error(“too many output files generated\n”);
snprintf(OutputFileName, 64, "%s_%.3d.vob.j”, argv[1], SubFileNumber);
printf(“processing: %s\n”,OutputFileName);
if( (fd1=fopen(OutputFileName,“wb”)) == NULL )
exit4error(“output file error\n”);
}
prevSCR=2576980377600.0;
}

if(fwrite(buff1, 4, 512, fd1) != 512)
exit4error(“output file error\n”);
}
return 0;
}
</pre>
reply

Feedback
08-17-2013 01:31 AM
Doew

/**
- Copy and paste the C code portion of my comment into a Text Editor
- Read C comments on how to compile and use this program
- Save the C code as: dvchop.c
- Compile dvchop.c
- Put the dvchop program binary where it can be conveniently executed.

- Use dvdisaster or readcd to perform the unfinalized DVD recovery
(note that an unfinalized DVD is not mountable)
- Use dvchop to extract .vob Titles
- Pick the .vob files you want to keep.

The purposes of this program are to:
- produce clean .vob files for editing recorded video.
- extract contiguous VOB sectors from an .iso copy of an unfinalized DVD.
- recover DVD video without re-encoding, decoding or muxing.
(note that the produced output files may be rejoined to reproduce
the original input file)

Extra:
If you want to make One title from several, use the following type of command:
cat movie_002.vob movie_005.vob | ffmpeg -i /dev/stdin -target dvd -vcodec copy -acodec copy test.vob
*/

#include <stdio.h>
#include <stdlib.h>

/**
Compile as follows for > 2GB file access
gcc -Wall -D_FILE_OFFSET_BITS=64 dvchop.c -o dvchop

License: GNU LGPL, version 3
Version: dvchop [November 23 2010 r2]
Copyright 2008, David Savinkoff

This program reads concatenated .VOB files or an .iso file
from stdin and makes less than 402 files using the output
filename provided on the command line.
When an output file ends with .vob.j, it is not recognized.
Note that this program will not recognize anything if the
file input doesn’t start on the first byte of a sector.

usage: cat filename(s) | dvchop output_filename
usage: cat VTS_01_?.VOB | dvchop dvd
usage: cat unfinalizedDVD.iso | dvchop movie
*/

void exit4error(char *string)
{ fputs(string, stderr); exit(1);
}

int main(int argc, char *argv[])
{ FILE *fd1;
void *buff1;
char OutputFileName[255];
unsigned char *chk;
double SCR, prevSCR;
int SubFileNumber=0;

if(argc!=2) exit4error(“usage: cat filename(s) | dvchop output_filename\n”);
if((buff1=calloc(512,4)) == NULL) exit4error(“calloc error\n”);

chk=buff1;
snprintf(OutputFileName, 64, "%s_%.3d.vob.j”, argv[1], SubFileNumber);
printf(“processing: %s\n”,OutputFileName);

if((fd1=fopen(OutputFileName,“wb”)) == NULL)
exit4error(“output file error\n”);
prevSCR=2576980377600.0; /* 1.0 greater than largest value */
for(;;)
{ if(fread(buff1, 4, 512, stdin) != 512)
exit(0);

/* MPEG-2 Program Pack == 0x000001BA */
if(chk[0]==0x00 && chk[1]==0x00 && chk[2]==0x01 && chk[3]==0xBA)
{ SCR=300.0*((chk[8]>>3)+chk[7]*32.0+(((chk[6]&~7)>>1)+(chk[6]&3))*8192.0+
chk[5]*1048576.0+(((chk[4]&(8+16+32))>>1)+(chk[4]&3))*268435456.0)
+ (((chk[9]>>1)+(((unsigned)(chk[8]&3))<<7)) % 300);

/* Note: maximum allowed interval between SCRs is 700ms */
if((SCR <= prevSCR) || (SCR > prevSCR+18900000.0))
{ fclose(fd1);
if(SubFileNumber++ >400)
exit4error(“too many output files generated\n”);
snprintf(OutputFileName, 64, "%s_%.3d.vob”, argv[1], SubFileNumber);
printf(“processing: %s\n”,OutputFileName);
if( (fd1=fopen(OutputFileName,“wb”)) == NULL )
exit4error(“output file error\n”);
}
prevSCR=SCR;
}else
{
if(prevSCR<2576980377600.0)
{ fclose(fd1);
if(SubFileNumber++ >400)
exit4error(“too many output files generated\n”);
snprintf(OutputFileName, 64, "%s_%.3d.vob.j”, argv[1], SubFileNumber);
printf(“processing: %s\n”,OutputFileName);
if( (fd1=fopen(OutputFileName,“wb”)) == NULL )
exit4error(“output file error\n”);
}
prevSCR=2576980377600.0;
}

if(fwrite(buff1, 4, 512, fd1) != 512)
exit4error(“output file error\n”);
}
return 0;
}
reply

Feedback
08-17-2013 01:35 AM
Doew

Reply

Topic
Your reply
Your name
or log in
Verify you're human

By submitting this form you agree to our posting rules,
privacy policy and our disclaimer.