Skip to content

Disc Capture

Thomas May edited this page Apr 8, 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, which is essential for preserving aging media.

1. Identify your Drive

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

diskutil list

2. 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

3. 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