Skip to content

Disc Capture

Thomas May edited this page Jun 23, 2026 · 6 revisions

CDs, DVDs, and Blu-ray discs require different forms of capture and fall in a grey area between digital and video. They are on what we would think of as an analog carrier, as it is a physical item that plays in a linear fashion, but are a digital file (or multiple files). We capture these in slightly different ways:

DVD Discs (including copy-protected sources)

Workflow: ddrescue โ†’ hdiutil โ†’ MakeMKV โ†’ FFmpeg

This guide covers the process of extracting data from physical DVDs (including damaged discs), decrypting the content, and transcoding it into a professional archival-standard master file.


Phase 1: Bit-Level Recovery (ddrescue)

Unlike standard copying tools, ddrescue does not stop when it hits a read error. It maps the disc and recovers as much data as possible.

1. Identify your Drive

Find the identifier for your DVD drive (e.g., /dev/disk4):

diskutil list

2. Unmount the Drive

Using the mount location you found in the last step (e.g., /dev/disk6):

diskutil unmountDisk /dev/disk6

3. Fast Pass

Copy the "easy" data first and create a mapfile to track progress.

ddrescue -n -b 2048 /dev/diskN /output/path/uniqueID.img /output/path/uniqueID.map

4. Recovery Pass

Retry the difficult or damaged sectors identified in the mapfile. Note: Paths must stay the same here, as ddrescue will reference the files from the fast pass.

ddrescue -d -r3 -b 2048 /dev/diskN /output/path/uniqueID.img /output/path/uniqueID.map
  • -d: Direct disc access (bypasses kernel cache)
  • -r3: Retries bad sectors 3 times before giving up

Phase 2: Mounting & Decryption

DVD images are encrypted with CSS if they are from copy-protected sources. You must remux the data to decrypt the video and audio streams.

1. Mount the Image

hdiutil attach uniqueID.img

Verify the mount path, usually /Volumes/[DISC_NAME].

2. Decrypt with MakeMKV

Use the command-line interface to extract all titles into decrypted MKV files.

makemkvcon mkv file:/Volumes/[DISC_NAME]/VIDEO_TS all /output/path/

This produces files like title_t00.mkv, title_t01.mkv, etc.


Phase 3: Archival Transcoding (FFmpeg)

The final step moves the decrypted media into the FFV1 video codec and PCM audio format. This matches our preservation standards for lossless, intra-frame video.

Archival Specification

Component Specification FFmpeg Flag
Video Codec FFV1 version 3 -c:v ffv1 -level 3
GOP Intra-frame only -g 1
Bit Depth 10-bit -pix_fmt yuv422p10le
Error Control 24 Slices + CRC -slices 24 -slicecrc 1
Audio Codec PCM (Uncompressed) -c:a pcm_s24le
Sample Rate 48,000 Hz -ar 48000

Command (Single File)

ffmpeg -i title_t00.mkv \
    -map 0:v:0 -map 0:a:0 \
    -c:v ffv1 -level 3 -coder 1 -context 1 -g 1 -slices 24 -slicecrc 1 \
    -pix_fmt yuv422p10le \
    -c:a pcm_s24le -ar 48000 \
    -sn \
    "uniqueID.mkv"

Optional Command (Batch Loop)

To process all extracted titles in a directory:

for f in /output/path/title_t*.mkv; do
    ffmpeg -i "$f" \
    -map 0:v:0 -map 0:a:0 \
    -c:v ffv1 -level 3 -coder 1 -context 1 -g 1 -slices 24 -slicecrc 1 \
    -pix_fmt yuv422p10le -c:a pcm_s24le -ar 48000 \
    "/output/path/preservation-files/$(basename "$f" .mkv)_pres.mkv"
done

Troubleshooting & Tips

  • Missing Video: If FFmpeg reports "none" for a codec, ensure you used MakeMKV first. Raw .img files from ddrescue are encrypted and cannot be read directly by FFmpeg.

  • Aspect Ratio: If the video appears "squashed" (DVDs use non-square pixels), add -aspect 4:3 or -aspect 16:9 before the output filename.

Clone this wiki locally