logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#701 26-04-2020 12:26:05

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

ce script , avec handbrake , fonctionne parfaitement :

il est long , mais il fonctionne .

https://debian-facile.org/viewtopic.php?id=25774&p=10

et je peux et voire et lire mes *.mkv

#!/bin/bash

## Anonyme
## sudo pacman -S ffmpeg handbrake-cli mkvtoolnix-cli mplayer lsdvd mediainfo

##                               x264
##                               x264_10bit
##                               nvenc_h264
##                               x265
##                               x265_10bit
##                               x265_12bit
##                               nvenc_h265
##                               mpeg4
##                               mpeg2
##                               VP8
##                               VP9
##                               theora




PATH=$PATH:/sbin:/usr/sbin

## Condition : un seul dvd-vidéo.
mapfile -t  BLKID < <(blkid /dev/sr* |sed -E 's/^([^:]+): .*/\1/')

if [[ "${#BLKID[@]}" -eq  "0" ]] ; then
    echo "Aucun DVD trouvé: abandon"
    exit 0
fi

idx=0
for dev in "${BLKID[@]}"; do
    mnt=$(mount |sed -n -E "s/^${dev//\//\\\/} on (.*) type .*\$/\\1/p")
    [[ -z "$mnt" ]] && continue
    if [[ -f "$mnt/VIDEO_TS/VIDEO_TS.IFO" ]]; then
        DEVICES[$idx]="$dev"
        MOUNT_POINTS[$idx]="$mnt"
        idx=$((idx+1))
    fi
done

if [[ "${#DEVICES[@]}" -eq 0 ]]; then
    echo "Aucun dvd vidéo monté : Abandon"
    exit 0
elif [[ "${#DEVICES[@]}" -gt 1 ]];  then
    echo "Il y a plus d'un dvd video détecté : Abandon"
    exit 0
fi

DEVICE=${DEVICES[0]}
MOUNT_POINT=${MOUNT_POINTS[0]}

## Label du dvd-vidéo & nombre total de titres sur celui-ci.
idx=0
TITLE_COUNT=0
regexp='^Title: '
while read -r line; do
    idx=$((idx+1))
    if [[ "$idx" -eq 1 ]]; then
        TITLE=${line#*: }
    elif [[ "$line" =~ $regexp ]]; then
        TITLE_COUNT=$((TITLE_COUNT+1))
    fi
done < <(lsdvd "$DEVICE" 2>/dev/null)

unset regexp dev mnt idx BLKID DEVICES MOUNT_POINTS

if [[ -z "$TITLE" ]]; then
    echo "Pas de dvd vidéo trouvé : abandon"
    exit 0
fi

echo "Proceed..."





echo "DVD-Vidéo : $TITLE"
read -r -p "Ce nom convient-il ? [Y/n] " input
 
case $input in
    [yY][eE][sS]|[yY])
 echo "Yes"

 mkdir -p "$TITLE/IFOS"
 ;;
    [nN][oO]|[nN])
 echo "No"
 read -p "Entrer un nouveau nom: " TITLE
 
 mkdir -p "$TITLE/IFOS"
       ;;
    *)
 echo "Invalid input..."
 echo "Quit"
 exit 1
 ;;
esac



for (( i=1; i<=TITLE_COUNT; i++ ))
do


## Titres d'une durée de plus de .... secondes [ ici, 2 seconde]
               
    LENGTH=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify -dvd-device "$DEVICE" dvdnav://"$i" 2>/dev/null | \
              sed -E -n 's/^.*ID_LENGTH=([0-9]+).*$/\1/p')
           
    LIMIT=10
    [[ "$LENGTH" -le "$LIMIT" ]] && continue




## COMPARAISON ENTRE DVDNAV (INFO RÉEL) & LSDVD (INFO) SUR LA RÉALITÉ EXISTANTE DES STREAMS AUDIOS.
LAVF_STREAM_DVDNAV=$(mplayer -vo null -ao null -frames 0 -identify -dvd-device "$DEVICE" dvdnav://"$i"  2>/dev/null | awk '/-aid/ { print $7 }')
COUNT_LAVF_STREAM_DVDNAV=$(echo "$LAVF_STREAM_DVDNAV" |wc -w)
COUNT_AUDIO_LSDVD=$(lsdvd -a "$DEVICE" -t "$i"  2>/dev/null | grep -c "Audio:" )


## POUR N'AVOIR QUE LE FRANÇAIS.
AUDIO_FRENCH=$(lsdvd -a "$DEVICE" -t "$i" 2> /dev/null | grep "Language: fr" | awk '{print$4}' )
COUNT_AUDIO_FRENCH=$(lsdvd -a "$DEVICE" -t "$i" 2> /dev/null |grep -c 'Language: fr')  
AUDIO_LANG_LIST_FRENCH=$(echo $AUDIO_FRENCH | sed 's/[[:blank:]]/,/g')

## BITRATE ORIGINAL.
BITRATE=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify -dvd-device "$DEVICE" dvdnav://"$i" 2>/dev/null | \
          grep "VIDEO:" | awk '{print$8}' | sed 's/\.[^ ]*/ /g')

RATIO=$(lsdvd -x $DEVICE -t "$i" | grep -m1 "Aspect ratio:" | awk '{print$11}' | sed -e 's/\//\:/g' | tr -d ',')

## [OPTION 1 ALL]
## ICI, ON ÉVITERA UN MKV SANS AUDIO. STREAM(S) SIGNALÉ(S) FR MAIS D'UNE DURÉE NUL PAR RAPPORT AU(X) AUTRE(S) SUPPRIMÉES EN [ OPTION 2 ]
## EX : PLUTO "-t 15" (fr null ===> eng seul valide) = OK  
if [[ "$COUNT_LAVF_STREAM_DVDNAV" != "$COUNT_AUDIO_LSDVD" ]]; then


#### SANS CROP

HandBrakeCLI --no-dvdnav \
--input $DEVICE --title $i \
--all-audio --all-subtitles --subtitle-lang-list fr \
-e x264 -b $BITRATE --loose-anamorphic --modulus 2 \
--hqdn3d=y-spatial=1.5:cb-spatial=1.5:cr-spatial=1.5:y-temporal=4:cb-temporal=4:cr-temporal=4 --unsharp=y-strength=0.5:y-size=5:cb-strength=0.5:cb-size=5 \
--crop 0:0:0:0 \
--aencoder copy \
--output "$TITLE/$i-$TITLE-[OPTION 1 ALL].mkv"




#### AJOUT CORRECTION STREAMS AUDIOS INVALIDES
DETECT_VALID_AUDIO=$(ffprobe "$TITLE/$i-$TITLE-[OPTION 1 ALL].mkv" 2>&1 | awk '/Audio:/ && /Stream/ && /ac3,/ && /kb\/s/ { print $2 }'| cut -c4-4)
VALID_AUDIO_PREPARE=$(echo $DETECT_VALID_AUDIO | sed -e 's/\ /\,/g' >> "$TITLE/$i-choix.txt")
VALID_AUDIO=$(head -n 1 "$TITLE/$i-choix.txt" | tail -n 1)

   
       mkvmerge -o "$TITLE/$i-$TITLE-[OPTION 1 RETOUCHE].mkv" --atracks $VALID_AUDIO "$TITLE/$i-$TITLE-[OPTION 1 ALL].mkv"


rm -f "$TITLE/$i-$TITLE-[OPTION 1 ALL].mkv"
rm -f "$TITLE/$i-choix.txt"


INFO_1=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE-[OPTION 1 RETOUCHE].mkv" 2>/dev/null | \
          awk '/alang/  { x = x $9 ""}
              END { sub(/,*$/, "", x); print x }'
)
             
      mv "$TITLE/$i-$TITLE-[OPTION 1 RETOUCHE].mkv" "$TITLE/$i-$TITLE-[Language: $INFO_1].mkv"
      mediainfo "$TITLE/$i-$TITLE-[Language: $INFO_1].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Language: $INFO_1].log"                


 
 
    fi




VERIF_AUDIOFR=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE-[Language: $INFO_1].mkv" 2>/dev/null | \
   grep -c "alang fre,")
         
if [[ "$VERIF_AUDIOFR" -ge "1" ]]; then
      mkvmerge -o "$TITLE/$i-$TITLE-[Language: Français].mkv" -a fre "$TITLE/$i-$TITLE-[Language: $INFO_1].mkv"

rm -f "$TITLE/$i-$TITLE-[Language: $INFO_1].mkv"

INFO_AUDIOFR=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE-[Language: Français].mkv" 2>/dev/null | \
          awk '/alang/  { x = x $9 ""}
              END { sub(/,*$/, "", x); print x }'
)
             
      mv "$TITLE/$i-$TITLE-[Language: Français].mkv" "$TITLE/$i-$TITLE-[Language: $INFO_AUDIOFR].mkv"
      mediainfo "$TITLE/$i-$TITLE-[Language: $INFO_AUDIOFR].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Language: $INFO_AUDIOFR].log"
rm -f "$TITLE/IFOS/$i-$TITLE-[Language: $INFO_1].log"

   
   
   fi



## [OPTION 2]
## QUE FRANÇAIS SI PRÉSENT OU AUTRES SI PAS LE CHOIX.
## SOUSTITRES FRANÇAIS DANS LES DEUX CAS.
## SANS AUDIO = OK
## ANY (UNKNOWN AUDIO) = OK
## LPCM ==> AAC = OK
if [[ "$COUNT_LAVF_STREAM_DVDNAV" == "$COUNT_AUDIO_LSDVD" ]]; then


#### SANS CROP

HandBrakeCLI --no-dvdnav \
--input $DEVICE --title $i \
--all-audio --audio-lang-list "$AUDIO_LANG_LIST_FRENCH" --all-subtitles --subtitle-lang-list fr \
-e x264 -b $BITRATE --loose-anamorphic --modulus 2 \
--hqdn3d=y-spatial=1.5:cb-spatial=1.5:cr-spatial=1.5:y-temporal=4:cb-temporal=4:cr-temporal=4 --unsharp=y-strength=0.5:y-size=5:cb-strength=0.5:cb-size=5 \
--crop 0:0:0:0 \
--aencoder copy \
--output "$TITLE/$i-$TITLE-[OPTION 2].mkv"



INFO_2=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE-[OPTION 2].mkv" 2>/dev/null | \
          awk '/alang/  { x = x $9 ""}
              END { sub(/,*$/, "", x); print x }'
)
     

          mv "$TITLE/$i-$TITLE-[OPTION 2].mkv" "$TITLE/$i-$TITLE-[Language: $INFO_2].mkv"                  
          mediainfo "$TITLE/$i-$TITLE-[Language: $INFO_2].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Language: $INFO_2].log"

    fi
 


## DUMPAUDIO ET SAUVEGARDE DU LPCM EN WAVE D'UN DVD DE CONCERT LIVE.
AIDS_LPCM=$(lsdvd -a "$DEVICE" -t "$i" 2>/dev/null | awk '/lpcm|id:/ { print $22 }')  
COUNT_AUDIO_LPCM=$(lsdvd -a "$DEVICE" -t "$i" 2>/dev/null | grep -c "lpcm" )  

if [[ "$COUNT_AUDIO_LPCM" -ge "1" ]]; then

mkdir -p "$TITLE/WAVE"

for n in $AIDS_LPCM; do
        mplayer -noconfig all -nocache -benchmark -vc null -vo null \
                 -ao pcm:fast:file="$TITLE/WAVE/[$i-($n)]-$TITLE.wav" \
                 -identify -dvd-device "$DEVICE" dvdnav://$i -ni -aid $n
done  
                                       

   
  fi


done

Hors ligne

#702 26-04-2020 12:28:14

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Et le script qui donne le mkv sans son ni image ? smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#703 26-04-2020 12:36:17

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

La vidéo que tu as fait avec le script de ce post. Lances la vidéo dans un terminal avec ton player pour qu'on voit ce que ça donne smile

Dernière modification par Anonyme (26-04-2020 12:38:13)

#704 26-04-2020 12:59:10

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

J'avais un doute avec vlc, je l'ai installé vite fait et en configuration par défaut, la vidéo passe bien.

Dernière modification par Anonyme (26-04-2020 12:59:30)

#705 26-04-2020 13:31:06

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

smolski  a écrit :

Et le script qui donne le mkv sans son ni image ?



le post #679 page 28 :


#!/bin/bash

## Anonyme
## Testeur smolski
## 24/04/2020


PATH=$PATH:/sbin:/usr/sbin

## CONDITION : UN SEUL DVD-VIDÉO.
mounting_directory=$( mount | grep  '/dev/sr' | grep -Po 'on\K.*(?=type)'  | sed 's|\(.*\)/.*|\1|' | uniq )
COUNT_VIDEO_TS=$(find ${mounting_directory} -maxdepth 3 -name 'VIDEO_TS.IFO' 2> /dev/null | wc -l)

DEVICE=$(blkid /dev/sr* | awk '{print $1}' | sed -e 's/://g')
COUNT_DEVICE=$(blkid /dev/sr* | awk '{print $1}' | sed -e 's/://g' | wc -l)


if [[ "$COUNT_VIDEO_TS" -eq 0 ]]; then
    echo "Aucun dvd vidéo monté : Abandon"
    exit 0
elif [[ "$COUNT_VIDEO_TS" -gt 1 ]];  then
    echo "Il y a plus d'un dvd video détecté : Abandon"
    exit 0


  fi



