fi
# Parse lsdvd output and process titles
-if [ -n "$SPECIFIC_TITLE" ]; then
- echo "Extracting title $SPECIFIC_TITLE..."
- echo "Title: $SPECIFIC_TITLE, Length: 99:99:99.999"
-else
- echo "Scanning DVD..."
- lsdvd "$DVD_DEVICE"
-fi | grep "^Title:" | while read -r line; do
+echo "Scanning DVD..."
+lsdvd "$DVD_DEVICE" | grep "^Title:" | while read -r line; do
# Extract title number and duration
title_num=$(echo "$line" | sed 's/Title: \([0-9]*\),.*/\1/')
duration=$(echo "$line" | sed 's/.*Length: \([0-9:\.]*\).*/\1/')
+ # Skip if specific title requested and this isn't it
+ if [ -n "$SPECIFIC_TITLE" ] && [ "$title_num" != "$SPECIFIC_TITLE" ]; then
+ continue
+ fi
+
# Convert duration to seconds (HH:MM:SS.mmm format)
- IFS=':.' read -r hours minutes seconds milliseconds <<< "$duration"
+ IFS=':.' read -r hours minutes seconds _milliseconds <<< "$duration"
total_seconds=$((10#$hours * 3600 + 10#$minutes * 60 + 10#$seconds))
echo "Title $title_num: $duration ($total_seconds seconds)"
echo " -> Converting to: $output_file"
# Convert the title
- mplayer dvd://$title_num -dvd-device "$DVD_DEVICE" -dumpstream -dumpfile /dev/stdout | \
- ffmpeg -i pipe:0 \
- -map 0:v:0 -map 0:a:0 -map 0:a:2 -map 0:#0x20 -map 0:#0x22 \
+ mplayer "dvd://$title_num" -dvd-device "$DVD_DEVICE" -dumpstream -dumpfile /dev/stdout < /dev/null | \
+ nice ffmpeg -i pipe:0 \
+ -map 0:v:0 -map 0:a:0 -map 0:a:2 -map 0:#0x20? -map 0:#0x22? \
-c:v libx264 -preset medium -crf 23 \
-c:a aac -ac 2 -b:a 128k \
-c:s dvdsub \