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).

#1 26-11-2019 17:02:54

Anonyme
Invité

[Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Bonjour,

Ce script encode tous les titres de plus de 2 secondes sur un DVD-vidéo avec HandBrakeCLI. (Le GUI Handbrake le fait, mais pas en automatique.)


- Je ne compresse pas la vidéo.

- Je garde le même bitrate, que je prends en info sur chaque titre pour le porter dans la commande. Ainsi, je ne me pose plus la question du "mieux".

- j'ai mis un style de comparateur "lsdvd VS dvdnav" pour détecter des incohérences sur d'éventuelles bandes audios à "o ko" et traiter tous ça. (C'est rare mais ça arrive)

- Il sortira le mkv en français et ses sous-titres fr. Si ce n'est pas possible, il le sortira en "VO" avec des sous-titres fr, si il y en a.

- J'ai choisi nvenc_h265 mais comme je n'ai mis aucune option à part le bitrate automatique et mes filtres fétiches, on pourra changer ce choix facilement.
Mais avec nvenc_h265 je suis à 300 fps d'encodage tout de même et 13 minutes de "RIP/encodage" sur un film de 1H06. Au niveau taille, c'est un peu plus petit que la taille originale.
Chez moi, ça passe à peu près sur tous mes dvds.

- Une option pour la sauvegarde du LPCM sur un DVD concert est présente dans ce script. Handbrake ne gère pas le direct copy sur un lpcm, il l'encode par défaut en aac. (C'est bien dommage)

- Les chapitres, c'est lui qui gère. (Rien à rajouter)

- Je ne retouche pas les couleurs. (pas de filtre hue)

- Si le nommage automatique du titre ne convient pas, on peut en choisir un autre plus perso maintenant.

- Dans le nommage aussi, j'ai rajouté les langues présente dans la vidéo encodée.



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



Donc en résumé :


LIMIT=2
nvenc_h265
 



sont à adapter comme vous le voudrez.

Les paquets à installer :

apt install ffmpeg handbrake-cli mkvmerge mplayer lsdvd mediainfo




Le script: post #227
Majoration (22/01/2020)


#!/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 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 D4UNE DURÉE ÉGALE OU PLUS DE .... SECONDES [ ICI, 2 SECONDES]
               
    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=5
    [[ "$LENGTH" -le "$LIMIT" ]] && continue





## FRAMES 15
COUNT_AUDIO_MPLAYER=$(mplayer -noconfig all -nocache -vo null -ao null -frames 15 -identify -dvd-device "$DEVICE" dvdnav://"$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')


## ICI BITRATE ET RATIO ORIGINAUX.
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 ',')



## ENCODAGE DE TOUS LES TITRES DU DVD-VIDÉO.
if [[ "$COUNT_AUDIO_MPLAYER" -ge "0" ]]; then

HandBrakeCLI --no-dvdnav \
--input $DEVICE --title $i \
--all-audio --all-subtitles --subtitle-lang-list fr \
-e nvenc_h265 -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.mkv"


             

### SI LE TITRE N'A PAS D'AUDIO, ON NE FRANCHIRA PAS LES ÉTAPES SUIVANTES.


    fi

## AUDIO(S) INDIQUÉS PAR LSDVD ET AUDIO(S) INDIQUÉS PAR FFPROBE EN CIBLANT KB/S.
COUNT_AUDIO=$(lsdvd -a "$DEVICE" -t "$i" 2> /dev/null |grep -c 'Audio:')  
#COUNT_VALID_AUDIO=$(ffprobe "$TITLE/$i-$TITLE.mkv" 2>&1 | awk '/Audio:/ && /Stream/ && /ac3,/ && /kb\/s/ { print $2 }'| cut -c4-4 | wc -w)
COUNT_VALID_AUDIO=$(ffprobe "$TITLE/$i-$TITLE.mkv" 2>&1 | awk '/Audio:/ && /Stream/ && /kb\/s|\(LC),/ { print $2 }'| cut -c4-4 | wc -w)

## UN OU PLUSIEURS STREAMS AUDIO.
if [[ "$COUNT_AUDIO_MPLAYER" -ge "1" ]] && [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$COUNT_AUDIO" != "$COUNT_VALID_AUDIO" ]] ; then
#### VÉRIFICATION ET REJET DES STREAMS AUDIOS INVALIDES (AU CAS OÙ).
DETECT_VALID_AUDIO=$(ffprobe "$TITLE/$i-$TITLE.mkv" 2>&1 | awk '/Audio:/ && /Stream/ && /kb\/s|\(LC),/ { 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-[vérifié].mkv" --atracks $VALID_AUDIO "$TITLE/$i-$TITLE.mkv"
       mv "$TITLE/$i-$TITLE-[vérifié].mkv" "$TITLE/$i-$TITLE.mkv"

#rm -f "$TITLE/$i-choix.txt"

     
 
         
    fi
     


## CETTE ÉTAPE NE SERA UTILISÉE QUE SI IL Y A QU'UN SEUL STREAM AUDIO ET SANS INFO SUR LE LANGUAGE. ON NE PARLE PAS ICI DE (XX ou UNKNOWN)
COUNT=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | grep -c "aid")

NULL_INFO=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | \
               awk '/alang/ { print $9 }' | wc -w)
               
if [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$COUNT" -eq "1" ]] && [[ "$NULL_INFO" -eq "0" ]] ; then
          mkvpropedit "$TITLE/$i-$TITLE.mkv" --edit track:a1 --set language=und
 


    fi    
     


## CETTE ÉTAPE NE SERA UTILISÉE QUE SI IL Y A UN OU PLUSIEURS STREAMS AUDIOS FR AVEC DES STREAMS AUDIOS ETRANGERS (POUR NE LAISSER QUE CELLES-CI).
## SI IL N'Y A QUE DU FRANÇAIS, CETTE OPTION NE SERA PAS UTILISÉE.
VERIF_AUDIO_ALL=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | \
   grep -c "alang")
VERIF_AUDIOFR=$(mplayer -vo null -ao null -frames 0 -identify "$TITLE/$i-$TITLE.mkv" 2>/dev/null | \
   grep -c "alang fre,")
         
if [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$VERIF_AUDIOFR" -ge "1" ]] && [[ "$VERIF_AUDIO_ALL" != "$VERIF_AUDIOFR" ]] ; 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



## CETTE ÉTAPE NE SERA UTILISÉE QUE SI IL Y A UN STREAM AUDIO AU FORMAT LPCM.
## 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 [[ -e "$TITLE/$i-$TITLE.mkv" ]] && [[ "$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
   

## 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.
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"        
      mediainfo "$TITLE/$i-$TITLE-[Audio: $INFO].mkv" >> "$TITLE/IFOS/$i-$TITLE-[Audio: $INFO].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
 





Voilà smile

Dernière modification par Anonyme (25-04-2020 10:45:48)

#2 01-01-2020 19:34:18

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Pour smolski

x264


#!/bin/bash

## Anonyme
## sudo pacman -S handbrake mplayer lsdvd xdg-user-dirs


##                               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..."

UUID=$(blkid /dev/sr* | grep "UUID=" | awk '{print$2}')
DIR=$(xdg-user-dir DESKTOP)
FOLDER="$DIR/ARCHIVAGE_DVD/$TITLE-$UUID"

if [[ ! -d "$FOLDER" ]]; then
    echo "$FOLDER n'existe pas !"
    echo "Création Du Dossier $FOLDER"
    mkdir -p "$FOLDER"
fi

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=2
    [[ "$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')

## [ 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 T15 (fr null ===> eng seul valide) = OK  
if [[ "$COUNT_LAVF_STREAM_DVDNAV" != "$COUNT_AUDIO_LSDVD" ]]; then

HandBrakeCLI --no-dvdnav \
--input $DEVICE --title $i \
--all-audio --all-subtitles --subtitle-lang-list fr \
-e x264 -b $BITRATE \
--crop 0:0:0:0 \
--aencoder copy \
--output "$FOLDER/$i - $TITLE-[ OPTION 1 ALL ].mkv"



   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

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 \
--crop 0:0:0:0 \
--aencoder copy \
--output "$FOLDER/$i - $TITLE-[ OPTION 2 ].mkv"



  fi
 

## SAUVEGARDER UN 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 "$FOLDER/WAVE"

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


  fi


done
 

#3 01-01-2020 19:50:38

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

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Le retour de la commande :

handbrake_dvd
Proceed...
/home/user/Bureau/ARCHIVAGE_DVD/J_BREL_DVD2-UUID="c2e614ba20202020" n'existe pas !
Création Du Dossier /home/user/Bureau/ARCHIVAGE_DVD/J_BREL_DVD2-UUID="c2e614ba20202020"
/usr/local/bin/handbrake_dvd: ligne 119: HandBrakeCLI : commande introuvable


Ah oui, j'utilise gnome en interface smile

Dernière modification par smolski (01-01-2020 19:52:34)


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#4 01-01-2020 20:34:10

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Tu as installé handbrake ?

Dernière modification par Anonyme (01-01-2020 20:34:52)

#5 01-01-2020 21:49:09

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

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Oui handbrake est installé.
Ah zut, pas handbrake-cli.
J'y fais et teste... smile

encoding en cours... wink

Dernière modification par smolski (01-01-2020 21:54:29)


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#6 01-01-2020 22:04:28

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Autant pour moi, je modifie le paquet à installer post 1.
Je pensais que c'était une dépendance hmm

EDIT:
fait wink

Dernière modification par Anonyme (01-01-2020 22:07:10)

#7 02-01-2020 07:13:33

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

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

test de la commande, le résultat :
J'ai bien une copie du dvd en mkv, il y a un crop important laissant de grandes bandes noires prolongeant les bords du film.
Il serait nécessaire de pouvoir choisir le répertoire d'accueil soi-même, j'ai tenté de le faire en modifiant le DIR= du script vers une autre partition plus importante dédiée au cinéma, mais ça ne fonctionne pas correctement.

Sinon le tout abouti à une vidéo.mkv très riche de 4.1go. smile
Pour une cinémathèque amateur, c'est beaucoup mais bon, ça se réduit ensuite à volonté avec ffmpeg, ce qui est positif au final.
Ou bien, une commande de réduction à configurer dans le script pourrait aussi le faire.

Je teste une vidéo 4:3 maintenant, je te retourne le résultat en suivant ici.

Yop ! cool

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#8 02-01-2020 07:40:31

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

smolski a écrit :


il y a un crop important laissant de grandes bandes noires prolongeant les bords du film.



tu peux virer :

--crop 0:0:0:0 \


qui désactive le crop automatique sur la vidéo en encodage


smolski a écrit :


Sinon le tout abouti à une vidéo.mkv très riche de 4.1go.



Normal, le but est un archivage "un faux clone", mais tu peux dans les deux commandes  :

-e nvenc_h265 -b $BITRATE



mettre par exemple :

-e nvenc_h265 -b 1500



Pour DIR bah, ça je peux pas te dire big_smile

#9 02-01-2020 07:43:37

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Anonyme a écrit :



Pour DIR bah, ça je peux pas te dire big_smile



Donnes moi le chemin exact que je le place dans le script.
Quant tu parles de partition, c'est sur ton disque dur principal ?
Car si c'est  sur un autre disque dur ou il faut ton mot de passe pour l'ouvrir, ça je ne sais pas faire. hmm

Dernière modification par Anonyme (02-01-2020 07:46:58)

#10 02-01-2020 08:01:17

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Exemple dans mon dossier Vidéos dans home : ( commenter DIR= )


#DIR=$(xdg-user-dir DESKTOP)
FOLDER=$HOME/Vidéos/ARCHIVAGE_DVD/"$TITLE-$UUID"
 




Donc :

1500 en bitrate
enlever les filtres (provisoirement)
Crop automatique
Direction de la vidéo encodée dans le dossier Vidéos (Répertoire personnel)



#!/bin/bash

## Anonyme
## sudo pacman -S handbrake-cli mplayer lsdvd xdg-user-dirs


##                               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..."

UUID=$(blkid /dev/sr* | grep "UUID=" | awk '{print$2}')
#DIR=$(xdg-user-dir DESKTOP)
FOLDER=$HOME/Vidéos/ARCHIVAGE_DVD/"$TITLE-$UUID"

if [[ ! -d "$FOLDER" ]]; then
    echo "$FOLDER n'existe pas !"
    echo "Création Du Dossier $FOLDER"
    mkdir -p "$FOLDER"
fi

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=2
    [[ "$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')

## [ 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 T15 (fr null ===> eng seul valide) = OK  
if [[ "$COUNT_LAVF_STREAM_DVDNAV" != "$COUNT_AUDIO_LSDVD" ]]; then

HandBrakeCLI --no-dvdnav \
--input $DEVICE --title $i \
--all-audio --all-subtitles --subtitle-lang-list fr \
-e x264 -b 1500 \
--aencoder copy \
--output "$FOLDER/$i - $TITLE-[ OPTION 1 ALL ].mkv"



   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

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 1500 \
--aencoder copy \
--output "$FOLDER/$i - $TITLE-[ OPTION 2 ].mkv"



  fi
 

## SAUVEGARDER UN 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 "$FOLDER/WAVE"

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


  fi


done
 

Dernière modification par Anonyme (02-01-2020 08:24:21)

#11 02-01-2020 08:27:58

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

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

OK, vu la modif, l'espace dédié aux vidéos est dans :
/mnt/ssd/film/1-reserve/telecharge/
Soit : /dev/sda3             107616256 937701375 830085120 395,8G 83 Linux
J'ai compris la modif je l'appliquerai à la prochaine convertion dvd.
Merci.
OK pour le crop, idem.

Je souhaiterai aussi nommer moi-même les répertoires d'accueil, si c'est possible, sinon j'y ferai après la convertion du dvd.
Je suivrai les avancés dans le wiki déjà en place.

C'est un peu le pied tout ça, je te remercie Anonyme.
merci.gif

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#12 02-01-2020 08:34:47

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

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Il me semble que j'utilise un script particulier à mon matériel, les modifs sont-elles appicables pour un script plus commun ?

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#13 02-01-2020 08:37:58

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Pour les directions, je ne suis pas fortiche. Je te laisse faire.
J'ai mis l'UUID du DVD car certains DVDs ont le même nom en title "DVD_VIDEO" . Les vidéos encodées avec ce même label se retrouvaient toutes dans ce même dossier.
Je serais toi, je laisserai comme ça. wink

#14 02-01-2020 08:38:45

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

smolski a écrit :

Il me semble que j'utilise un script particulier à mon matériel, les modifs sont-elles appicables pour un script plus commun ?



Non, je le teste en ce moment wink

Au niveau des directions peut-être.

Dernière modification par Anonyme (02-01-2020 08:39:49)

#15 02-01-2020 08:39:51

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

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

OK Anonyme, je verrai à la l'usage, je compte recomposer toute ma cinémathèque sur kodi avec ton script.
Bon, ça va se faire dans le temps, 20mn de convertion avec un i7...

Dernière modification par smolski (02-01-2020 08:40:41)


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#16 02-01-2020 08:46:08

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

smolski a écrit :

OK Anonyme, je verrai à la l'usage, je compte recomposer toute ma cinémathèque sur kodi avec ton script.
Bon, ça va se faire dans le temps, 20mn de convertion avec un i7...




Même résultat chez moi avec un i7 et x264  15 à 20 minutes (110 fps à l'encodage/rippage) wink


6 minutes avec le GPU lol

Dernière modification par Anonyme (02-01-2020 08:51:40)

#17 02-01-2020 08:48:40

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Relies bien le post 1 pour les DVDs de concert wink

#18 02-01-2020 09:03:11

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Tu peux me donner le lien pour le wiki ?

EDIT: Parfois le scan preview 10 % est un peu long, c'est chiant mais normal.
J'ai cherché sur le net pour le désactiver dans le script  mais je n'ai rien trouvé.
Le GUI fait pareil au scan sur certains volumes.

Dernière modification par Anonyme (02-01-2020 09:08:57)

#19 02-01-2020 10:34:49

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

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Voilà, je l'ai sorti du chantier et il est ouvert à l'intervention de tous les membres df ainsi. https://debian-facile.org/doc:programma … :handbrake
Ne te gêne pas pour le recomposer ou lui ajouter des scripts handbrake différents.

Le post dans son entier est déplacé là :
https://debian-facile.org/viewtopic.php?id=25774

coyotus.png

Dernière modification par smolski (02-01-2020 10:38:12)


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#20 02-01-2020 10:45:59

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

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Ajout du lien vers le tuto dans les scripts bash :
https://debian-facile.org/doc:programma … ian-facile

Fastoche, non ? tongue

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#21 02-01-2020 11:54:17

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Impeccable, merci wink

#22 02-01-2020 12:28:15

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Dans le script, je fais un test sans l'option :

--no-dvdnav



car sur un dvd récalcitrant "endommagé" il a du mal. Plein d'erreurs.
Sans ça passe bien sans encombre wink

EDIT:

Tu sais ce que ça veut dire :

Intel Quick Sync Video support: no



??

Dernière modification par Anonyme (02-01-2020 12:29:43)

#23 02-01-2020 12:52:29

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

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Anonyme a écrit :

Tu sais ce que ça veut dire :

Intel Quick Sync Video support: no


Pas la moindre idée, désolé.

Sinon, j'ai fait et refait une vidéo depuis un dvd gravé par mes soins sur un graveur de dvd branché au cube canalsat. Cela me permet de récupérer des copies des films programmés dont j'utilise le VOB Pour créer les fichiers MKV avec le script.
Depuis ce dvd, il se crée 2 vidéos identiques :

1 - FUNAI_DVD_VIDEO-[ OPTION 1 ALL ].mkv

3 - FUNAI_DVD_VIDEO-[ OPTION 1 ALL ].mkv

Dernière modification par smolski (02-01-2020 12:53:41)


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#24 02-01-2020 13:01:05

Anonyme
Invité

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

Ok

Pour mon post 22, c'est pas bon.
J'ai un DVD avec ce problème big_smile

https://github.com/HandBrake/HandBrake/issues/1175

Il bloque à 50.6 %
Je teste avec le GUI pour voir si ça bloque aussi ....

Dernière modification par Anonyme (02-01-2020 13:02:33)

#25 02-01-2020 13:06:33

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

Re : [Terminé] HANDBRAKECLI Script pour ripper un DVD-VIDEO.

sieste.. wink

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

Pied de page des forums