if [[ "$COUNT_VIDEO_TS" -eq 1 ]] && [[ "$COUNT_DEVICE" -eq 1 ]]; then
echo -e "\e[32mLes conditions sont réunies : On continue\e[0m"

TITLE=$(lsdvd "$DEVICE" | head -1 | awk '{print $3}')
TITLE_COUNT=$(lsdvd "$DEVICE" | grep -c ^'Title: ')


  fi


 echo "Proceed..."



 echo -e "DVD-Vidéo : \e[32m$TITLE\e[0m"
read -r -p "Ce nom convient-il ? [Y/n] " input
echo ""
case $input in
    [yY][eE][sS]|[yY])

 echo -e "Réponse : \e[32mOui\e[0m"

 mkdir -p "$TITLE/IFOS"
 mkdir -p "$TITLE/VOBSUBS"
 ;;
    [nN][oO]|[nN])
 echo ""
 echo -e "Réponse : \e[32mNon\e[0m"
 read -r -p "Entrer un nouveau nom: " TITLE
 echo ""
 mkdir -p "$TITLE/IFOS"
 mkdir -p "$TITLE/VOBSUBS"
       ;;
    *)
 echo "Invalid input..."
 echo "Quit"
 exit 1
 ;;
esac




read -r -p "Garder le bitrate d'origine ? [Y/n] " input
echo ""
case $input in
     [yY][eE][sS]|[yY])
 
 echo -e "Réponse : \e[32mOui\e[0m"
 
for (( i=1; i<=TITLE_COUNT; i++ ))
do

BITRATE=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify -dvd-device "$DEVICE" dvdnav://"$i" 2>/dev/null | \
          grep "VIDEO:" | awk '{print$8}' | sed 's/\.[^ ]*/ /g')
echo -e "$BITRATE" >> "$TITLE/bitrate.txt"
done

 ;;
     [nN][oO]|[nN])
 echo -e "Réponse : \e[32mNon\e[0m"
 
 read -r -p "Entrer un nouveau Bitrate: " newbitrate

 for (( i=1; i<=TITLE_COUNT; i++ ))
 do
 echo -e "$newbitrate" >> "$TITLE/bitrate.txt"
 done
        ;;
     *)
 echo "Invalid input..."
 echo "Quit"
 rm -r "$TITLE"
 echo -e "Supression du dossier \e[32m$TITLE\e[0m"
 exit 1
 ;;
 esac





for (( i=1; i<=TITLE_COUNT; i++ ))
do



bv=$(sed -n "$i p" "$TITLE/bitrate.txt")
bitrate_k=$((bv/1))k
bufsize_k=$((bv/2))k
echo ""
echo -e "Le bitrate du titre n°\e[94m$i\e[0m sera donc de : \e[32m$bitrate_k\e[0m"
echo "Proceed..."

sleep 2


LENGTH=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify -dvd-device "$DEVICE" dvdnav://"$i" 2>/dev/null | \
          sed -E -n 's/^.*ID_LENGTH=([0-9]+).*$/\1/p')
           
LIMIT=0
    [[ "$LENGTH" -le "$LIMIT" ]] && continue


    mplayer -noconfig all -nocache -dvd-device "$DEVICE" dvdnav://"$i" \
            -dumpstream -dumpfile "$TITLE/$i-$TITLE.vob"
           


INTERLEAVED_FRAMES=$(ffmpeg -filter:v idet -frames:v 200 -an -f rawvideo \
             -y /dev/null -i "$TITLE/$i-$TITLE.vob" 2>&1 | \
          awk '/(Single|Multi) frame detection/ {sum += $8+$10}
              END { print sum }'
)

if [[ "$INTERLEAVED_FRAMES" -gt "100" ]]; then
    FILTERS='-filter:v yadif=0:-1:0,hue=b=0.0:s=0.7,hqdn3d=1.5:1.5:4:4,unsharp=luma_msize_x=5:luma_msize_y=5:luma_amount=0.5,noise=c0s=2:c1s=2:c2s=2:c0f=a+t'
else
    FILTERS='-filter:v hue=b=0.0:s=0.7,hqdn3d=1.5:1.5:4:4,unsharp=luma_msize_x=5:luma_msize_y=5:luma_amount=0.5,noise=c0s=2:c1s=2:c2s=2:c0f=a+t'




    fi    




COUNT_AUDIO=$(ffprobe "$TITLE/$i-$TITLE.vob" 2>&1 | grep -c "Audio:")
FPS=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.vob" 2>/dev/null | grep "VIDEO:" | awk '{print$6}')

       

RATIO=$(lsdvd -x "$DEVICE" -t "$i" | grep -m1 "Aspect ratio:" | awk '{print$11}' | sed -e 's/\//\:/g' | tr -d ',')

O_CHANNELS=$(ffprobe "$TITLE/$i-$TITLE.vob" 2>&1 | grep -c '(Audio: ac3, 0 channels)')
         
REMOVE_O_CHANNELS=$(ffprobe "$TITLE/$i-$TITLE.vob" 2>&1 | awk '/Stream/ && /Audio:/ && /kb\/s|\(LC\),/ { print $2 }' | \
          cut -d "[" -f2 | cut -d "]" -f1 | awk '{ printf " -map i:"$0" " }')
                       
ALLSHOW_TAG=$(mplayer -vo null -ao null -frames 0 -identify dvdnav://"$i" -dvd-device "$DEVICE"  2>/dev/null | \
          awk '/audio stream:/  {printf " -metadata:s:a:"$3" language="$8" -metadata:s:a:"$3" title="$5$6""}')
                       
MAP_ID_STREAMS=$(lsdvd -a "$DEVICE" -t "$i" 2> /dev/null | grep "Language:" | sed -e 's/c/1c/g'  | awk '{ printf " -map i:"$21"" }')        
                                                 
MAP_ID_STREAMS_LPCM=$(lsdvd -a "$DEVICE" -t "$i" 2> /dev/null | grep "lpcm" | awk '{ printf " -map i:"$22"" }')
                                                                                                                 
COUNT_LPCM=$(lsdvd -a "$DEVICE" -t "$i" |grep -c 'lpcm')
   
AIDS_LPCM=$(lsdvd -a "$DEVICE" -t "$i" | awk '/lpcm/ { print $22 }')


## VOB PRÉSENT.
## AUCUN AUDIO.
if [[ -e "$TITLE/$i-$TITLE.vob" ]] && [[ "$COUNT_AUDIO" -eq "0" ]]; then


     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$bitrate_k" -maxrate "$bitrate_k" -bufsize "$bufsize_k" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         -an -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         $FILTERS \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"

         
rm -f "$TITLE/$i-$TITLE.vob"
       
         
                       

   
    fi




## VOB PRÉSENT.
## AVEC OU SANS AUDIO(S).
## SANS 0 CHANNEL.
## SANS LPCM.
if [[ -e "$TITLE/$i-$TITLE.vob" ]] && [[ "$COUNT_AUDIO" -ge "0" ]] && [[ "$O_CHANNELS" -eq "0" ]] && [[ "$COUNT_LPCM" -eq "0" ]]; then            

     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$bitrate_k" -maxrate "$bitrate_k" -bufsize "$bufsize_k" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         ${MAP_ID_STREAMS} -c:a copy ${ALLSHOW_TAG} -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         $FILTERS \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"
           

#        ffmpeg -hwaccel auto -c:v mpeg2_cuvid -analyzeduration 1000M -probesize 1000M -i "$TITLE/$i-$TITLE.vob" \
#            -map 0:v -metadata title="$TITLE" \
#            -c:v h264_nvenc -preset medium -b:v $BITRATE_K -bufsize $BUFSIZE_K -profile:v high -bf 3 -b_ref_mode 0 -temporal-aq 1 -rc-lookahead 20 -vsync 0 \
#            -loglevel repeat+verbose \
#            -filter:v hue=b=0.0:s=0.7,hqdn3d=1.5:1.5:4:4,unsharp=luma_msize_x=5:luma_msize_y=5:luma_amount=0.5,noise=c0s=2:c1s=2:c2s=2:c0f=a+t \
#            ${MAP_ID_STREAMS} -c:a copy $ALLSHOW_TAG -movflags +faststart \
#            -y "$TITLE/$i-$TITLE.mkv"  


rm -f "$TITLE/$i-$TITLE.vob"
 


   
   
     fi



## VOB PRÉSENT.
## AU MOINS UN AUDIO OU PLUS.
## UN 0 CHANNEL OU PLUS.
## SANS LPCM.

if [[ -e "$TITLE/$i-$TITLE.vob" ]] && [[ "$COUNT_AUDIO" -ge "1" ]] && [[ "$O_CHANNELS" -ge "1" ]] && [[ "$COUNT_LPCM" -eq "0" ]]; then

     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$bitrate_k" -maxrate "$bitrate_k" -bufsize "$bufsize_k" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         ${REMOVE_O_CHANNELS} -c:a copy ${ALLSHOW_TAG} -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         $FILTERS \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"


rm -f "$TITLE/$i-$TITLE.vob"




   
    fi



## VOB PRÉSENT.
## AVEC OU SANS AUDIO(S).
## SANS 0 CHANNEL.
## AU MOINS UN LPCM OU PLUS.

if [[ -e "$TITLE/$i-$TITLE.vob" ]] && [[ "$COUNT_AUDIO" -ge "0" ]] && [[ "$O_CHANNELS" -eq "0" ]] && [[ "$COUNT_LPCM" -ge "1" ]]; then

     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$bitrate_k" -maxrate "$bitrate_k" -bufsize "$bufsize_k" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         ${MAP_ID_STREAMS_LPCM} -acodec pcm_s16be ${ALLSHOW_TAG} -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         $FILTERS \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"


rm -f "$TITLE/$i-$TITLE.vob"



         dvdxchap -t  "$i" "$DEVICE" > "$TITLE/$i-$TITLE-Chapters.txt"
           
         mkvmerge "$TITLE/$i-$TITLE.mkv" --chapters "$TITLE/$i-$TITLE-Chapters.txt" \
          -o "$TITLE/$i-$TITLE-[Out_Chapters].mkv"            
           
rm -f "$TITLE/$i-$TITLE.mkv"
rm -f "$TITLE/$i-$TITLE-Chapters.txt"
mv "$TITLE/$i-$TITLE-[Out_Chapters].mkv" "$TITLE/$i-$TITLE.mkv"


mkdir -p "$TITLE/WAVE"

for n in $AIDS_LPCM; do
        mplayer -noconfig all -nocache -benchmark -vc null -vo null \
                 -ao pcm:fast:file="$TITLE/WAVE/[$i-($n)]-$TITLE.wav" \
                 -identify -dvd-device "$DEVICE" dvdnav://"$i" -ni -aid "$n"
done  



   
    fi





COUNT_AUDIO_FR=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null |awk '/-alang fr,/ { print $9 }' | wc -w)

## AU MOINS UN AUDIO FRANÇAIS OU PLUS.
if [[ "$COUNT_AUDIO_FR" -ge "1" ]]; then

      mkvmerge -o "$TITLE/$i-$TITLE-[Language: Français].mkv" -a fre "$TITLE/$i-$TITLE.mkv"

rm -f "$TITLE/$i-$TITLE.mkv"
      mv "$TITLE/$i-$TITLE-[Language: Français].mkv" "$TITLE/$i-$TITLE.mkv"



   
    fi
 
 


## ON INDIQUE LA LANGUE DE L'AUDIO DANS LE RENOMAGE DU TITRE ET LE NOMBRE.
INFO=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | \
          awk '/alang/  { x = x $9 ""}
              END { sub(/,*$/, "", x); print x }'
)
COUNT_INFO=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | grep -c "alang")
COUNT=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | grep -c "aid")

## UNE OU PLUSIEURS INFOS SUR L'AUDIO ET UN OU PLUSIEURS AUDIOS.
## INTÉGRATION DES CHAPITRES.
if [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$COUNT_INFO" -ge "1" ]] && [[ "$COUNT" -ge "1" ]] ; then      
      mv "$TITLE/$i-$TITLE.mkv" "$TITLE/$i-$TITLE-[Audio: $INFO].mkv"
      dvdxchap -t  "$i" "$DEVICE" > "$TITLE/$i-$TITLE-Chapters.txt"
      mkvmerge "$TITLE/$i-$TITLE-[Audio: $INFO].mkv" --chapters "$TITLE/$i-$TITLE-Chapters.txt" -o "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv"        
      rm -f "$TITLE/$i-$TITLE-[Audio: $INFO].mkv"
      rm -f "$TITLE/$i-$TITLE-Chapters.txt"
      mediainfo "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters].log"                
   


   fi
   



SIDFR=$(lsdvd -s "$DEVICE" -t "$i" 2> /dev/null |awk '/Subtitle:/ && /Language: fr/ { sub(/,$/ ,"", $2);
                                      if ($2 ~ /^[0-9]+$/) print (--$2) }'
)
                                     
                                     
                                                                   
COUNT_SID_FR=$(echo "$SIDFR" |wc -w)

## AU MOINS UN SUB FRANÇAIS OU PLUS (ON EXTRAIT TOUT ÇA).
if [[ "$COUNT_SID_FR" -ge "1" ]]; then

mkdir -p "$TITLE/VOBSUBS/$i-$TITLE"

