From: Martin Pitt Date: Wed, 11 Feb 2026 08:06:21 +0000 (+0100) Subject: convert_dvd.sh: Fixes X-Git-Url: https://piware.de/gitweb/?a=commitdiff_plain;h=ee50a1c8e40433f18e14e9778e05576f28bf275a;p=bin.git convert_dvd.sh: Fixes --- diff --git a/convert_dvd.sh b/convert_dvd.sh index 24c5512..54bbb70 100755 --- a/convert_dvd.sh +++ b/convert_dvd.sh @@ -25,19 +25,19 @@ else 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)" @@ -62,9 +62,9 @@ fi | grep "^Title:" | while read -r line; do 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 \