Extract filesystem and MPEG streams from Philips CD-i disk images
Philips CD-i disc filesystem is not supported by modern operating systems. It was last supported natively in Windows 3.1.
Third-party Windows 95/98/ME filesystem driver exists but it did not work for me.
There's also a Windows program called ISOBuster which was able to partially decode the filesystem but came short of decoding any useful media.
This tool allows extracting most of the media content stored on CD-i disc, provided your drive can read it on a physical level (many can't).
It supports extracting the complete filesystem, as well as real-time MPEG streams (a.k.a. "Full Motion Extension"). These MPEG streams cannot be accessed using only the filesystem queries because their playback requires information from sector headers.
Additionally, this tool's source code includes a library for parsing CD-ROM XA and CD-i sectors, and navigating CD-i filesystem.
Install required libraries:
brew install boost
brew install libpng
Build:
mkdir build
cd build
cmake ..
make
Install:
sudo make install
It was last built using Xcode 13.2.1 and tested on macOS 12.0.1.
Install required libraries:
sudo apt-get install boost1.67-dev
sudo apt-get install libpng-dev
Build:
mkdir build
cd build
cmake ..
make
Install:
sudo make install
Last built using gcc (Raspbian 8.3.0-6+rpi1) 8.3.0
Before you can use this tool, you need to dump the contents of CD-i track from the disc. Note that data must be extracted as raw, preserving all sector content, not just audio parts.
For example:
- Install cdda2wav:
brew install cdda2wav
- Unmount disk prior to ripping (use your actual device):
sudo umount /dev/disk4
- Extract CD-i track:
sudo cdda2wav output-format=raw cdrom-endianess=big -t 0 image.raw
- Finally, run the tool to decode the image:
cdix print image.raw
At this point you should see a list of directories and files stored on CD-i.
cdix extract-all image.raw
- Extract ADPCM audio