for n in $SIDFR; do mencoder -dvd-device "$DEVICE" dvdnav://"$i" -nosound -ovc frameno -force-avi-aspect "$RATIO" -o /dev/null \
               -ifo "/run/media/$USER/$TITLE/VIDEO_TS/VTS_01_0.IFO" -sid "$n" -vobsubout "$TITLE/$n-vobsubs-fr" -vobsuboutindex "$n"

## ON CORRIGE LES ID VIDES SI BESOIN.
sed -i 's/id:.*,/id: fr,/g' "$TITLE/$n-vobsubs-fr.idx"

taille_idx=$(stat -c%s "$TITLE/$n-vobsubs-fr.idx")
taille_sub=$(stat -c%s "$TITLE/$n-vobsubs-fr.sub")

if [[ "$taille_idx" -gt 1000 ]] && [[ "$taille_sub" -gt 0 ]] ; then

echo "$n-vobsubs-fr.idx et $n-vobsubs-fr.sub sont bon"

   else

## ON ISOLE LES VOBSUBS INVALIDES DANS LE DOSSIER VOBSUBS
echo "$n-vobsubs-fr.idx ou $n-vobsubs-fr.sub est incorrect ... déplacement"

   mv "$TITLE/$n-vobsubs-fr.idx" "$TITLE/$n-vobsubs-fr.sub" "$TITLE/VOBSUBS/$i-$TITLE"


 fi


done          


   fi


## ON COMPTE CE QU'IL RESTE DE BON EN IDX/SUB.
COUNT_IDX_FR=$(find "$TITLE" -maxdepth 1 -name '*.idx' | wc -l)
COUNT_SUB_FR=$(find "$TITLE" -maxdepth 1 -name '*.sub' | wc -l)


## CONDITION : UN IDX/SUB OU PLUS.
if [[ -e "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" ]] && [ "$COUNT_IDX_FR" -ge "1" ] && [ "$COUNT_SUB_FR" -ge "1" ]
then




mkvmerge "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" --language "0:fre" "$TITLE"/*.idx  -o "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub].mkv"

## ON DÉPLACE LE RESTANT DES VOBSUBS UNE FOIS MIXÉS AVEC LES INVALIDES.
mv "$TITLE"/*.idx "$TITLE"/*.sub "$TITLE/VOBSUBS/$i-$TITLE"
rm -f "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv"


INFO_SUB=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub].mkv" 2>/dev/null | \
          awk '/slang/ && /fre/  { x = x $9 ","}
              END { sub(/,*$/, "", x); print x }'
)
             
                 
     mv "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub].mkv" "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub: $INFO_SUB].mkv"
     mediainfo "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub: $INFO_SUB].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters + Sub: $INFO_SUB].log"

rm -f "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters].log"  




    fi



## AUCUN IDX ou SUB.
if [[ -e "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" ]] && [ "$COUNT_IDX_FR" -eq "0" ] || [ "$COUNT_SUB_FR" -eq "0" ]
then

mv "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters NoSub].mkv"
mediainfo "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters NoSub].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters NoSub].log"

rm -f "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters].log"


   
    fi



## PAS D'INFO ET UN SEUL AUDIO.
if [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$COUNT_INFO" -eq "0" ]] && [[ "$COUNT" -eq "1" ]] ; then  
     mv "$TITLE/$i-$TITLE.mkv" "$TITLE/$i-$TITLE-[Audio: Und].mkv"
     mediainfo "$TITLE/$i-$TITLE-[Audio: Und].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: Und].log"



   fi
 
 

## PAS D'AUDIO DONC PAS D'INFO.
if [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$COUNT_INFO" -eq "0" ]] && [[ "$COUNT" -eq "0" ]] ; then  
    mv "$TITLE/$i-$TITLE.mkv" "$TITLE/$i-$TITLE-[Audio: NoSound].mkv"
    mediainfo "$TITLE/$i-$TITLE-[Audio: NoSound].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: NoSound].log"


 
   fi

 

done

rm -f "$TITLE/bitrate.txt"
 



mais je vais re - tester pour être sûr .

14h37 : debut du test . travail en cours .

je confirme  :

alain@Alain-PC:~/Téléchargements/dvdrip-ffmpeg/DAYAFTER_SE_F3$ ls


'4-DAYAFTER_SE_F3-[Audio: NoSound].mkv'   IFOS
'5-DAYAFTER_SE_F3-[Audio: NoSound].mkv'   VOBSUBS
'8-DAYAFTER_SE_F3-[Audio: NoSound].mkv'
 



vlc '4-DAYAFTER_SE_F3-[Audio: NoSound].mkv'  


VLC media player 3.0.9.2 Vetinari (revision 3.0.9.2-0-gd4c1aefe4d)
[000055ed279ce5b0] main libvlc: Lancement de vlc avec l'interface par défaut. Utiliser « cvlc » pour démarrer VLC sans interface.
[00007f9b5405c500] main video output error: video output creation failed
[00007f9b60c02500] main decoder error: failed to create video output
[00007f9b5405c500] main video output error: video output creation failed
[00007f9b60c02500] main decoder error: failed to create video output
[00007f9b60c02500] main decoder error: Timestamp conversion failed for 1: no reference clock
[00007f9b60c02500] main decoder error: Could not get display date for timestamp 0
[00007f9b60c02500] main decoder error: Timestamp conversion failed for 1: no reference clock
[00007f9b60c02500] main decoder error: Could not convert timestamp 0 for FFmpeg
QObject::~QObject: Timers cannot be stopped from another thread
 



alain@Alain-PC:~/Téléchargements/dvdrip-ffmpeg/DAYAFTER_SE_F3$ mpv '4-DAYAFTER_SE_F3-[Audio: NoSound].mkv'


 (+) Video --vid=1 (*) (h264 720x576 25.000fps)
File tags:
 Title: DAYAFTER_SE_F3
VO: [gpu] 720x576 => 1024x576 yuv420p
V: 00:00:00 / 00:00:00 (0%)


Exiting... (End of file)
 



alain@Alain-PC:~/Téléchargements/dvdrip-ffmpeg/DAYAFTER_SE_F3$ mpv '8-DAYAFTER_SE_F3-[Audio: NoSound].mkv'


me donne le générique mais c'est tout :

 (+) Video --vid=1 (*) (h264 720x576 25.000fps)
File tags:
 Title: DAYAFTER_SE_F3
VO: [gpu] 720x576 => 768x576 yuv420p
V: 00:00:04 / 00:00:04 (98%)


Exiting... (End of file)
 



par contre : 

alain@Alain-PC:~/Téléchargements/dvdrip-test1/DAYAFTER_SE_F3$ ls


'10-DAYAFTER_SE_F3-[Language: eng].mkv'  '1-DAYAFTER_SE_F3-[Language: fre].mkv'  '7-DAYAFTER_SE_F3-[Language: fre].mkv'   IFOS
'11-DAYAFTER_SE_F3-[Language: eng].mkv'  '6-DAYAFTER_SE_F3-[Language: eng].mkv'  '9-DAYAFTER_SE_F3-[Language: eng].mkv'
 



et :

alain@Alain-PC:~/Téléchargements/dvdrip-test1/DAYAFTER_SE_F3$ vlc '1-DAYAFTER_SE_F3-[Language: fre].mkv'


fonctionne :

VLC media player 3.0.9.2 Vetinari (revision 3.0.9.2-0-gd4c1aefe4d)
[0000564a079c25b0] main libvlc: Lancement de vlc avec l'interface par défaut. Utiliser « cvlc » pour démarrer VLC sans interface.
[0000564a07a7e160] main audio output error: too low audio sample frequency (0)
[00007fc4c8d48c00] main decoder error: failed to create audio output
[0000564a07a7e160] vlcpulse audio output error: digital pass-through stream connection failure: Non pris en charge
[0000564a07a7e160] main audio output error: module not functional
[00007fc4c8d48c00] main decoder error: failed to create audio output
[00007fc4bc047a40] main video output error: video output creation failed
[00007fc4c8c05470] main decoder error: failed to create video output
[00007fc4bc061a50] main video output error: video output creation failed
[00007fc4c8c05470] main decoder error: failed to create video output
QObject::~QObject: Timers cannot be stopped from another thread
 



de même :

alain@Alain-PC:~/Téléchargements/dvdrip-test1/DAYAFTER_SE_F3$ mpv '1-DAYAFTER_SE_F3-[Language: fre].mkv'


fonctionne parfaitement lui aussi :

 (+) Video --vid=1 (*) (h264 720x576 25.000fps)
 (+) Audio --aid=1 --alang=fre 'Surround' (ac3 6ch 48000Hz)
     Subs  --sid=1 --slang=fre (dvd_subtitle)
     Subs  --sid=2 --slang=fre (dvd_subtitle)
     Subs  --sid=3 --slang=fre 'Commentary' (dvd_subtitle)
     Subs  --sid=4 --slang=fre 'Commentary' (dvd_subtitle)
AO: [pulse] 48000Hz 5.1(side) 6ch float
VO: [gpu] 720x576 => 1024x576 yuv420p
AV: 00:00:53 / 01:58:35 (0%) A-V:  0.000


Exiting... (Quit)

Dernière modification par Debian Alain (26-04-2020 14:25:51)

Hors ligne

#706 26-04-2020 14:25:28

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Pour comparer :

Un titre de 1 h 16, juste un seul titre, avec le logiciel Handbrake (pas le cli)
1 pass
4 soustitres french
A peu près les mêmes réglages que dans mon script, il me faut 40 minutes environ.

Le script me sort les 45 titres en plus du film principal en moins que ça. (en x264)

Dernière modification par Anonyme (26-04-2020 14:27:26)

#707 26-04-2020 14:30:24

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

ici , un titre de 124 min .

https://debian-facile.org/viewtopic.php?id=25774&p=10  :  okay

https://debian-facile.org/viewtopic.php … 33#p330633  : nul

Dernière modification par Debian Alain (26-04-2020 14:31:39)

Hors ligne

#708 26-04-2020 14:36:37

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

@debian alain

donc si je vois ce que tu me post :

4, 5, et 6 sont des bouts de vidéos qui ont été rippés et encodés. elles sont bien marquées en [Audio: NoSound]. C'est normal, ce n'est pas le titre pricipal. wink
7 et 9 sont des vidéos avec un audio fr sans sous-titres et la dernière en anglais sans sous-titres. Ça aussi, c'est bon wink

Donc si tu lis bien le post 1, c'est normal.
J'ai mis volontairement une LIMIT=-1 pour voir chez les utilisateurs, le résultat que tu as en ce moment.

smile

Dernière modification par Anonyme (26-04-2020 14:42:39)

#709 26-04-2020 14:38:14

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)



Là, tu m'embrouilles smile

#710 26-04-2020 14:39:47

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

As ton post 705, tout est normal au niveau du script. cool

Dernière modification par Anonyme (26-04-2020 14:41:40)

#711 26-04-2020 14:47:36

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

@smolski

tu peux me supprimer le post provisoirement pour le script avec handbrakecli, Debian Alain joue au ping pong avec !!! :kernal_panic.gif

out.gif

Dernière modification par Anonyme (26-04-2020 14:48:31)

#712 26-04-2020 14:51:28

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

arf ! pardon , je dois pas  comprendre grand - chose sans doute . tongue

si je dérange , vous me le dites . big_smile

ce sera beaucoup plus simple pour tout le monde , moi y compris . lol

Hors ligne

#713 26-04-2020 15:01:29

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Non non au contraire, ça aide énormément. Le résulat que tu obtiens est normal wink
Dans le script, si tu passes à la ligne 130

LIMIT=-1



à par exemple :

LIMIT=2400



tu auras sans doute que le film égal ou supèrieur à 2400 secondes wink

'1-DAYAFTER_SE_F3-[Language: fre].mkv'


Tout les petits morceaux auront disparus.

Dernière modification par Anonyme (26-04-2020 15:04:23)

#714 26-04-2020 15:08:45

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

j'ai passé la variable LIMIT à 30 .

test en cours .

dump 50%

Dernière modification par Debian Alain (26-04-2020 15:09:10)

Hors ligne

#715 26-04-2020 15:10:38

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Debian Alain a écrit :

j'ai passé la variable LIMIT à 30 .

test en cours .

dump 50%



Attention 30, on est bien d'accord, c'est en secondes smile

Et en plus tu me donnes une idée, mettre limit comme le choix perso du bitrate  tongue

Dernière modification par Anonyme (26-04-2020 15:15:43)

#716 26-04-2020 15:31:52

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

arf ! , je croyais que c'était en minutes ...

tout simplement , il n' a pas créé les mkv

nouvel essai avec LIMIT=2400 .

on va voir .

Dernière modification par Debian Alain (26-04-2020 16:03:23)

Hors ligne

#717 26-04-2020 16:00:50

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Sur ton dvd, que renvoie la commande :


lsdvd -v /dev/sr0
 

#718 26-04-2020 16:05:17

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

lsdvd -v /dev/sr0


Disc Title: DAYAFTER_SE_F3
Title: 01, Length: 01:58:35.840 Chapters: 32, Cells: 33, Audio streams: 05, Subpictures: 06
  VTS: 01, TTN: 01, FPS: 25.00, Format: PAL, Aspect ratio: 16/9, Width: 720, Height: 576, DF: Letterbox
Title: 02, Length: 00:00:01.000 Chapters: 01, Cells: 01, Audio streams: 00, Subpictures: 00
  VTS: 01, TTN: 02, FPS: 25.00, Format: PAL, Aspect ratio: 16/9, Width: 720, Height: 576, DF: Letterbox
Title: 03, Length: 00:00:01.000 Chapters: 01, Cells: 01, Audio streams: 00, Subpictures: 00
  VTS: 02, TTN: 01, FPS: 25.00, Format: PAL, Aspect ratio: 16/9, Width: 720, Height: 576, DF: Letterbox
Title: 04, Length: 00:00:31.000 Chapters: 04, Cells: 04, Audio streams: 00, Subpictures: 00
  VTS: 02, TTN: 02, FPS: 25.00, Format: PAL, Aspect ratio: 16/9, Width: 720, Height: 576, DF: Letterbox
Title: 05, Length: 00:00:11.000 Chapters: 02, Cells: 02, Audio streams: 00, Subpictures: 00
  VTS: 02, TTN: 03, FPS: 25.00, Format: PAL, Aspect ratio: 16/9, Width: 720, Height: 576, DF: Letterbox
Title: 06, Length: 00:00:28.000 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 00
  VTS: 03, TTN: 01, FPS: 25.00, Format: PAL, Aspect ratio: 16/9, Width: 720, Height: 576, DF: Letterbox
Title: 07, Length: 00:05:56.840 Chapters: 05, Cells: 05, Audio streams: 01, Subpictures: 00
  VTS: 04, TTN: 01, FPS: 25.00, Format: PAL, Aspect ratio: 4/3, Width: 720, Height: 576, DF: ?
Title: 08, Length: 00:00:05.840 Chapters: 02, Cells: 02, Audio streams: 00, Subpictures: 00
  VTS: 04, TTN: 02, FPS: 25.00, Format: PAL, Aspect ratio: 4/3, Width: 720, Height: 576, DF: ?
Title: 09, Length: 00:00:49.680 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 00
  VTS: 05, TTN: 01, FPS: 25.00, Format: PAL, Aspect ratio: 16/9, Width: 720, Height: 576, DF: Letterbox
Title: 10, Length: 00:00:49.680 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 00
  VTS: 05, TTN: 02, FPS: 25.00, Format: PAL, Aspect ratio: 16/9, Width: 720, Height: 576, DF: Letterbox
Title: 11, Length: 00:02:10.720 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 06
  VTS: 06, TTN: 01, FPS: 25.00, Format: PAL, Aspect ratio: 16/9, Width: 720, Height: 576, DF: Letterbox
Title: 12, Length: 00:00:01.000 Chapters: 01, Cells: 01, Audio streams: 00, Subpictures: 00
  VTS: 06, TTN: 02, FPS: 25.00, Format: PAL, Aspect ratio: 16/9, Width: 720, Height: 576, DF: Letterbox
Longest track: 01
 



avec un LIMIT=2400 , création des fichiers suivants :

alain@Alain-PC:~/Téléchargements/dvdrip-ffmpeg/DAYAFTER_SE_F3$ ls -lah


total 14G
drwxr-xr-x 4 alain alain 4,0K avril 26 16:53 .
drwxr-xr-x 3 alain alain 4,0K avril 26 16:41 ..
-rw-r--r-- 1 alain alain 7,9G avril 26 17:10 1-DAYAFTER_SE_F3.mkv
-rw-r--r-- 1 alain alain 6,2G avril 26 16:53 1-DAYAFTER_SE_F3.vob
-rw-r--r-- 1 alain alain   72 avril 26 16:41 bitrate.txt
drwxr-xr-x 2 alain alain 4,0K avril 26 16:41 IFOS
drwxr-xr-x 2 alain alain 4,0K avril 26 16:41 VOBSUBS
 



j'attends la fin du travail .

non , dossier  effacé .

j'ai gtk-gnutella qui tourne en arrière plan .
çà peut jouer ?

Dernière modification par Debian Alain (26-04-2020 16:28:02)

Hors ligne

#719 26-04-2020 16:35:47

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Bon au niveau de la commande si tu mets 2400 seul

Title: 01, Length: 01:58:35.840 Chapters: 32, Cells: 33, Audio streams: 05, Subpictures: 06



sera dumpé et encodé. Ça c'est ok

par contre pour ça,


total 14G
drwxr-xr-x 4 alain alain 4,0K avril 26 16:53 .
drwxr-xr-x 3 alain alain 4,0K avril 26 16:41 ..
-rw-r--r-- 1 alain alain 7,9G avril 26 17:10 1-DAYAFTER_SE_F3.mkv
-rw-r--r-- 1 alain alain 6,2G avril 26 16:53 1-DAYAFTER_SE_F3.vob
-rw-r--r-- 1 alain alain   72 avril 26 16:41 bitrate.txt
drwxr-xr-x 2 alain alain 4,0K avril 26 16:41 IFOS
drwxr-xr-x 2 alain alain 4,0K avril 26 16:41 VOBSUBS
 



je ne comprend pas pourquoi

1-DAYAFTER_SE_F3.vob
bitrate.txt



sont toujours présent, vu que dans le script post 1, ils sont effacés après chaque encodage hmm
Et que sur ton ls du post 705, les vobs et le bitrate.txt ne sont pas présent hmm


gtk-gnutella qui tourne en arrière plan, non je ne pense.

Dernière modification par Anonyme (26-04-2020 16:39:50)

#720 26-04-2020 16:41:14

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

ce que je t'ai montré , c'était pendant l'encodage .
à la fin , tous les fichiers sont effacés . vob y compris .
il n'y a tout simplement presque plus rien .
seul reste un fichier de log.

alain@Alain-PC:~/Téléchargements/dvdrip-ffmpeg/DAYAFTER_SE_F3$ ls
IFOS  VOBSUBS

alain@Alain-PC:~/Téléchargements/dvdrip-ffmpeg/DAYAFTER_SE_F3$ cd IFOS

alain@Alain-PC:~/Téléchargements/dvdrip-ffmpeg/DAYAFTER_SE_F3/IFOS$ ls
'1-DAYAFTER_SE_F3-[Audio: fre,fre + Chapters NoSub].log'
 

Hors ligne

#721 26-04-2020 16:49:18

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Bizarre, si :

'1-DAYAFTER_SE_F3-[Audio: fre,fre + Chapters NoSub].log'



est présent, ce que 1-DAYAFTER_SE_F3-[Audio: fre,fre + Chapters NoSub].mkv s'est crée avant. Ce log se génére sur un médiainfo de ce mkv.

post moi ici le script que tu lances. Pas le copié/collé du post 1, celui sur ta bécane que je teste wink

#722 26-04-2020 16:53:19

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

j'arrive .

voilà :



#!/bin/bash

## Anonyme
## Testeur smolski
## 24/04/2020


PATH=$PATH:/sbin:/usr/sbin

## CONDITION : UN SEUL DVD-VIDÉO.
mounting_directory=$( mount | grep  '/dev/sr' | grep -Po 'on\K.*(?=type)'  | sed 's|\(.*\)/.*|\1|' | uniq )
COUNT_VIDEO_TS=$(find ${mounting_directory} -maxdepth 3 -name 'VIDEO_TS.IFO' 2> /dev/null | wc -l)

DEVICE=$(blkid /dev/sr* | awk '{print $1}' | sed -e 's/://g')
COUNT_DEVICE=$(blkid /dev/sr* | awk '{print $1}' | sed -e 's/://g' | wc -l)


if [[ "$COUNT_VIDEO_TS" -eq 0 ]]; then
    echo "Aucun dvd vidéo monté : Abandon"
    exit 0
elif [[ "$COUNT_VIDEO_TS" -gt 1 ]];  then
    echo "Il y a plus d'un dvd video détecté : Abandon"
    exit 0


  fi



if [[ "$COUNT_VIDEO_TS" -eq 1 ]] && [[ "$COUNT_DEVICE" -eq 1 ]]; then
echo -e "\e[32mLes conditions sont réunies : On continue\e[0m"

TITLE=$(lsdvd "$DEVICE" | head -1 | awk '{print $3}')
TITLE_COUNT=$(lsdvd "$DEVICE" | grep -c ^'Title: ')


  fi


 echo "Proceed..."



 echo -e "DVD-Vidéo : \e[32m$TITLE\e[0m"
read -r -p "Ce nom convient-il ? [Y/n] " input
echo ""
case $input in
    [yY][eE][sS]|[yY])

 echo -e "Réponse : \e[32mOui\e[0m"

 mkdir -p "$TITLE/IFOS"
 mkdir -p "$TITLE/VOBSUBS"
 ;;
    [nN][oO]|[nN])
 echo ""
 echo -e "Réponse : \e[32mNon\e[0m"
 read -r -p "Entrer un nouveau nom: " TITLE
 echo ""
 mkdir -p "$TITLE/IFOS"
 mkdir -p "$TITLE/VOBSUBS"
       ;;
    *)
 echo "Invalid input..."
 echo "Quit"
 exit 1
 ;;
esac




read -r -p "Garder le bitrate d'origine ? [Y/n] " input
echo ""
case $input in
     [yY][eE][sS]|[yY])
 
 echo -e "Réponse : \e[32mOui\e[0m"
 
for (( i=1; i<=TITLE_COUNT; i++ ))
do

BITRATE=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify -dvd-device "$DEVICE" dvdnav://"$i" 2>/dev/null | \
          grep "VIDEO:" | awk '{print$8}' | sed 's/\.[^ ]*/ /g')
