2009-11-14. From a set of video DVD images, the `playability' falls into two groups, and these groups correspond perfectly to whether the `file' command calls the files UDF or ISO-9660: UDF filesystem data (version 1.5) ISO 9660 CD-ROM filesystem data UDF filesystem data (unknown version, id 'NSR0 Several players cope happily with either, e.g. xine. But mplayer is most important to me, as the purpose is to convert these files to much smaller (H.264 + oggvorbis) in Matroska, and I use mencoder and mplayer for pretty much all the work in doing this. I've never had troubles before, so these must be pretty unusual images to get, apparently re-encoded by someone else en route. mplayer plays the udf files as (for example): mplayer -dvd-device file.iso dvd://2 but it fails on the iso9660 files, giving this sort of message: Playing dvd://2. libdvdread: Using libdvdcss version 1.2.10 for DVD access libdvdnav:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.IFO failed libdvdnav:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.BUP failed libdvdread: Can't open file VIDEO_TS.IFO. Can't open VMG info! No stream found to handle url dvd://2 which makes it seem pretty likely it wanted UDF structure ... if, on the other hand, the file is played directly as a video file, mplayer file.iso then the iso9660 ones work, BUT of course there is then lots of menu and warning junk at the beginning; it presumably is playing all tracks together in sequence, and if the file is mounted first, then the mount-point is used as the source, it used to work: mount -t iso9660 -o loop,ro file.iso /mnt/iso mplayer -dvd-device /mnt/iso dvd://2 but note the past tense: the latest batch of images, together with my system after its several-year-step upgrade, gives: Playing dvd://2. libdvdread: Using libdvdcss version 1.2.10 for DVD access libdvdread: Attempting to use device /dev/loop0 mounted on /mnt/iso for CSS authentication libdvdnav:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.IFO failed libdvdnav:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.BUP failed libdvdread: Can't open file VIDEO_TS.IFO. Can't open VMG info! No stream found to handle url dvd://2 just as for the plain image (above), though now making it clear that it's trying to use the image (/dev/loop0; the block-device access to the image) rather than just the mount-point. Well, it was a little tedious even in the past to coordinate eight parallel jobs of mounting images rather than just accessing them directly; also, the latest system is more arkward about user mounts of files through loop devices: having mounted /vid/img on /mnt/img by the fstab line including 'loop', the attempted umount in the latest gentoo refuses, saying that as it's /dev/loopN, not the original /vid/img, that's mounted, it won't do it (mtab disagrees with fstab), so one then has to create the loop device manually by losetup /dev/loop0 /vid/img (after chown /dev/loop[0-9]) and mount that (from fstab), then umount and losetup -d /dev/loop0: all rather less fun to bother putting in the scripts that get set up for a batch of recodings ... we seek a better way. Why not try converting the files from the iso9660 image to a udf structure? Fix the problem at source. First try (failed) was to create empty files a little larger than the image, make a (default) udf filesystem on them, copy the iso9660 files across, then hope that was ok. for f in *.iso ; do s=`ls -l $f | awk '{ print $5 }'` S=$((s+100000000)); dd if=/dev/zero of=../$f bs=1 count=0 seek=$S losetup /dev/loop1 ../$f mkudffs /dev/loop1 mount -t udf -o rw /dev/loop1 U mount -t iso9660 -o ro,loop $f I cp -Rv I/* U/ umount I umount U losetup -d /dev/loop1 done This failed to play, and was not even recognised by `file'. A little searching gave this: http://web.archive.org/web/200/http://dvd.chevelless230.com/index.html (via http://ubuntuforums.org/showthread.php?p=1789415). Following the prescription there, but ignoring the claims of how important permissions are (why? just that they saw these ones?), yet including the AUDIO_TS directory `just in case', THIS WORKED: mkdir U D mkdir D/AUDIO_TS D/VIDEO_TS for f in *.iso do mount -t iso9660 -o loop,ro $f U echo "$f" ls -lR U mount --bind U/VIDEO_TS D/VIDEO_TS mkisofs -dvd-video -o ../$f D/ umount D/VIDEO_TS/ umount U done of course, if any DVD had contained AUDIO_TS then it should have been used directly without the bind mount; but none did. So (cutting the very long story very short), a DVD video image needs to be a particular form of UDF filesystem, apparently even with a particular ordering of files: cdrtools' mkisofs can do this: mkisofs -dvd-video -o outfile.iso image_directory/