dvd::rip How to solve the “AVI file has no video data” problem in Cluster mode

dvd::rip is a full featured DVD copy program written in Perl. It provides an easy to use but feature-rich Gtk+ GUI to control almost all aspects of the ripping and transcoding process. It uses the widely known video processing swissknife transcode and many other Open Source tools. dvd::rip itself is licensed under GPL / Perl Artistic License.”

It works pretty good and can also make use of multiprocessor CPUs by using the “Cluster Mode”, i.e. you start n nodes on your PC and dvd::rip will do the load balancing.

Unfortunately, some users (including me) have encountered a problem in cluster mode:
The process will stop with an error of “AVI file has no video data” for PSU1 while merging the video files.

http://ubuntuforums.org/showthread.php?t=819529
http://forum.ubuntuusers.de/topic/dvd:rip-cluster:-fehler-beim-merging/#post-964897
http://www.exit1.org/archive/dvdrip-users/2007-04/msg00049.html

The strange thing is that the source material only has a single PSU (Program Stream Unit) with actual data (PSU0).

PSU1 is empty, therefore transcode will throw this error.

Encoding the material in normal (not cluster) mode works, but it does not make use of your multiprocessor CPU and is therefore pretty slow.

I’ve applied a small hack to one of the Perl files so that very small PSUs (< 100 frames) will be ignored by dvd::rip.

For me, this has fixed the error and dvd::rip encodes the material without problems.

To patch the file, open the file /usr/share/perl5/Video/DVDRip/Title.pm and change the function calc_program_stream_units (around line 1205) from:


sub calc_program_stream_units {
...
 if ( $last_frame != 0 ) {
  push @program_stream_units,
  Video::DVDRip::PSU->new(
   nr     => $current_unit,
   frames => $last_frame,
  );
 }
...
1;
}

to:

sub calc_program_stream_units {
...
# Hack to remove very small PSUs (<100 frames)
# Christian Erpelding, http://www.flattermann.net
# 2010-10-26
 if ( $last_frame >= 100 ) {
  push @program_stream_units,
  Video::DVDRip::PSU->new(
   nr     => $current_unit,
   frames => $last_frame,
  );
 }
...
1;
}

PS: I’m using dvd::rip 0.98.11-0.0 from the Debian Multimedia Squeeze Repository (debian-multimedia.org).

If you like my work, buy me a beer. (Suggested: 3€ for a beer, or more for more beer ;-) )

Tags: , ,

One Response to “dvd::rip How to solve the “AVI file has no video data” problem in Cluster mode”

  1. Claudio says:

    Sadly your fix doesn’t work for me, same error after patching :(

Leave a Reply