echo -e "$BITRATE" >> "$TITLE/bitrate.txt"
done

 ;;
     [nN][oO]|[nN])
 echo -e "Réponse : \e[32mNon\e[0m"
 
 read -r -p "Entrer un nouveau Bitrate: " newbitrate

 for (( i=1; i<=TITLE_COUNT; i++ ))
 do
 echo -e "$newbitrate" >> "$TITLE/bitrate.txt"
 done
        ;;
     *)
 echo "Invalid input..."
 echo "Quit"
 rm -r "$TITLE"
 echo -e "Supression du dossier \e[32m$TITLE\e[0m"
 exit 1
 ;;
 esac





for (( i=1; i<=TITLE_COUNT; i++ ))
do



bv=$(sed -n "$i p" "$TITLE/bitrate.txt")
bitrate_k=$((bv/1))k
bufsize_k=$((bv/2))k
echo ""
echo -e "Le bitrate du titre n°\e[94m$i\e[0m sera donc de : \e[32m$bitrate_k\e[0m"
echo "Proceed..."

sleep 2


LENGTH=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify -dvd-device "$DEVICE" dvdnav://"$i" 2>/dev/null | \
          sed -E -n 's/^.*ID_LENGTH=([0-9]+).*$/\1/p')
           
LIMIT=2400
    [[ "$LENGTH" -le "$LIMIT" ]] && continue


    mplayer -noconfig all -nocache -dvd-device "$DEVICE" dvdnav://"$i" \
            -dumpstream -dumpfile "$TITLE/$i-$TITLE.vob"
           


INTERLEAVED_FRAMES=$(ffmpeg -filter:v idet -frames:v 200 -an -f rawvideo \
             -y /dev/null -i "$TITLE/$i-$TITLE.vob" 2>&1 | \
          awk '/(Single|Multi) frame detection/ {sum += $8+$10}
              END { print sum }'
)

if [[ "$INTERLEAVED_FRAMES" -gt "100" ]]; then
    FILTERS='-filter:v yadif=0:-1:0,hue=b=0.0:s=0.7,hqdn3d=1.5:1.5:4:4,unsharp=luma_msize_x=5:luma_msize_y=5:luma_amount=0.5,noise=c0s=2:c1s=2:c2s=2:c0f=a+t'
else
    FILTERS='-filter:v hue=b=0.0:s=0.7,hqdn3d=1.5:1.5:4:4,unsharp=luma_msize_x=5:luma_msize_y=5:luma_amount=0.5,noise=c0s=2:c1s=2:c2s=2:c0f=a+t'




    fi    




COUNT_AUDIO=$(ffprobe "$TITLE/$i-$TITLE.vob" 2>&1 | grep -c "Audio:")
FPS=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.vob" 2>/dev/null | grep "VIDEO:" | awk '{print$6}')

       

RATIO=$(lsdvd -x "$DEVICE" -t "$i" | grep -m1 "Aspect ratio:" | awk '{print$11}' | sed -e 's/\//\:/g' | tr -d ',')

O_CHANNELS=$(ffprobe "$TITLE/$i-$TITLE.vob" 2>&1 | grep -c '(Audio: ac3, 0 channels)')
         
REMOVE_O_CHANNELS=$(ffprobe "$TITLE/$i-$TITLE.vob" 2>&1 | awk '/Stream/ && /Audio:/ && /kb\/s|\(LC\),/ { print $2 }' | \
          cut -d "[" -f2 | cut -d "]" -f1 | awk '{ printf " -map i:"$0" " }')
                       
ALLSHOW_TAG=$(mplayer -vo null -ao null -frames 0 -identify dvdnav://"$i" -dvd-device "$DEVICE"  2>/dev/null | \
          awk '/audio stream:/  {printf " -metadata:s:a:"$3" language="$8" -metadata:s:a:"$3" title="$5$6""}')
                       
MAP_ID_STREAMS=$(lsdvd -a "$DEVICE" -t "$i" 2> /dev/null | grep "Language:" | sed -e 's/c/1c/g'  | awk '{ printf " -map i:"$21"" }')        
                                                 
