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. The Fast Pass

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

ddrescue -n -b 2048 /dev/diskN battlestar.img battlestar.map

3. The Recovery Pass

Retry the difficult or damaged sectors identified in the mapfile.

ddrescue -d -r3 -b 2048 /dev/diskN battlestar.img battlestar.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. You must remux the data to "unlock" the video and audio streams.

1. Mount the Image

hdiutil attach battlestar.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 /Volumes/KingArthur/outbox/

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 meets international preservation standards for lossless, intra-frame video.

The 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

The 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 \
    "Battlestar_Archival_Master.mkv"

The Command (Batch Loop)

To process all extracted titles in a directory:

for f in /Volumes/KingArthur/outbox/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 \
    "/Volumes/KingArthur/outbox/ffmpeg-ddrescue/$(basename "$f" .mkv)_archival.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.

  • Deinterlacing: For pure archival storage, do not deinterlace. To make the files "viewing-ready," add:

-vf yadif=0:-1:0

Clone this wiki locally