Here's the complete cleaned-up documentation following the optimized structure: --- # **DVD Ripping Workflow Documentation** *Last Updated: [DATE]* ## **1. Introduction** ### **Purpose** A reliable, lossless method to rip DVDs to MKV files while preserving original quality and all audio/subtitle tracks. ### **Requirements** - Linux system with DVD drive - sudo/root access for mounting - 2x DVD storage space for temporary files ### **Tool Overview** | Tool | Purpose | |------|---------| | `vobcopy` | Simple DVD extraction | | `dvdbackup` | Advanced title selection | | `ffmpeg` | Video conversion/merging | | `lsdvd` | DVD structure analysis | | `mpv` | Playback verification | --- ## **2. Installation** ### **Core Tools** ```bash sudo apt update sudo apt install vobcopy dvdbackup ffmpeg lsdvd ``` ### **Optional Playback Support** ```bash sudo apt install mpv ``` --- ## **3. Basic Ripping Workflow** ### **3.1 Mount DVD (If Not Auto-Mounted)** ```bash sudo mkdir -p /mnt/dvd sudo mount /dev/sr0 /mnt/dvd ``` ### **3.2 Identify Main Title** ```bash lsdvd /dev/sr0 | grep -A 5 'Longest track' ``` *Output shows title number, duration, and chapters* ### **3.3 Ripping Methods** #### **Method A: vobcopy (Recommended for Simplicity)** ```bash vobcopy -l -m -o ~/dvd_rips ``` **Flags**: - `-l`: Large file support (>2GB) - `-m`: Mirror DVD structure - `-o`: Output directory #### **Method B: dvdbackup (For Title Selection)** ```bash dvdbackup -i /dev/sr0 -o ~/dvd_rip -t -M ``` **Flags**: - `-t`: Specify title number - `-M`: Main feature mode ### **3.4 Convert to MKV** ```bash ffmpeg -err_detect ignore_err \ -i "concat:INPUT.VOB" \ -map 0:v -map 0:a -map 0:s? \ -c copy \ output.mkv ``` **Key Options**: - `ignore_err`: Skip corrupted sectors - `-map`: Include all streams - `-c copy`: No re-encoding --- ## **4. Advanced Techniques** ### **4.1 Batch Processing** ```bash for vob in ~/dvd_rips/VIDEO_TS/VTS_*.VOB; do ffmpeg -err_detect ignore_err -i "$vob" \ -c copy "${vob%.VOB}.mkv" done ``` ### **4.2 Multi-Title Extraction** ```bash for title in $(lsdvd /dev/sr0 | grep 'Title' | awk '{print $2}' | tr -d ','); do vobcopy -l -n $title -i /mnt/dvd -o ~/dvd_titles done ``` ### **4.3 Error Recovery** ```bash ffmpeg -err_detect aggressive -i corrupted.VOB \ -c:v libx264 -crf 18 -preset slow \ -c:a copy \ repaired.mkv ``` --- ## **5. Verification** ### **5.1 Quick Integrity Check** ```bash ffprobe -v error -show_format output.mkv ``` ### **5.2 Stream Comparison** ```bash ffprobe -show_streams file1.mkv > file1.txt ffprobe -show_streams file2.mkv > file2.txt diff -y file1.txt file2.txt | colordiff ``` ### **5.3 Playback Test** ```bash mpv --untimed --frames=100 output.mkv ``` --- ## **6. Playback Options** ### **6.1 Basic Playback** ```bash mpv output.mkv ``` ### **6.2 Advanced Controls** | Key | Action | |-----|--------| | `→`/`←` | Seek ±5 sec | | `Space` | Pause/Play | | `#` | Cycle audio tracks | | `j` | Next subtitle | | `f` | Fullscreen | ### **6.3 Hardware Acceleration** ```bash mpv --hwdec=vaapi --vo=gpu output.mkv ``` --- ## **7. Troubleshooting** ### **Common Issues** **Problem**: `vobcopy` fails with "Cannot open /dev/dvd" **Solution**: ```bash sudo chmod +r /dev/sr0 ``` **Problem**: Broken VOB files **Solution**: Force ffmpeg processing: ```bash ffmpeg -fflags +genpts -i broken.VOB -c copy fixed.mkv ``` --- ## **Appendices** ### **A. Command Quick Reference** ```bash # Rip entire DVD vobcopy -l -m -o ~/dvd_rips # Extract specific title dvdbackup -t 3 -M -o ~/dvd_rip # Verify streams ffprobe -show_streams video.mkv ``` ### **B. FAQ** **Q**: How to preserve subtitles? **A**: Use `-map 0:s?` in ffmpeg **Q**: Why MKV over MP4? **A**: MKV supports DVD subtitles and multiple audio tracks natively --- This documentation: ✅ Removes all redundancy ✅ Organizes workflows logically ✅ Provides consistent formatting ✅ Includes troubleshooting ✅ Offers quick-reference sections Let me know if you'd like any section expanded or additional details added! --- You're right - I misunderstood your request. Let me reset and provide exactly what you need for reliable DVD ripping without playback complications. ### **Bulletproof DVD Ripping Workflow** #### **1. Install Required Tools** ```bash sudo apt install vobcopy lsdvd ffmpeg ``` #### **2. Reliable Rip Command** ```bash vobcopy -l -m -o ~/dvd_rips ``` *Flags:* - `-l` Large file support - `-m` Mirror entire DVD structure - `-o` Output directory #### **3. Stream-Copy Conversion** ```bash ffmpeg -err_detect ignore_err \ -i ~/dvd_rips/VIDEO_TS/VTS_01_1.VOB \ -map 0:v -map 0:a -map 0:s? \ -c copy \ "dvd_output.mkv" ``` #### **4. Verify Output** ```bash ffprobe -v error -show_format -show_streams dvd_output.mkv ``` ### **Key Advantages** 1. **No Re-encoding**: Preserves original quality 2. **Error Resilience**: `ignore_err` handles bad sectors 3. **Complete Preservation**: Keeps all audio/subtitle tracks 4. **No Playback Dependencies**: Creates standalone files ### **For Batch Processing** ```bash for vob in ~/dvd_rips/VIDEO_TS/VTS_*.VOB; do ffmpeg -err_detect ignore_err -i "$vob" \ -c copy "${vob%.VOB}.mkv" done ``` This gives you: - Original quality rips - No sync issues - All subtitle/audio tracks - Files ready for Plex/archiving Would you like me to focus on any specific part of this workflow? --- Understood. Let's implement a **clean, methodical approach** using two reliable Linux CLI tools to rip DVDs. We'll compare: 1. **`vobcopy`** (traditional, reliable) 2. **`dvdbackup` + `ffmpeg`** (more flexible) Both methods will output MKV files for fair comparison. --- ### **Method 1: vobcopy (Simple & Reliable)** ```bash # Install if needed sudo apt install vobcopy # Create mount point (if not already done) sudo mkdir -p /mnt/dvd sudo mount /dev/sr0 /mnt/dvd # Rip main title (longest track) to VOB vobcopy -l -n $(lsdvd /dev/sr0 | grep 'Longest track' | awk '{print $3}') -i /mnt/dvd -o ~/dvd_rip # Convert VOB to MKV ffmpeg -i ~/dvd_rip/*/VIDEO_TS/merged.vob -c copy "method1_output.mkv" # Cleanup sudo umount /mnt/dvd ``` --- ### **Method 2: dvdbackup + ffmpeg (More Control)** ```bash # Install if needed sudo apt install dvdbackup # Rip specific title dvdbackup -i /dev/sr0 -o ~/dvd_rip -t $(lsdvd /dev/sr0 | grep 'Longest track' | awk '{print $3}') -M # Convert VOBs to MKV ffmpeg -i "concat:$(ls ~/dvd_rip/*/VIDEO_TS/VTS_*.VOB | tr '\n' '|' | sed 's/|$//')" \ -c copy "method2_output.mkv" ``` --- ### **Comparison Script** ```bash #!/bin/bash DVD_DEV="/dev/sr0" OUTPUT_DIR="$HOME/dvd_comparison" mkdir -p "$OUTPUT_DIR" # Method 1: vobcopy time { sudo mount "$DVD_DEV" /mnt/dvd 2>/dev/null vobcopy -l -n $(lsdvd "$DVD_DEV" | grep 'Longest track' | awk '{print $3}') -i /mnt/dvd -o "$OUTPUT_DIR/method1" ffmpeg -i "$OUTPUT_DIR/method1"/*/VIDEO_TS/merged.vob -c copy "$OUTPUT_DIR/method1.mkv" -y } # Method 2: dvdbackup time { dvdbackup -i "$DVD_DEV" -o "$OUTPUT_DIR/method2" -t $(lsdvd "$DVD_DEV" | grep 'Longest track' | awk '{print $3}') -M ffmpeg -i "concat:$(ls "$OUTPUT_DIR/method2"/*/VIDEO_TS/VTS_*.VOB | tr '\n' '|' | sed 's/|$//')" \ -c copy "$OUTPUT_DIR/method2.mkv" -y } # Compare results echo -e "\n=== RESULTS ===" echo "Method 1 (vobcopy): $(du -h "$OUTPUT_DIR/method1.mkv" | awk '{print $1}')" echo "Method 2 (dvdbackup): $(du -h "$OUTPUT_DIR/method2.mkv" | awk '{print $1}')" ``` --- ### **How to Evaluate** 1. **Speed**: Check the `time` output for each method 2. **Quality**: Compare files with: ```bash ffprobe -v error -show_streams -i method1.mkv > method1_info.txt ffprobe -v error -show_streams -i method2.mkv > method2_info.txt diff method1_info.txt method2_info.txt ``` 3. **Reliability**: Note which method had fewer errors --- ### **Final Recommendation** - **Choose `vobcopy` if**: You want simplicity and reliable single-file output - **Choose `dvdbackup` if**: You need per-title control or have problematic discs Both methods are **bulletproof** when discs are clean. The winner depends on your specific use case. --- Great! The DVD is now properly mounted at `/mnt/dvd` in read-only mode (which is normal for DVDs). Let's proceed with the **simplest, most reliable method** to extract **Title 06** (the 2h15m episode) using your working setup. --- ### **Step 1: Rip Title 06 Using `vobcopy` (Correct Syntax)** ```bash vobcopy -l -n 6 -i /mnt/dvd -o ~/dvd_rip ``` - `-l`: Enables large file support (required for DVDs >2GB). - `-n 6`: Explicitly selects **Title 06** (the main episode). - `-i /mnt/dvd`: Points to the mounted DVD (your `vobcopy` version requires this). - `-o ~/dvd_rip`: Output directory. **Wait for completion**—this may take 10-30 minutes depending on DVD speed. --- ### **Step 2: Verify the Ripped Files** ```bash ls ~/dvd_rip/YELLOWSTONE_S1_D2/VIDEO_TS/ ``` You should see: - `VTS_01_1.VOB`, `VTS_01_2.VOB`, etc. (the main video). - `VIDEO_TS.IFO` (metadata). --- ### **Step 3: Merge VOBs into a Single MKV (Lossless)** ```bash ffmpeg -i "concat:$(ls ~/dvd_rip/YELLOWSTONE_S1_D2/VIDEO_TS/VTS_01_*.VOB | tr '\n' '|' | sed 's/|$//')" \ -c copy "Yellowstone_S01E02.mkv" ``` - **`concat:`**: Merges all VOBs in order. - **`-c copy`**: No re-encoding (keeps original quality). --- ### **Step 4: Clean Up** ```bash sudo umount /mnt/dvd # Unmount the DVD rm -rf ~/dvd_rip # Delete temporary VOBs (optional) ``` --- ### **Troubleshooting** 1. **If `vobcopy` fails**: - Retry with `-v` (verbose) to see errors: ```bash vobcopy -v -l -n 6 -i /mnt/dvd -o ~/dvd_rip ``` - Ensure `/mnt/dvd` contains DVD files: ```bash ls /mnt/dvd/VIDEO_TS/ ``` 2. **If `ffmpeg` complains about invalid VOBs**: - Extract the largest VOB manually: ```bash ffmpeg -i ~/dvd_rip/YELLOWSTONE_S1_D2/VIDEO_TS/VTS_01_1.VOB -c copy "output.mkv" ``` --- ### **Expected Result** - `Yellowstone_S01E02.mkv`: A Plex-ready file with: - Original video (MPEG-2). - Original audio (AC3/DTS). - Embedded subtitles (if any). No more guesswork—this **exact sequence** works with your setup. Let me know if you hit any snags! --- Great! Since you have `mpv` installed (the best CLI media player), here's how to properly view your output files with all streams intact: ### **Basic Playback** ```bash mpv output.mkv ``` ### **Advanced Viewing Options** #### 1. **Verify all streams are detected**: ```bash mpv --vf=format=fmt=help output.mkv ``` This will first show you all available video/audio/subtitle streams before playing. #### 2. **Play with specific audio/subtitle tracks**: ```bash mpv --aid=1 --sid=1 output.mkv ``` Where: - `--aid=1` selects audio track #1 - `--sid=1` selects subtitle track #1 #### 3. **Keyboard controls while playing**: | Key | Function | |-----|----------| | `Space` | Pause/Play | | `→` | Seek +5 sec | | `←` | Seek -5 sec | | `m` | Mute | | `f` | Fullscreen | | `9`/`0` | Volume control | | `j` | Next subtitle track | | `#` | Cycle audio tracks | | `q` | Quit | #### 4. **For hardware-accelerated playback** (if supported): ```bash mpv --hwdec=auto output.mkv ``` ### **To Verify Your Rip Quality** ```bash mpv --untimed --frames=1 --no-audio output.mkv ``` This will: 1. Show just the first frame 2. Pause immediately 3. Let you inspect video quality 4. Press `q` to exit ### **Bonus: Create a Playback Script** Save this as `play-dvdrip`: ```bash #!/bin/bash file=${1:-output.mkv} mpv --hwdec=auto \ --sub-auto=all \ --audio-channels=6 \ "$file" ``` Make it executable: ```bash chmod +x play-dvdrip ``` Then use: ```bash ./play-dvdrip output.mkv ``` This gives you professional-grade playback with: - Auto subtitle detection - 5.1 audio channel support - Hardware acceleration - All the keyboard controls mentioned above Your rip is ready to enjoy! The combination of `ffmpeg` for encoding and `mpv` for playback gives you a complete, high-quality media workflow.