MAP_ID_STREAMS_LPCM=$(lsdvd -a "$DEVICE" -t "$i" 2> /dev/null | grep "lpcm" | awk '{ printf " -map i:"$22"" }')
                                                                                                                 
COUNT_LPCM=$(lsdvd -a "$DEVICE" -t "$i" |grep -c 'lpcm')
   
AIDS_LPCM=$(lsdvd -a "$DEVICE" -t "$i" | awk '/lpcm/ { print $22 }')


## VOB PRÉSENT.
## AUCUN AUDIO.
if [[ -e "$TITLE/$i-$TITLE.vob" ]] && [[ "$COUNT_AUDIO" -eq "0" ]]; then


     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$bitrate_k" -maxrate "$bitrate_k" -bufsize "$bufsize_k" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         -an -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         $FILTERS \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"

         
rm -f "$TITLE/$i-$TITLE.vob"
       
         
                       

   
    fi




## VOB PRÉSENT.
## AVEC OU SANS AUDIO(S).
## SANS 0 CHANNEL.
## SANS LPCM.
if [[ -e "$TITLE/$i-$TITLE.vob" ]] && [[ "$COUNT_AUDIO" -ge "0" ]] && [[ "$O_CHANNELS" -eq "0" ]] && [[ "$COUNT_LPCM" -eq "0" ]]; then            

     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$bitrate_k" -maxrate "$bitrate_k" -bufsize "$bufsize_k" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         ${MAP_ID_STREAMS} -c:a copy ${ALLSHOW_TAG} -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         $FILTERS \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"
           

#        ffmpeg -hwaccel auto -c:v mpeg2_cuvid -analyzeduration 1000M -probesize 1000M -i "$TITLE/$i-$TITLE.vob" \
#            -map 0:v -metadata title="$TITLE" \
#            -c:v h264_nvenc -preset medium -b:v $BITRATE_K -bufsize $BUFSIZE_K -profile:v high -bf 3 -b_ref_mode 0 -temporal-aq 1 -rc-lookahead 20 -vsync 0 \
#            -loglevel repeat+verbose \
#            -filter:v hue=b=0.0:s=0.7,hqdn3d=1.5:1.5:4:4,unsharp=luma_msize_x=5:luma_msize_y=5:luma_amount=0.5,noise=c0s=2:c1s=2:c2s=2:c0f=a+t \
#            ${MAP_ID_STREAMS} -c:a copy $ALLSHOW_TAG -movflags +faststart \
#            -y "$TITLE/$i-$TITLE.mkv"  


rm -f "$TITLE/$i-$TITLE.vob"
 


   
   
     fi



## VOB PRÉSENT.
## AU MOINS UN AUDIO OU PLUS.
## UN 0 CHANNEL OU PLUS.
## SANS LPCM.

if [[ -e "$TITLE/$i-$TITLE.vob" ]] && [[ "$COUNT_AUDIO" -ge "1" ]] && [[ "$O_CHANNELS" -ge "1" ]] && [[ "$COUNT_LPCM" -eq "0" ]]; then

     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$bitrate_k" -maxrate "$bitrate_k" -bufsize "$bufsize_k" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         ${REMOVE_O_CHANNELS} -c:a copy ${ALLSHOW_TAG} -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         $FILTERS \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"


rm -f "$TITLE/$i-$TITLE.vob"




   
    fi



## VOB PRÉSENT.
## AVEC OU SANS AUDIO(S).
## SANS 0 CHANNEL.
## AU MOINS UN LPCM OU PLUS.

if [[ -e "$TITLE/$i-$TITLE.vob" ]] && [[ "$COUNT_AUDIO" -ge "0" ]] && [[ "$O_CHANNELS" -eq "0" ]] && [[ "$COUNT_LPCM" -ge "1" ]]; then

     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$bitrate_k" -maxrate "$bitrate_k" -bufsize "$bufsize_k" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         ${MAP_ID_STREAMS_LPCM} -acodec pcm_s16be ${ALLSHOW_TAG} -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         $FILTERS \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"


rm -f "$TITLE/$i-$TITLE.vob"



         dvdxchap -t  "$i" "$DEVICE" > "$TITLE/$i-$TITLE-Chapters.txt"
           
         mkvmerge "$TITLE/$i-$TITLE.mkv" --chapters "$TITLE/$i-$TITLE-Chapters.txt" \
          -o "$TITLE/$i-$TITLE-[Out_Chapters].mkv"            
           
rm -f "$TITLE/$i-$TITLE.mkv"
rm -f "$TITLE/$i-$TITLE-Chapters.txt"
mv "$TITLE/$i-$TITLE-[Out_Chapters].mkv" "$TITLE/$i-$TITLE.mkv"


mkdir -p "$TITLE/WAVE"

for n in $AIDS_LPCM; do
        mplayer -noconfig all -nocache -benchmark -vc null -vo null \
                 -ao pcm:fast:file="$TITLE/WAVE/[$i-($n)]-$TITLE.wav" \
                 -identify -dvd-device "$DEVICE" dvdnav://"$i" -ni -aid "$n"
done  



   
    fi





COUNT_AUDIO_FR=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null |awk '/-alang fr,/ { print $9 }' | wc -w)

## AU MOINS UN AUDIO FRANÇAIS OU PLUS.
if [[ "$COUNT_AUDIO_FR" -ge "1" ]]; then

      mkvmerge -o "$TITLE/$i-$TITLE-[Language: Français].mkv" -a fre "$TITLE/$i-$TITLE.mkv"

rm -f "$TITLE/$i-$TITLE.mkv"
      mv "$TITLE/$i-$TITLE-[Language: Français].mkv" "$TITLE/$i-$TITLE.mkv"



   
    fi
 
 


## ON INDIQUE LA LANGUE DE L'AUDIO DANS LE RENOMAGE DU TITRE ET LE NOMBRE.
INFO=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | \
          awk '/alang/  { x = x $9 ""}
              END { sub(/,*$/, "", x); print x }'
)
COUNT_INFO=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | grep -c "alang")
COUNT=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | grep -c "aid")

## UNE OU PLUSIEURS INFOS SUR L'AUDIO ET UN OU PLUSIEURS AUDIOS.
## INTÉGRATION DES CHAPITRES.
if [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$COUNT_INFO" -ge "1" ]] && [[ "$COUNT" -ge "1" ]] ; then      
      mv "$TITLE/$i-$TITLE.mkv" "$TITLE/$i-$TITLE-[Audio: $INFO].mkv"
      dvdxchap -t  "$i" "$DEVICE" > "$TITLE/$i-$TITLE-Chapters.txt"
      mkvmerge "$TITLE/$i-$TITLE-[Audio: $INFO].mkv" --chapters "$TITLE/$i-$TITLE-Chapters.txt" -o "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv"        
      rm -f "$TITLE/$i-$TITLE-[Audio: $INFO].mkv"
      rm -f "$TITLE/$i-$TITLE-Chapters.txt"
      mediainfo "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters].log"                
   


   fi
   



SIDFR=$(lsdvd -s "$DEVICE" -t "$i" 2> /dev/null |awk '/Subtitle:/ && /Language: fr/ { sub(/,$/ ,"", $2);
                                      if ($2 ~ /^[0-9]+$/) print (--$2) }'
)
                                     
                                     
                                                                   
COUNT_SID_FR=$(echo "$SIDFR" |wc -w)

## AU MOINS UN SUB FRANÇAIS OU PLUS (ON EXTRAIT TOUT ÇA).
if [[ "$COUNT_SID_FR" -ge "1" ]]; then

mkdir -p "$TITLE/VOBSUBS/$i-$TITLE"

for n in $SIDFR; do mencoder -dvd-device "$DEVICE" dvdnav://"$i" -nosound -ovc frameno -force-avi-aspect "$RATIO" -o /dev/null \
               -ifo "/run/media/$USER/$TITLE/VIDEO_TS/VTS_01_0.IFO" -sid "$n" -vobsubout "$TITLE/$n-vobsubs-fr" -vobsuboutindex "$n"

## ON CORRIGE LES ID VIDES SI BESOIN.
sed -i 's/id:.*,/id: fr,/g' "$TITLE/$n-vobsubs-fr.idx"

taille_idx=$(stat -c%s "$TITLE/$n-vobsubs-fr.idx")
taille_sub=$(stat -c%s "$TITLE/$n-vobsubs-fr.sub")

if [[ "$taille_idx" -gt 1000 ]] && [[ "$taille_sub" -gt 0 ]] ; then

echo "$n-vobsubs-fr.idx et $n-vobsubs-fr.sub sont bon"

   else

## ON ISOLE LES VOBSUBS INVALIDES DANS LE DOSSIER VOBSUBS
echo "$n-vobsubs-fr.idx ou $n-vobsubs-fr.sub est incorrect ... déplacement"

   mv "$TITLE/$n-vobsubs-fr.idx" "$TITLE/$n-vobsubs-fr.sub" "$TITLE/VOBSUBS/$i-$TITLE"


 fi


done          


   fi


## ON COMPTE CE QU'IL RESTE DE BON EN IDX/SUB.
COUNT_IDX_FR=$(find "$TITLE" -maxdepth 1 -name '*.idx' | wc -l)
COUNT_SUB_FR=$(find "$TITLE" -maxdepth 1 -name '*.sub' | wc -l)


## CONDITION : UN IDX/SUB OU PLUS.
if [[ -e "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" ]] && [ "$COUNT_IDX_FR" -ge "1" ] && [ "$COUNT_SUB_FR" -ge "1" ]
then




mkvmerge "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" --language "0:fre" "$TITLE"/*.idx  -o "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub].mkv"

## ON DÉPLACE LE RESTANT DES VOBSUBS UNE FOIS MIXÉS AVEC LES INVALIDES.
mv "$TITLE"/*.idx "$TITLE"/*.sub "$TITLE/VOBSUBS/$i-$TITLE"
rm -f "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv"


INFO_SUB=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub].mkv" 2>/dev/null | \
          awk '/slang/ && /fre/  { x = x $9 ","}
              END { sub(/,*$/, "", x); print x }'
)
             
                 
     mv "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub].mkv" "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub: $INFO_SUB].mkv"
     mediainfo "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub: $INFO_SUB].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters + Sub: $INFO_SUB].log"

rm -f "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters].log"  




    fi



## AUCUN IDX ou SUB.
if [[ -e "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" ]] && [ "$COUNT_IDX_FR" -eq "0" ] || [ "$COUNT_SUB_FR" -eq "0" ]
then

mv "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters NoSub].mkv"
mediainfo "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters NoSub].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters NoSub].log"

rm -f "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters].log"


   
    fi



## PAS D'INFO ET UN SEUL AUDIO.
if [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$COUNT_INFO" -eq "0" ]] && [[ "$COUNT" -eq "1" ]] ; then  
     mv "$TITLE/$i-$TITLE.mkv" "$TITLE/$i-$TITLE-[Audio: Und].mkv"
     mediainfo "$TITLE/$i-$TITLE-[Audio: Und].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: Und].log"



   fi
 
 

## PAS D'AUDIO DONC PAS D'INFO.
if [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$COUNT_INFO" -eq "0" ]] && [[ "$COUNT" -eq "0" ]] ; then  
    mv "$TITLE/$i-$TITLE.mkv" "$TITLE/$i-$TITLE-[Audio: NoSound].mkv"
    mediainfo "$TITLE/$i-$TITLE-[Audio: NoSound].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: NoSound].log"


 
   fi

 

done

rm -f "$TITLE/bitrate.txt"
 

Hors ligne

#723 26-04-2020 16:56:51

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Test en cours ...

Dans le dossier GLADIATOR


├── [ 20M]  1-GLADIATOR-[Audio: fre,fre + Chapters + Sub: fre].mkv
├── [ 11K]  IFOS
│   └── [7,0K]  1-GLADIATOR-[Audio: fre,fre + Chapters + Sub: fre].log
└── [312K]  VOBSUBS
    └── [308K]  1-GLADIATOR
        ├── [ 933]  0-vobsubs-fr.idx
        ├── [ 46K]  0-vobsubs-fr.sub
        ├── [2,9K]  2-vobsubs-fr.idx
        └── [254K]  2-vobsubs-fr.sub

  20M used in 3 directories, 6 file
 





la sortie :


Les conditions sont réunies : On continue
Proceed...
DVD-Vidéo : GLADIATOR
Ce nom convient-il ? [Y/n] y

Réponse : Oui
Garder le bitrate d'origine ? [Y/n] y

Réponse : Oui

Le bitrate du titre n°1 sera donc de : 9800k
Proceed...
MPlayer SVN-r38157 (C) 2000-2019 MPlayer Team
225 audio & 468 video codecs
do_connect: could not connect to socket
connect: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing dvdnav://1.
libdvdnav: DVD Title: GLADIATOR
libdvdnav: DVD Serial Number: 296804da
libdvdnav: DVD Title (Alternative):
libdvdnav: DVD disk reports itself with Region mask 0x00fd0000. Regions: 02
libdvdread: Attempting to retrieve all CSS keys
libdvdread: This can take a _long_ time, please be patient
libdvdread: Get key for /VIDEO_TS/VIDEO_TS.VOB at 0x00000136
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_0.VOB at 0x00000364
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_1.VOB at 0x0001d2b1
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_02_0.VOB at 0x0038a18c
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_02_1.VOB at 0x0038a191
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_03_0.VOB at 0x0038c81d
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_03_1.VOB at 0x0038c822
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_04_0.VOB at 0x0038e594
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_04_1.VOB at 0x0038e599
libdvdread: Elapsed time 0
libdvdread: Found 4 VTS's
libdvdread: Elapsed time 0
audio stream: 0 format: ac3 (5.1) language: fr aid: 128.
audio stream: 1 format: dts (5.1) language: fr aid: 1.
audio stream: 2 format: ac3 (5.1) language: en aid: 130.
audio stream: 3 format: ac3 (stereo) language: en aid: 131.
subtitle ( sid ): 0 language: fr
subtitle ( sid ): 1 language: en
subtitle ( sid ): 2 language: fr
subtitle ( sid ): 3 language: en

INIT ERROR: couldn't get init pos New position not yet determined.
Remember to disable MPlayer's cache when playing dvdnav:// streams (adding -nocache to your command line)
DVDNAV, switched to title: 1
audio stream: 0 format: ac3 (5.1) language: fr aid: 128.
audio stream: 1 format: dts (5.1) language: fr aid: 1.
audio stream: 2 format: ac3 (5.1) language: en aid: 130.
audio stream: 3 format: ac3 (stereo) language: en aid: 131.
subtitle ( sid ): 0 language: fr
subtitle ( sid ): 1 language: en
subtitle ( sid ): 2 language: fr
subtitle ( sid ): 3 language: en
dump: 103804928 bytes written (~1.4%)


MPlayer interrupted by signal 2 in module: dumpstream
dump: 104722432 bytes written to 'GLADIATOR/1-GLADIATOR.vob'.
Core dumped ;)

Exiting... (End of file)
Input #0, mpeg, from 'GLADIATOR/1-GLADIATOR.vob':
  Duration: 00:02:04.80, start: 0.287267, bitrate: 6712 kb/s
    Stream #0:0[0x1bf]: Data: dvd_nav_packet
    Stream #0:1[0x1e0]: Video: mpeg2video (Main), 1 reference frame, yuv420p(tv, progressive, left), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:2[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s
    Stream #0:3[0x89]: Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 768 kb/s
    Stream #0:4[0x82]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s
    Stream #0:5[0x83]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:6[0x22]: Subtitle: dvd_subtitle
    Stream #0:7[0x23]: Subtitle: dvd_subtitle
    Stream #0:8[0x20]: Subtitle: dvd_subtitle
Stream mapping:
  Stream #0:1 -> #0:0 (mpeg2video (native) -> h264 (libx264))
  Stream #0:2 -> #0:1 (copy)
  Stream #0:3 -> #0:2 (copy)
  Stream #0:4 -> #0:3 (copy)
  Stream #0:5 -> #0:4 (copy)
Press [q] to stop, [?] for help
[Parsed_hue_0 @ 0x565350b38f80] H_expr:(null) h_deg_expr:(null) s_expr:0.7 b_expr:0.0
[Parsed_hqdn3d_1 @ 0x565350b39080] ls:1.500000 cs:1.500000 lt:4.000000 ct:4.000000
[graph 0 input from stream 0:1 @ 0x56534e5c21c0] w:720 h:576 pixfmt:yuv420p tb:1/25 fr:25/1 sar:64/45 sws_param:flags=2
[Parsed_unsharp_2 @ 0x565350d1e000] effect:sharpen type:luma msize_x:5 msize_y:5 amount:0.50
[Parsed_unsharp_2 @ 0x565350d1e000] effect:none type:chroma msize_x:5 msize_y:5 amount:0.00
[libx264 @ 0x56534fbe2400] using SAR=64/45
[libx264 @ 0x56534fbe2400] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0x56534fbe2400] profile High, level 3.0, 4:2:0, 8-bit
[libx264 @ 0x56534fbe2400] 264 - core 159 r2999 296494a - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:1:1 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=6 chroma_me=1 trellis=2 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=12 lookahead_threads=4 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=10 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=300 keyint_min=25 scenecut=42 intra_refresh=0 rc_lookahead=10 rc=cbr mbtree=1 bitrate=9800 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=52 qpstep=4 vbv_maxrate=9800 vbv_bufsize=4900 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
Output #0, matroska, to 'GLADIATOR/1-GLADIATOR.mkv':
  Metadata:
    title           : GLADIATOR
    encoder         : Lavf58.29.100
    Stream #0:0: Video: h264 (libx264), 1 reference frame (H264 / 0x34363248), yuv420p(left), 720x576 [SAR 64:45 DAR 16:9], q=0-52, 9800 kb/s, 25 fps, 1k tbn, 25 tbc
    Metadata:
      encoder         : Lavc58.54.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 9800000/0/9800000 buffer size: 4900000 vbv_delay: -1
    Stream #0:1(fr): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, 5.1(side), fltp, 384 kb/s
    Metadata:
      title           : ac3(5.1)
    Stream #0:2(fr): Audio: dts (DTS) ([1] [0][0] / 0x2001), 48000 Hz, 5.1(side), fltp, 768 kb/s
    Metadata:
      title           : dts(5.1)
    Stream #0:3(en): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, 5.1(side), fltp, 384 kb/s
    Metadata:
      title           : ac3(5.1)
    Stream #0:4(en): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 192 kb/s
    Metadata:
      title           : ac3(stereo)
frame=  505 fps=108 q=-1.0 Lsize=   21725kB time=00:00:20.09 bitrate=8856.2kbits/s speed=4.29x    
video:17498kB audio:4197kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.142664%
Input file #0 (GLADIATOR/1-GLADIATOR.vob):
  Input stream #0:0 (data): 0 packets read (0 bytes);
  Input stream #0:1 (video): 506 packets read (13350624 bytes); 506 frames decoded;
  Input stream #0:2 (audio): 627 packets read (963072 bytes);
  Input stream #0:3 (audio): 1877 packets read (1888262 bytes);
  Input stream #0:4 (audio): 627 packets read (963072 bytes);
  Input stream #0:5 (audio): 629 packets read (483072 bytes);
  Input stream #0:6 (subtitle): 0 packets read (0 bytes);
  Input stream #0:7 (subtitle): 0 packets read (0 bytes);
  Input stream #0:8 (subtitle): 0 packets read (0 bytes);
  Total: 4266 packets (17648102 bytes) demuxed
Output file #0 (GLADIATOR/1-GLADIATOR.mkv):
  Output stream #0:0 (video): 505 frames encoded; 505 packets muxed (17917584 bytes);
  Output stream #0:1 (audio): 627 packets muxed (963072 bytes);
  Output stream #0:2 (audio): 1877 packets muxed (1888262 bytes);
  Output stream #0:3 (audio): 627 packets muxed (963072 bytes);
  Output stream #0:4 (audio): 629 packets muxed (483072 bytes);
  Total: 4265 packets (22215062 bytes) muxed
[AVIOContext @ 0x565350d1b7c0] Statistics: 8 seeks, 94 writeouts
[libx264 @ 0x56534fbe2400] frame I:3     Avg QP: 2.89  size:119311
[libx264 @ 0x56534fbe2400] frame P:98    Avg QP: 6.47  size: 75977
[libx264 @ 0x56534fbe2400] frame B:404   Avg QP: 7.82  size: 25032
[libx264 @ 0x56534fbe2400] consecutive B-frames:  2.0%  2.4%  5.9%  8.7% 15.8% 42.8%  5.5%  1.6%  0.0%  0.0% 15.2%
[libx264 @ 0x56534fbe2400] mb I  I16..4: 60.5%  6.9% 32.6%
[libx264 @ 0x56534fbe2400] mb P  I16..4: 11.7%  7.2% 16.6%  P16..4: 16.5%  8.7% 12.6%  0.0%  0.0%    skip:26.6%
[libx264 @ 0x56534fbe2400] mb B  I16..4:  1.3%  1.3%  3.0%  B16..8: 18.5% 10.8%  6.3%  direct:17.6%  skip:41.1%  L0:22.3% L1:32.9% BI:44.9%
[libx264 @ 0x56534fbe2400] 8x8 transform intra:20.8% inter:28.2%
[libx264 @ 0x56534fbe2400] coded y,uvDC,uvAC intra: 92.3% 99.7% 98.3% inter: 42.6% 25.3% 14.6%
[libx264 @ 0x56534fbe2400] i16 v,h,dc,p: 39% 13% 42%  6%
[libx264 @ 0x56534fbe2400] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 10% 36%  4%  4%  5%  3%  7%  4%
[libx264 @ 0x56534fbe2400] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 10% 13%  6%  7% 11%  5% 11%  6%
[libx264 @ 0x56534fbe2400] i8c dc,h,v,p: 63%  7% 17% 13%
[libx264 @ 0x56534fbe2400] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x56534fbe2400] kb/s:7095.77
[AVIOContext @ 0x56534e5445c0] Statistics: 123027600 bytes read, 2 seeks
Exiting normally, received signal 2.
mkvmerge v45.0.0 ('Heaven in Pennies') 64-bit
« GLADIATOR/1-GLADIATOR.mkv » : utilisation du démultiplexeur pour le format « Matroska ».
« GLADIATOR/1-GLADIATOR.mkv » piste 0 : utilisation du module de sortie pour le format « AVC/H.264 ».
« GLADIATOR/1-GLADIATOR.mkv » piste 1 : utilisation du module de sortie pour le format « AC-3 ».
« GLADIATOR/1-GLADIATOR.mkv » piste 2 : utilisation du module de sortie pour le format « DTS ».
Le fichier « GLADIATOR/1-GLADIATOR-[Language: Français].mkv » est ouvert en écriture.
Progression : 100%
Les entrées CUE (l'index) sont en cours d'écriture…
Le multiplexage a pris 0 seconde.
mkvmerge v45.0.0 ('Heaven in Pennies') 64-bit
« GLADIATOR/1-GLADIATOR-[Audio: fre,fre].mkv » : utilisation du démultiplexeur pour le format « Matroska ».
« GLADIATOR/1-GLADIATOR-[Audio: fre,fre].mkv » piste 0 : utilisation du module de sortie pour le format « AVC/H.264 ».
« GLADIATOR/1-GLADIATOR-[Audio: fre,fre].mkv » piste 1 : utilisation du module de sortie pour le format « AC-3 ».
« GLADIATOR/1-GLADIATOR-[Audio: fre,fre].mkv » piste 2 : utilisation du module de sortie pour le format « DTS ».
Le fichier « GLADIATOR/1-GLADIATOR-[Audio: fre,fre + Chapters].mkv » est ouvert en écriture.
Progression : 100%
Les entrées CUE (l'index) sont en cours d'écriture…
Le multiplexage a pris 0 seconde.
MEncoder SVN-r38157 (C) 2000-2019 MPlayer Team
225 audio & 468 video codecs
libdvdnav: DVD Title: GLADIATOR
libdvdnav: DVD Serial Number: 296804da
libdvdnav: DVD Title (Alternative):
libdvdnav: DVD disk reports itself with Region mask 0x00fd0000. Regions: 02
libdvdread: Attempting to retrieve all CSS keys
libdvdread: This can take a _long_ time, please be patient
libdvdread: Get key for /VIDEO_TS/VIDEO_TS.VOB at 0x00000136
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_0.VOB at 0x00000364
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_1.VOB at 0x0001d2b1
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_02_0.VOB at 0x0038a18c
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_02_1.VOB at 0x0038a191
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_03_0.VOB at 0x0038c81d
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_03_1.VOB at 0x0038c822
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_04_0.VOB at 0x0038e594
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_04_1.VOB at 0x0038e599
libdvdread: Elapsed time 0
libdvdread: Found 4 VTS's
libdvdread: Elapsed time 0
audio stream: 0 format: ac3 (5.1) language: fr aid: 128.
audio stream: 1 format: dts (5.1) language: fr aid: 1.
audio stream: 2 format: ac3 (5.1) language: en aid: 130.
audio stream: 3 format: ac3 (stereo) language: en aid: 131.
subtitle ( sid ): 0 language: fr
subtitle ( sid ): 1 language: en
subtitle ( sid ): 2 language: fr
subtitle ( sid ): 3 language: en

INIT ERROR: couldn't get init pos New position not yet determined.
Remember to disable MPlayer's cache when playing dvdnav:// streams (adding -nocache to your command line)
success: format: 2  data: 0x0 - 0x0
DVDNAV, switched to title: 1
audio stream: 0 format: ac3 (5.1) language: fr aid: 128.
audio stream: 1 format: dts (5.1) language: fr aid: 1.
audio stream: 2 format: ac3 (5.1) language: en aid: 130.
audio stream: 3 format: ac3 (stereo) language: en aid: 131.
subtitle ( sid ): 0 language: fr
subtitle ( sid ): 1 language: en
subtitle ( sid ): 2 language: fr
subtitle ( sid ): 3 language: en

MPEG-PS file format detected.
VIDEO:  MPEG2  720x576  (aspect 3)  25.000 fps  9800.0 kbps (1225.0 kbyte/s)
[V] filefmt:2  fourcc:0x10000002  size:720x576  fps:25.000  ftime:=0.0400
Writing header...
ODML: vprp aspect is 16:9.
Writing header...
ODML: vprp aspect is 16:9.
^CPos: 161.5s   4039f ( 1%) 1069.08fps Trem:   3min   2mb  A-V:0.000 [0:0]
Writing index...
Writing header...
ODML: vprp aspect is 16:9.
Recommended video bitrate for 650MB CD: 33743
Recommended video bitrate for 700MB CD: 36339
Recommended video bitrate for 800MB CD: 41532
Recommended video bitrate for 2 x 650MB CD: 67493
Recommended video bitrate for 2 x 700MB CD: 72685
Recommended video bitrate for 2 x 800MB CD: 83070

Video stream:    0.800 kbit/s  (100 B/s)  size: 16156 bytes  161.560 secs  4039 frames
0-vobsubs-fr.idx ou 0-vobsubs-fr.sub est incorrect ... déplacement
MEncoder SVN-r38157 (C) 2000-2019 MPlayer Team
225 audio & 468 video codecs
libdvdnav: DVD Title: GLADIATOR
libdvdnav: DVD Serial Number: 296804da
libdvdnav: DVD Title (Alternative):
libdvdnav: DVD disk reports itself with Region mask 0x00fd0000. Regions: 02
libdvdread: Attempting to retrieve all CSS keys
libdvdread: This can take a _long_ time, please be patient
libdvdread: Get key for /VIDEO_TS/VIDEO_TS.VOB at 0x00000136
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_0.VOB at 0x00000364
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_1.VOB at 0x0001d2b1
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_02_0.VOB at 0x0038a18c
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_02_1.VOB at 0x0038a191
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_03_0.VOB at 0x0038c81d
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_03_1.VOB at 0x0038c822
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_04_0.VOB at 0x0038e594
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_04_1.VOB at 0x0038e599
libdvdread: Elapsed time 0
libdvdread: Found 4 VTS's
libdvdread: Elapsed time 0
audio stream: 0 format: ac3 (5.1) language: fr aid: 128.
audio stream: 1 format: dts (5.1) language: fr aid: 1.
audio stream: 2 format: ac3 (5.1) language: en aid: 130.
audio stream: 3 format: ac3 (stereo) language: en aid: 131.
subtitle ( sid ): 0 language: fr
subtitle ( sid ): 1 language: en
subtitle ( sid ): 2 language: fr
subtitle ( sid ): 3 language: en

INIT ERROR: couldn't get init pos New position not yet determined.
Remember to disable MPlayer's cache when playing dvdnav:// streams (adding -nocache to your command line)
success: format: 2  data: 0x0 - 0x0
DVDNAV, switched to title: 1
audio stream: 0 format: ac3 (5.1) language: fr aid: 128.
audio stream: 1 format: dts (5.1) language: fr aid: 1.
audio stream: 2 format: ac3 (5.1) language: en aid: 130.
audio stream: 3 format: ac3 (stereo) language: en aid: 131.
subtitle ( sid ): 0 language: fr
subtitle ( sid ): 1 language: en
subtitle ( sid ): 2 language: fr
subtitle ( sid ): 3 language: en

MPEG-PS file format detected.
VIDEO:  MPEG2  720x576  (aspect 3)  25.000 fps  9800.0 kbps (1225.0 kbyte/s)
[V] filefmt:2  fourcc:0x10000002  size:720x576  fps:25.000  ftime:=0.0400
Writing header...
ODML: vprp aspect is 16:9.
Writing header...
ODML: vprp aspect is 16:9.
^CPos: 203.8s   5095f ( 2%) 1049.22fps Trem:   3min   2mb  A-V:0.000 [0:0]
Writing index...
Writing header...
ODML: vprp aspect is 16:9.
Recommended video bitrate for 650MB CD: 26748
Recommended video bitrate for 700MB CD: 28806
Recommended video bitrate for 800MB CD: 32923
Recommended video bitrate for 2 x 650MB CD: 53503
Recommended video bitrate for 2 x 700MB CD: 57619
Recommended video bitrate for 2 x 800MB CD: 65851

Video stream:    0.800 kbit/s  (100 B/s)  size: 20380 bytes  203.800 secs  5095 frames
2-vobsubs-fr.idx et 2-vobsubs-fr.sub sont bon
mkvmerge v45.0.0 ('Heaven in Pennies') 64-bit
« GLADIATOR/1-GLADIATOR-[Audio: fre,fre + Chapters].mkv » : utilisation du démultiplexeur pour le format « Matroska ».
« GLADIATOR/2-vobsubs-fr.idx » : utilisation du démultiplexeur pour le format « VobSub ».
« GLADIATOR/1-GLADIATOR-[Audio: fre,fre + Chapters].mkv » piste 0 : utilisation du module de sortie pour le format « AVC/H.264 ».
« GLADIATOR/1-GLADIATOR-[Audio: fre,fre + Chapters].mkv » piste 1 : utilisation du module de sortie pour le format « AC-3 ».
« GLADIATOR/1-GLADIATOR-[Audio: fre,fre + Chapters].mkv » piste 2 : utilisation du module de sortie pour le format « DTS ».
« GLADIATOR/2-vobsubs-fr.idx » piste 0 : utilisation du module de sortie pour le format « VobSub ».
Le fichier « GLADIATOR/1-GLADIATOR-[Audio: fre,fre + Chapters + Sub].mkv » est ouvert en écriture.
Progression : 100%
Les entrées CUE (l'index) sont en cours d'écriture…
Le multiplexage a pris 0 seconde.

Le bitrate du titre n°2 sera donc de : 6500k
Proceed...

Le bitrate du titre n°3 sera donc de : 9800k
Proceed...

Le bitrate du titre n°4 sera donc de : 9800k
Proceed...

Le bitrate du titre n°5 sera donc de : 9800k
Proceed...

 



Tout est OK, chez moi hmm

Dernière modification par Anonyme (26-04-2020 17:00:16)

#724 26-04-2020 20:00:37

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

je recommence sans lancer  gtk-gnutella (qui , d'ailleurs , refuse de démarrer)

Hors ligne

#725 26-04-2020 20:10:02

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

@smolski

juste le fun, essaies celui-ci pour voir le nouveau truc :
Il est vraiment plus cool wink
C'est Debian Alain qui m'a mis le truc dans la tête smile


Les conditions sont réunies : On continue
Proceed...
DVD-Vidéo : GLADIATOR
Ce nom convient-il ? [Y/n] y
Réponse : Oui

La limite est fixée à : -1 Seconde (C'est à dire tous les titres)
Ce limite convient-elle ? [Y/n] n
Réponse : Non pour -1
Entrer une limite (ex:2500) en secondes: 2400
Tous les titres de 2400 secondes ou plus seront pris en compte.

Garder le bitrate d'origine ? [Y/n] n
Réponse : Non
Entrer un nouveau Bitrate: 1500


Dump
...

Le bitrate du titre n°1 sera donc de : 1500k

Encodage
...
 




TEST13_FINAL_RC


#!/bin/bash

## Anonyme
## Testeur smolski
## 26/04/2020


PATH=$PATH:/sbin:/usr/sbin

## CONDITION : UN SEUL DVD-VIDÉO.
mounting_directory=$( mount | grep  '/dev/sr' | grep -Po 'on\K.*(?=type)'  | sed 's|\(.*\)/.*|\1|' | uniq )
COUNT_VIDEO_TS=$(find ${mounting_directory} -maxdepth 3 -name 'VIDEO_TS.IFO' 2> /dev/null | wc -l)

DEVICE=$(blkid /dev/sr* | awk '{print $1}' | sed -e 's/://g')
COUNT_DEVICE=$(blkid /dev/sr* | awk '{print $1}' | sed -e 's/://g' | wc -l)


if [[ "$COUNT_VIDEO_TS" -eq 0 ]]; then
    echo "Aucun dvd vidéo monté : Abandon"
    exit 0
elif [[ "$COUNT_VIDEO_TS" -gt 1 ]];  then
    echo "Il y a plus d'un dvd video détecté : Abandon"
    exit 0


  fi



if [[ "$COUNT_VIDEO_TS" -eq 1 ]] && [[ "$COUNT_DEVICE" -eq 1 ]]; then
echo -e "\e[32mLes conditions sont réunies : On continue\e[0m"

TITLE=$(lsdvd /dev/sr0 | head -1 | awk '{print $3}')
TITLE_COUNT=$(lsdvd "$DEVICE" | grep -c ^'Title: ')


  fi


 echo "Proceed..."



 echo -e "DVD-Vidéo : \e[32m$TITLE\e[0m"
read -r -p "Ce nom convient-il ? [Y/n] " input
case $input in
    [yY][eE][sS]|[yY])

 echo -e "Réponse : \e[32mOui\e[0m"
 echo ""
 mkdir -p "$TITLE/IFOS"
 mkdir -p "$TITLE/VOBSUBS"
 ;;
    [nN][oO]|[nN])
 echo -e "Réponse : \e[32mNon\e[0m"
 read -r -p "Entrer un nouveau nom: " TITLE
if [[ -z "$TITLE" ]]; then
 echo "Invalid input..."
 echo "Quit"
 exit 1
else
 echo ""
 mkdir -p "$TITLE/IFOS"
 mkdir -p "$TITLE/VOBSUBS"
fi
       ;;
    *)
 echo "Invalid input..."
 echo "Quit"
 exit 1
 ;;
esac



LIMIT=-1
LENGTH=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify -dvd-device "$DEVICE" dvdnav://"$i" 2>/dev/null | \
          sed -E -n 's/^.*ID_LENGTH=([0-9]+).*$/\1/p')


 echo -e "La limite est fixée à : \e[32m$LIMIT Seconde\e[0m (C'est à dire tous les titres)"
read -r -p "Ce limite convient-elle ? [Y/n] " input
case $input in
    [yY][eE][sS]|[yY])

 echo -e "Réponse : \e[32mOui pour $LIMIT \e[0m"
 echo ""
 ;;
    [nN][oO]|[nN])
 echo -e "Réponse : \e[32mNon pour $LIMIT \e[0m"
 read -r -p "Entrer une limite (ex:2500) en secondes: " time_limit
if [[ -z "$time_limit" ]]; then
 echo "Invalid input..."
 echo "Quit"
 rm -r "$TITLE"
 echo -e "Supression du dossier \e[32m$TITLE\e[0m"
 exit 1
else
 echo -e "Tous les titres de \e[32m$time_limit secondes\e[0m ou plus seront pris en compte."
 echo -e "$time_limit" >> "$TITLE/time_limit.txt"
 echo ""
fi
       ;;
    *)
 echo "Invalid input..."
 echo "Quit"
 rm -r "$TITLE"
 echo -e "Supression du dossier \e[32m$TITLE\e[0m"
 exit 1
 ;;
esac





read -r -p "Garder le bitrate d'origine ? [Y/n] " input
case $input in
     [yY][eE][sS]|[yY])
 
 echo -e "Réponse : \e[32mOui\e[0m"
 
for (( i=1; i<=TITLE_COUNT; i++ ))
do

BITRATE=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify -dvd-device "$DEVICE" dvdnav://"$i" 2>/dev/null | \
          grep "VIDEO:" | awk '{print$8}' | sed 's/\.[^ ]*/ /g')
echo -e "$BITRATE" >> "$TITLE/bitrate.txt"
done

 ;;
     [nN][oO]|[nN])
 echo -e "Réponse : \e[32mNon\e[0m"
 
 read -r -p "Entrer un nouveau Bitrate: " newbitrate
if [[ -z "$newbitrate" ]]; then
 echo "Invalid input..."
 echo "Quit"
 rm -r "$TITLE"
 echo -e "Supression du dossier \e[32m$TITLE\e[0m"
 exit 1
else
for (( i=1; i<=TITLE_COUNT; i++ ))
 do
 echo -e "$newbitrate" >> "$TITLE/bitrate.txt"
 done
fi        ;;
     *)
 echo "Invalid input..."
 echo "Quit"
 rm -r "$TITLE"
 echo -e "Supression du dossier \e[32m$TITLE\e[0m"
 exit 1
 ;;
 esac





for (( i=1; i<=TITLE_COUNT; i++ ))
do



bv=$(sed -n "$i p" "$TITLE/bitrate.txt")
bitrate_k=$((bv/1))k
bufsize_k=$((bv/2))k

LENGTH=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify -dvd-device "$DEVICE" dvdnav://"$i" 2>/dev/null | \
          sed -E -n 's/^.*ID_LENGTH=([0-9]+).*$/\1/p')
           
LIMIT=$(sed q "$TITLE/time_limit.txt")
    [[ "$LENGTH" -le "$time_limit" ]] && continue


    mplayer -noconfig all -nocache -dvd-device "$DEVICE" dvdnav://"$i" \
            -dumpstream -dumpfile "$TITLE/$i-$TITLE.vob"
           


INTERLEAVED_FRAMES=$(ffmpeg -filter:v idet -frames:v 200 -an -f rawvideo \
             -y /dev/null -i "$TITLE/$i-$TITLE.vob" 2>&1 | \
          awk '/(Single|Multi) frame detection/ {sum += $8+$10}
              END { print sum }'
)

if [[ "$INTERLEAVED_FRAMES" -gt "100" ]]; then
    FILTERS='-filter:v yadif=0:-1:0,hue=b=0.0:s=0.7,hqdn3d=1.5:1.5:4:4,unsharp=luma_msize_x=5:luma_msize_y=5:luma_amount=0.5,noise=c0s=2:c1s=2:c2s=2:c0f=a+t'
else
    FILTERS='-filter:v hue=b=0.0:s=0.7,hqdn3d=1.5:1.5:4:4,unsharp=luma_msize_x=5:luma_msize_y=5:luma_amount=0.5,noise=c0s=2:c1s=2:c2s=2:c0f=a+t'




    fi    




COUNT_AUDIO=$(ffprobe "$TITLE/$i-$TITLE.vob" 2>&1 | grep -c "Audio:")
FPS=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.vob" 2>/dev/null | grep "VIDEO:" | awk '{print$6}')

       

RATIO=$(lsdvd -x "$DEVICE" -t "$i" | grep -m1 "Aspect ratio:" | awk '{print$11}' | sed -e 's/\//\:/g' | tr -d ',')

O_CHANNELS=$(ffprobe "$TITLE/$i-$TITLE.vob" 2>&1 | grep -c '(Audio: ac3, 0 channels)')
         
REMOVE_O_CHANNELS=$(ffprobe "$TITLE/$i-$TITLE.vob" 2>&1 | awk '/Stream/ && /Audio:/ && /kb\/s|\(LC\),/ { print $2 }' | \
          cut -d "[" -f2 | cut -d "]" -f1 | awk '{ printf " -map i:"$0" " }')
                       
ALLSHOW_TAG=$(mplayer -vo null -ao null -frames 0 -identify dvdnav://"$i" -dvd-device "$DEVICE"  2>/dev/null | \
          awk '/audio stream:/  {printf " -metadata:s:a:"$3" language="$8" -metadata:s:a:"$3" title="$5$6""}')
                       
MAP_ID_STREAMS=$(lsdvd -a "$DEVICE" -t "$i" 2> /dev/null | grep "Language:" | sed -e 's/c/1c/g'  | awk '{ printf " -map i:"$21"" }')        
                                                 
MAP_ID_STREAMS_LPCM=$(lsdvd -a "$DEVICE" -t "$i" 2> /dev/null | grep "lpcm" | awk '{ printf " -map i:"$22"" }')
                                                                                                                 
COUNT_LPCM=$(lsdvd -a "$DEVICE" -t "$i" |grep -c 'lpcm')
   
AIDS_LPCM=$(lsdvd -a "$DEVICE" -t "$i" | awk '/lpcm/ { print $22 }')


## VOB PRÉSENT.
## AUCUN AUDIO.
if [[ -e "$TITLE/$i-$TITLE.vob" ]] && [[ "$COUNT_AUDIO" -eq "0" ]]; then

echo -e "Le bitrate du titre n°\e[94m$i\e[0m sera donc de : \e[32m$bitrate_k\e[0m"
sleep 2

     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$bitrate_k" -maxrate "$bitrate_k" -bufsize "$bufsize_k" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         -an -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         $FILTERS \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"

         
rm -f "$TITLE/$i-$TITLE.vob"
       
         
                       

   
    fi




## VOB PRÉSENT.
## AU MOINS UN AUDIO OU PLUS.
## SANS 0 CHANNEL.
## SANS LPCM.
if [[ -e "$TITLE/$i-$TITLE.vob" ]] && [[ "$COUNT_AUDIO" -ge "1" ]] && [[ "$O_CHANNELS" -eq "0" ]] && [[ "$COUNT_LPCM" -eq "0" ]]; then

echo -e "Le bitrate du titre n°\e[94m$i\e[0m sera donc de : \e[32m$bitrate_k\e[0m"
sleep 2            

     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$bitrate_k" -maxrate "$bitrate_k" -bufsize "$bufsize_k" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         ${MAP_ID_STREAMS} -c:a copy ${ALLSHOW_TAG} -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         $FILTERS \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"
           

#        ffmpeg -hwaccel auto -c:v mpeg2_cuvid -analyzeduration 1000M -probesize 1000M -i "$TITLE/$i-$TITLE.vob" \
#            -map 0:v -metadata title="$TITLE" \
#            -c:v h264_nvenc -preset medium -b:v $BITRATE_K -bufsize $BUFSIZE_K -profile:v high -bf 3 -b_ref_mode 0 -temporal-aq 1 -rc-lookahead 20 -vsync 0 \
#            -loglevel repeat+verbose \
#            -filter:v hue=b=0.0:s=0.7,hqdn3d=1.5:1.5:4:4,unsharp=luma_msize_x=5:luma_msize_y=5:luma_amount=0.5,noise=c0s=2:c1s=2:c2s=2:c0f=a+t \
#            ${MAP_ID_STREAMS} -c:a copy $ALLSHOW_TAG -movflags +faststart \
#            -y "$TITLE/$i-$TITLE.mkv"  


rm -f "$TITLE/$i-$TITLE.vob"
 


   
   
     fi



## VOB PRÉSENT.
## AU MOINS UN AUDIO OU PLUS.
## UN 0 CHANNEL OU PLUS.
## SANS LPCM.

if [[ -e "$TITLE/$i-$TITLE.vob" ]] && [[ "$COUNT_AUDIO" -ge "1" ]] && [[ "$O_CHANNELS" -ge "1" ]] && [[ "$COUNT_LPCM" -eq "0" ]]; then

echo -e "Le bitrate du titre n°\e[94m$i\e[0m sera donc de : \e[32m$bitrate_k\e[0m"
sleep 2

     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$bitrate_k" -maxrate "$bitrate_k" -bufsize "$bufsize_k" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         ${REMOVE_O_CHANNELS} -c:a copy ${ALLSHOW_TAG} -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         $FILTERS \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"


rm -f "$TITLE/$i-$TITLE.vob"




   
    fi



## VOB PRÉSENT.
## AVEC OU SANS AUDIO(S).
## SANS 0 CHANNEL.
## AU MOINS UN LPCM OU PLUS.

if [[ -e "$TITLE/$i-$TITLE.vob" ]] && [[ "$COUNT_AUDIO" -ge "0" ]] && [[ "$O_CHANNELS" -eq "0" ]] && [[ "$COUNT_LPCM" -ge "1" ]]; then

echo -e "Le bitrate du titre n°\e[94m$i\e[0m sera donc de : \e[32m$bitrate_k\e[0m"
sleep 2

     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$bitrate_k" -maxrate "$bitrate_k" -bufsize "$bufsize_k" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         ${MAP_ID_STREAMS_LPCM} -acodec pcm_s16be ${ALLSHOW_TAG} -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         $FILTERS \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"

rm -f "$TITLE/$i-$TITLE.vob"

mkdir -p "$TITLE/WAVE"

for n in $AIDS_LPCM; do
        mplayer -noconfig all -nocache -benchmark -vc null -vo null \
                 -ao pcm:fast:file="$TITLE/WAVE/[$i-($n)]-$TITLE.wav" \
                 -identify -dvd-device "$DEVICE" dvdnav://"$i" -ni -aid "$n"
done  



   
    fi





COUNT_AUDIO_FR=$(mplayer -noconfig all -nocache -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null |awk '/-alang fr,/ { print $9 }' | wc -w)

## AU MOINS UN AUDIO FRANÇAIS OU PLUS.
if [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$COUNT_AUDIO_FR" -ge "1" ]]; then

      mkvmerge -o "$TITLE/$i-$TITLE-[Language: Français].mkv" -a fre "$TITLE/$i-$TITLE.mkv"

rm -f "$TITLE/$i-$TITLE.mkv"
      mv "$TITLE/$i-$TITLE-[Language: Français].mkv" "$TITLE/$i-$TITLE.mkv"



   
    fi
 
 


## ON INDIQUE LA LANGUE DE L'AUDIO DANS LE RENOMAGE DU TITRE ET LE NOMBRE.
INFO=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | \
          awk '/alang/  { x = x $9 ""}
              END { sub(/,*$/, "", x); print x }'
)
COUNT_INFO=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | grep -c "alang")
COUNT=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | grep -c "aid")

## UNE OU PLUSIEURS INFOS SUR L'AUDIO ET UN OU PLUSIEURS AUDIOS.
## INTÉGRATION DES CHAPITRES.
if [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$COUNT_INFO" -ge "1" ]] && [[ "$COUNT" -ge "1" ]] ; then      
      mv "$TITLE/$i-$TITLE.mkv" "$TITLE/$i-$TITLE-[Audio: $INFO].mkv"
      dvdxchap -t  "$i" "$DEVICE" > "$TITLE/$i-$TITLE-Chapters.txt"
      mkvmerge "$TITLE/$i-$TITLE-[Audio: $INFO].mkv" --chapters "$TITLE/$i-$TITLE-Chapters.txt" -o "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv"        
      rm -f "$TITLE/$i-$TITLE-[Audio: $INFO].mkv"
      rm -f "$TITLE/$i-$TITLE-Chapters.txt"
      mediainfo "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters].log"                
   


   fi
   



SIDFR=$(lsdvd -s "$DEVICE" -t "$i" 2> /dev/null |awk '/Subtitle:/ && /Language: fr/ { sub(/,$/ ,"", $2);
                                      if ($2 ~ /^[0-9]+$/) print (--$2) }'
)
                                     
                                     
                                                                   
COUNT_SID_FR=$(echo "$SIDFR" |wc -w)

## AU MOINS UN SUB FRANÇAIS OU PLUS (ON EXTRAIT TOUT ÇA).
if [[ "$COUNT_SID_FR" -ge "1" ]]; then

mkdir -p "$TITLE/VOBSUBS/$i-$TITLE"

for n in $SIDFR; do mencoder -dvd-device "$DEVICE" dvdnav://"$i" -nosound -ovc frameno -force-avi-aspect "$RATIO" -o /dev/null \
               -ifo "/run/media/$USER/$TITLE/VIDEO_TS/VTS_01_0.IFO" -sid "$n" -vobsubout "$TITLE/$n-vobsubs-fr" -vobsuboutindex "$n"

## ON CORRIGE LES ID VIDES SI BESOIN.
sed -i 's/id:.*,/id: fr,/g' "$TITLE/$n-vobsubs-fr.idx"

taille_idx=$(stat -c%s "$TITLE/$n-vobsubs-fr.idx")
taille_sub=$(stat -c%s "$TITLE/$n-vobsubs-fr.sub")

if [[ "$taille_idx" -gt 1000 ]] && [[ "$taille_sub" -gt 0 ]] ; then

echo "$n-vobsubs-fr.idx et $n-vobsubs-fr.sub sont bons"

   else

## ON ISOLE LES VOBSUBS INVALIDES DANS LE DOSSIER VOBSUBS
echo "$n-vobsubs-fr.idx ou $n-vobsubs-fr.sub incorrect ... déplacement des deux"

   mv "$TITLE/$n-vobsubs-fr.idx" "$TITLE/$n-vobsubs-fr.sub" "$TITLE/VOBSUBS/$i-$TITLE"


 fi


done          


   fi


## ON COMPTE CE QU'IL RESTE DE BON EN IDX/SUB.
COUNT_IDX_FR=$(find "$TITLE" -maxdepth 1 -name '*.idx' | wc -l)
COUNT_SUB_FR=$(find "$TITLE" -maxdepth 1 -name '*.sub' | wc -l)


## CONDITION : UN IDX/SUB OU PLUS.
if [[ -e "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" ]] && [ "$COUNT_IDX_FR" -ge "1" ] && [ "$COUNT_SUB_FR" -ge "1" ]
then

mkvmerge "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" --language "0:fre" "$TITLE"/*.idx  -o "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub].mkv"

## ON DÉPLACE LE RESTANT DES VOBSUBS UNE FOIS MIXÉS AVEC LES INVALIDES.
mv "$TITLE"/*.idx "$TITLE"/*.sub "$TITLE/VOBSUBS/$i-$TITLE"
rm -f "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv"


INFO_SUB=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub].mkv" 2>/dev/null | \
          awk '/slang/ && /fre/  { x = x $9 ","}
              END { sub(/,*$/, "", x); print x }'
)
             
                 
     mv "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub].mkv" "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub: $INFO_SUB].mkv"
     mediainfo "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters + Sub: $INFO_SUB].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters + Sub: $INFO_SUB].log"

rm -f "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters].log"  




    fi



## AUCUN IDX ET SUB. ON TAG EN NOSUB
if [[ -e "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" ]] && [ "$COUNT_IDX_FR" -eq "0" ] && [ "$COUNT_SUB_FR" -eq "0" ]
then

mv "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters].mkv" "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters NoSub].mkv"
mediainfo "$TITLE/$i-$TITLE-[Audio: $INFO + Chapters NoSub].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters NoSub].log"

rm -f "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO + Chapters].log"


   
    fi



## PAS D'INFO ET UN SEUL AUDIO. ON TAG EN UND
if [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$COUNT_INFO" -eq "0" ]] && [[ "$COUNT" -eq "1" ]] ; then  
     mv "$TITLE/$i-$TITLE.mkv" "$TITLE/$i-$TITLE-[Audio: Und].mkv"
     mediainfo "$TITLE/$i-$TITLE-[Audio: Und].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: Und].log"



   fi
 
 

## PAS D'AUDIO DONC PAS D'INFO. ON TAG EN NOSOUND
if [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$COUNT_INFO" -eq "0" ]] && [[ "$COUNT" -eq "0" ]] ; then  
    mv "$TITLE/$i-$TITLE.mkv" "$TITLE/$i-$TITLE-[Audio: NoSound].mkv"
    mediainfo "$TITLE/$i-$TITLE-[Audio: NoSound].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: NoSound].log"


 
   fi

 

done

rm -f "$TITLE/bitrate.txt"
rm -f "$TITLE/time_limite.txt"
 

Dernière modification par Anonyme (26-04-2020 20:50:29)

Pied de page des forums