Debian-facile

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

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

#76 09-01-2020 10:38:37

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.7.11-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

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

Voilà smile

ça tourne pas mal.

Le script : HandBrakeCLI_7_CHOIX_LABEL+TEST_RENAME


#!/bin/bash

## Golgot200
## 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/sr0 | grep "UUID=" | awk '{print$2}')
DIR=$(xdg-user-dir DESKTOP)




echo "DVD-Vidéo : $TITLE"
read -r -p "Ce nom convient-il ? [Y/n] " input
 
case $input in
    [yY][eE][sS]|[yY])
 echo "Yes"
 FOLDER=$DIR/ARCHIVAGE_DVD/"$TITLE"
 mkdir -p "$FOLDER"
 ;;
    [nN][oO]|[nN])
 echo "No"
 read -p "Entrer un nouveau nom: " TITLE
 FOLDER=$DIR/ARCHIVAGE_DVD/"$TITLE"
 mkdir -p "$FOLDER"
       ;;
    *)
 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 T15 (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 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 "$FOLDER/$i-$TITLE-[OPTION 1 ALL].mkv"


#### AVEC CROP

#HandBrakeCLI --no-dvdnav \
#--input $DEVICE --title $i \
#--all-audio --all-subtitles --subtitle-lang-list fr \
#-e nvenc_h265 -b $BITRATE \
#--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 \
#--aencoder copy \
#--output "$FOLDER/$i-$TITLE-[OPTION 1 ALL].mkv"




#### AJOUT CORRECTION STREAMS AUDIOS INVALIDES


DETECT_VALID_AUDIO=$(ffprobe "$FOLDER/$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' >> "$FOLDER/$i-choix.txt")
VALID_AUDIO=$(head -n 1 "$FOLDER/$i-choix.txt" | tail -n 1)

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


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


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


 
 
    fi




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

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

INFO_AUDIOFR=$(mplayer -vo null -ao null -frames 0 -identify "$FOLDER/$i-$TITLE-[Language: Français].mkv" 2>/dev/null | \
          awk '/alang/  { x = x $9 ""}
              END { sub(/,*$/, "", x); print x }'
)
             
      mv "$FOLDER/$i-$TITLE-[Language: Français].mkv" "$FOLDER/$i-$TITLE-[Language: $INFO_AUDIOFR].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


#### 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 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 "$FOLDER/$i-$TITLE-[OPTION 2].mkv"



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

          mv "$FOLDER/$i-$TITLE-[OPTION 2].mkv" "$FOLDER/$i-$TITLE-[Language: $INFO_2].mkv"


#### AVEC CROP

#HandBrakeCLI --no-dvdnav \
#--input $DEVICE --title $i \
#--all-audio --audio-lang-list "$AUDIO_LANG_LIST_FRENCH" --all-subtitles --subtitle-lang-list fr \
#-e nvenc_h265 -b $BITRATE \
#--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 \
#--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 golgot200 (09-01-2020 12:57:18)

Hors ligne

#77 09-01-2020 11:54:34

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.

Ah je teste maintenant. smile
Test en cours avec renommage. wink

"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#78 09-01-2020 14:33:01

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.

Ah golgot200, au bout de la sieste pas de fichier dans le répertoire renommée.
Voici les dernières lignes :

Encoding: task 1 of 1, 99.97 % (50.00 fps, avg 44.46 fps, ETA 00h00m02s)
*** libdvdread: CHECK_VALUE failed in src/nav_read.c:264 ***
*** for dsi->dsi_gi.zero1 == 0 ***

[13:04:48] reader: done. 130 scr changes
Encoding: task 1 of 1, 99.98 % (50.10 fps, avg 44.46 fps, ETA 00h00m01s)[13:04:51] work: average encoding speed for job is 44.463184 fps
[13:04:51] vfr: lost time: 0 (0 frames)
[13:04:51] vfr: gained time: 0 (0 frames) (0 not accounted for)
[13:04:51] ac3-decoder done: 238444 frames, 0 decoder errors
[13:04:51] mpeg2video-decoder done: 190764 frames, 0 decoder errors
[13:04:51] sync: got 190764 frames, 190764 expected
[13:04:51] sync: framerate min 25.000 fps, max 25.000 fps, avg 25.000 fps
x265 [info]: frame I:   1145, Avg QP:7.49  kb/s: 12843.81
x265 [info]: frame P:  48102, Avg QP:8.61  kb/s: 7958.39
x265 [info]: frame B: 141517, Avg QP:13.57  kb/s: 2241.37
x265 [info]: Weighted P-Frames: Y:2.5% UV:1.4%
x265 [info]: consecutive B-frames: 3.5% 2.2% 25.7% 40.5% 28.0%

encoded 190764 frames in 4292.26s (44.44 fps), 3746.58 kb/s, Avg QP:12.28
[13:04:51] mux: track 0, 190764 frames, 3574327415 bytes, 3747.36 kbps, fifo 1024
[13:04:51] mux: track 1, 238444 frames, 244166656 bytes, 255.99 kbps, fifo 2048
[13:04:51] libhb: work result = 0

Encode done!

HandBrake has exited.
/usr/local/bin/handbrake_dvd3: ligne 179: mkvmerge : commande introuvable
mv: impossible d'évaluer '/home/user/Bureau/ARCHIVAGE_DVD/soleil_levant/1-soleil_levant-[OPTION 1 RETOUCHE].mkv': Aucun fichier ou dossier de ce type
 


"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#79 09-01-2020 14:45:24

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.7.11-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

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

Post ton script ici car chez moi le script majoré sur le post #1 fonctionne nickel wink

EDIT: j'ai mis mon script dans /usr/local/bin  ... pas de problème aussi:)

l'erreur :

/usr/local/bin/handbrake_dvd3: ligne 179: mkvmerge : commande introuvable

Dernière modification par golgot200 (09-01-2020 15:18:18)

Hors ligne

#80 09-01-2020 15:10:25

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.7.11-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

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

Mais quel c.. je suis !!!  big_smile

apt install mkvmerge



J'ai modifié mon post #1

Penses aussi à un Ctrl + c dans le terminal pour ne pas encoder tout le film.
C'est plus pratique pour moi ...... ça me donne envie de faire la sieste aussi autrement big_smile

Dernière modification par golgot200 (09-01-2020 15:24:47)

Hors ligne

#81 09-01-2020 15:31:35

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 golgot200
Je suis à voir le doc sur la decolonisation, je fais ensuite. smile

"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#82 09-01-2020 15:33:50

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.7.11-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

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

Pas besoin du  paquet decolonisation scratchhead.gif

out.gif

Hors ligne

#83 09-01-2020 15:59:17

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.

Pas de mkvmerge de dispo. Buster.
Par contre y a :
mkvtoolnix
qui ressemble à une boîte à outil pouvant le contenir ?

apt show mkvtoolnix


Package: mkvtoolnix
Version: 31.0.0-1
Priority: optional
Section: video
Maintainer: Christian Marillat <marillat@debian.org>
Installed-Size: 18,1 MB
Depends: libboost-filesystem1.67.0, libboost-regex1.67.0 (>= 1.67.0-10), libboost-system1.67.0, libc6 (>= 2.14), libebml4v5 (>= 1.3.4-2~), libflac8 (>= 1.3.0), libgcc1 (>= 1:3.4), libmagic1 (>= 5.12), libmatroska6v5 (>= 1.4.5), libogg0 (>= 1.0rc3), libpugixml1v5 (>= 1.7), libstdc++6 (>= 5.2), libvorbis0a (>= 1.1.2), zlib1g (>= 1:1.1.4)
Suggests: mkvtoolnix-gui
Homepage: https://mkvtoolnix.download/index.html
Tag: interface::commandline, role::program, sound::compression,
 use::converting, works-with-format::mp3, works-with-format::oggtheora,
 works-with-format::oggvorbis, works-with-format::wav,
 works-with::audio, works-with::video
Download-Size: 3745 kB
APT-Sources: http://ftp.ch.debian.org/debian buster/main amd64 Packages
Description: ensemble d’outils en ligne de commande pour manier les fichiers Matroska
 Matroska est un format de conteneur vidéo récent, basé sur EBML (Extensible
 Binary Meta Language), qui est une sorte de XML binaire.
 Les outils suivants permettent de manipuler des fichiers Matroska :
  — mkvmerge permet de créer des fichiers Matroska à partir d’autres formats ;
  — mkvinfo permet d’obtenir les informations sur les pistes d’un fichier
    Matroska ;
  — mkvextract peut extraire des pistes de fichier Matroska dans d’autres
    formats.
 .
 Ce paquet fournit seulement les outils en ligne de commande. Pour des
 outils graphiques, le paquet mkvtoolnix-gui doit être utilisé.


Qu'en penses-tu ?
smile

La première partie de la doc est finie et enregistrée, en cours de gravure sur dvd... wink


"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#84 09-01-2020 16:00:42

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.

Les outils suivants permettent de manipuler des fichiers Matroska :
  — mkvmerge permet de créer des fichiers Matroska à partir d’autres formats ;
  — mkvinfo permet d’obtenir les informations sur les pistes d’un fichier
    Matroska ;
  — mkvextract peut extraire des pistes de fichier Matroska dans d’autres
    formats.


Ok c'est ça, je l'installe et reteste avec la doc en cours.


"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#85 09-01-2020 16:08: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.

golgot200 a écrit :

Penses aussi à un Ctrl + c dans le terminal pour ne pas encoder tout le film.


À faire pendant la copie pour gagner tu temps lors du test ?


"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#86 09-01-2020 16:13:28

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.

Ah y'a une erreur au redémarrage :

[16:10:04] work: average encoding speed for job is 0.000000 fps
[16:10:04] vfr: lost time: 0 (0 frames)
[16:10:04] vfr: gained time: 0 (0 frames) (0 not accounted for)
Encoding: task 1 of 1, 0.00 %[16:10:04] ac3-decoder done: 0 frames, 0 decoder errors
[16:10:04] mpeg2video-decoder done: 0 frames, 0 decoder errors
[16:10:04] sync: got 0 frames, 190764 expected

encoded 0 frames
[16:10:04] libhb: work result = 3

Encode failed (error 3).

HandBrake has exited.
/usr/local/bin/handbrake_dvd3: ligne 176: /ARCHIVAGE_DVD/soleil_levant/1-choix.txt: Aucun fichier ou dossier de ce type
head: impossible d'ouvrir '/ARCHIVAGE_DVD/soleil_levant/1-choix.txt' en lecture: Aucun fichier ou dossier de ce type
mkvmerge v31.0.0 ('Dolores In A Shoestand') 64-bit
Erreur : Identifiant de piste ou code langue incorrect dans « --atracks /ARCHIVAGE_DVD/soleil_levant/1-soleil_levant-[OPTION 1 ALL].mkv ».
mv: impossible d'évaluer '/ARCHIVAGE_DVD/soleil_levant/1-soleil_levant-[OPTION 1 RETOUCHE].mkv': Aucun fichier ou dossier de ce type



Mais j'utilise l'ancien script en dirigeant vers mon répertoire perso, pas le nouveau, je reprends l'affaire sans rien modifier...


"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#87 09-01-2020 16:17:36

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.

J'ai remis le tuto initia et il se déroule bien...
Je laisse filer et j'interrompts pour te donner un résultat plus rapidement. smile

Dernière modification par smolski (09-01-2020 16:18:54)


"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#88 09-01-2020 16:20:50

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 le résultat est parfait, j'en fais un avec la redirection, voir... wink

"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#89 09-01-2020 16:25:05

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.7.11-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

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

En tout cas ce que je vois, c'est que le script chez toi et ton dvd, rempli bien sa fonction  sur l' [option 1] ===>  retouche audio.

Dernière modification par golgot200 (09-01-2020 16:28:19)

Hors ligne

#90 09-01-2020 16:27:17

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.

handbrake_dvd3


Proceed...
/usr/local/bin/handbrake_dvd3: ligne 78: /mnt/ssd/film/1-reserve/telecharge : est un dossier
DVD-Vidéo : DVD_VIDEO_RECORDING
Ce nom convient-il ? [Y/n] n
No
Entrer un nouveau nom: soleil_levant
mkdir: impossible de créer le répertoire « /ARCHIVAGE_DVD »: Permission non accordée
*** Zero check failed in src/ifo_read.c:564
    for vmgi_mat->zero_3 = 0x00000000010000000000000000000000000000


Je regarde si ce repertoire existe déjà... wink

Dernière modification par smolski (09-01-2020 16:27:44)


"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#91 09-01-2020 16:34:13

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.

Non apparemment il ne veut pas d'un autre répertoire

HandBrake has exited.
/usr/local/bin/handbrake_dvd3: ligne 176: /ARCHIVAGE_DVD/soleil_levant/1-choix.txt: Aucun fichier ou dossier de ce type
head: impossible d'ouvrir '/ARCHIVAGE_DVD/soleil_levant/1-choix.txt' en lecture: Aucun fichier ou dossier de ce type


Ce doit être dans le renommage...


"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#92 09-01-2020 16:42:06

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.

Promenade du toutou... à pluch'
Ah oui, la vie du retraité est une itinérance sans fin.. wink

"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#93 09-01-2020 16:42:37

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.7.11-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

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

Je ne pense pas que ça soit le renommage, ça fonction bien chez moi, même avec des espaces. Post moi ton script dans l'état pour voir.

Hors ligne

#94 09-01-2020 16:52:10

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.

#!/bin/bash

## Golgot200
## 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/sr0 | grep "UUID=" | awk '{print$2}')
#DIR=$(xdg-user-dir DESKTOP)
DIR=$(~/mnt/ssd/film/1-reserve/telecharge)




echo "DVD-Vidéo : $TITLE"
read -r -p "Ce nom convient-il ? [Y/n] " input
 
case $input in
    [yY][eE][sS]|[yY])
 echo "Yes"
 FOLDER=$DIR/ARCHIVAGE_DVD/"$TITLE"
 mkdir -p "$FOLDER"
 ;;
    [nN][oO]|[nN])
 echo "No"
 read -p "Entrer un nouveau nom: " TITLE
 FOLDER=$DIR/ARCHIVAGE_DVD/"$TITLE"
 mkdir -p "$FOLDER"
       ;;
    *)
 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 T15 (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 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 "$FOLDER/$i-$TITLE-[OPTION 1 ALL].mkv"


#### AVEC CROP

#HandBrakeCLI --no-dvdnav \
#--input $DEVICE --title $i \
#--all-audio --all-subtitles --subtitle-lang-list fr \
#-e nvenc_h265 -b $BITRATE \
#--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 \
#--aencoder copy \
#--output "$FOLDER/$i-$TITLE-[OPTION 1 ALL].mkv"




#### AJOUT CORRECTION STREAMS AUDIOS INVALIDES


DETECT_VALID_AUDIO=$(ffprobe "$FOLDER/$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' >> "$FOLDER/$i-choix.txt")
VALID_AUDIO=$(head -n 1 "$FOLDER/$i-choix.txt" | tail -n 1)

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


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


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


 
 
    fi




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

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

INFO_AUDIOFR=$(mplayer -vo null -ao null -frames 0 -identify "$FOLDER/$i-$TITLE-[Language: Français].mkv" 2>/dev/null | \
          awk '/alang/  { x = x $9 ""}
              END { sub(/,*$/, "", x); print x }')
             
      mv "$FOLDER/$i-$TITLE-[Language: Français].mkv" "$FOLDER/$i-$TITLE-[Language: $INFO_AUDIOFR].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


#### 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 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 "$FOLDER/$i-$TITLE-[OPTION 2].mkv"



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

          mv "$FOLDER/$i-$TITLE-[OPTION 2].mkv" "$FOLDER/$i-$TITLE-[Language: $INFO_2].mkv"


#### AVEC CROP

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


"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

#95 09-01-2020 16:57:47

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.7.11-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

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

Mais qu'elle mer... dans ce script !!!! lol lol lol

Hors ligne

#96 09-01-2020 17:06:20

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.7.11-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

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

C'est quoi ça :

DIR=$(~/mnt/ssd/film/1-reserve/telecharge)

C'est pour mon info personnelle. big_smile

~/mnt   veux dire mnt dans home ?

Dernière modification par golgot200 (09-01-2020 17:11:02)

Hors ligne

#97 09-01-2020 17:07:25

phlinux
Membre
Distrib. : Jessie
Noyau : 4.9
(G)UI : Openbox (+Rox+Feh)
Inscription : 09-05-2009

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

Les retraités c'est bordélique....

Pages perso : feh, omegat, udisks, passerelle, schroot vraiment transparent

Hors ligne

#98 09-01-2020 17:09:38

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.7.11-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

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

phlinux a écrit :

Les retraités c'est bordélique....



nonnnnnnnnnnnnnnnnnnn ???? lol

J'y comprend plus rien dans ses directions et en plus maintenant, il est en ballade dans une autre direction avec le toutou tongue

Dernière modification par golgot200 (09-01-2020 17:11:42)

Hors ligne

#99 09-01-2020 17:21:33

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : Linux 5.7.11-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

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

Met  juste le chemin exact sur les deux FOLDER sur ce script à la place de :

TON_CHEMIN_SUR_TON_SDD



FOLDER=TON_CHEMIN_SUR_TON_SDD/ARCHIVAGE_DVD/"$TITLE"

ligne 73 et 79


#!/bin/bash

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


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/sr0 | grep "UUID=" | awk '{print$2}')
#DIR=$(xdg-user-dir DESKTOP)




echo "DVD-Vidéo : $TITLE"
read -r -p "Ce nom convient-il ? [Y/n] " input
 
case $input in
    [yY][eE][sS]|[yY])
 echo "Yes"
 FOLDER=TON_CHEMIN_SUR_TON_SDD/ARCHIVAGE_DVD/"$TITLE"
 mkdir -p "$FOLDER"
 ;;
    [nN][oO]|[nN])
 echo "No"
 read -p "Entrer un nouveau nom: " TITLE
 FOLDER=TON_CHEMIN_SUR_TON_SDD/ARCHIVAGE_DVD/"$TITLE"
 mkdir -p "$FOLDER"
       ;;
    *)
 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 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 "$FOLDER/$i-$TITLE-[OPTION 1 ALL].mkv"




#### AJOUT CORRECTION STREAMS AUDIOS INVALIDES
DETECT_VALID_AUDIO=$(ffprobe "$FOLDER/$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' >> "$FOLDER/$i-choix.txt")
VALID_AUDIO=$(head -n 1 "$FOLDER/$i-choix.txt" | tail -n 1)

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


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


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


 
 
    fi




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

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

INFO_AUDIOFR=$(mplayer -vo null -ao null -frames 0 -identify "$FOLDER/$i-$TITLE-[Language: Français].mkv" 2>/dev/null | \
          awk '/alang/  { x = x $9 ""}
              END { sub(/,*$/, "", x); print x }'
)
             
      mv "$FOLDER/$i-$TITLE-[Language: Français].mkv" "$FOLDER/$i-$TITLE-[Language: $INFO_AUDIOFR].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


#### 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 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 "$FOLDER/$i-$TITLE-[OPTION 2].mkv"



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

          mv "$FOLDER/$i-$TITLE-[OPTION 2].mkv" "$FOLDER/$i-$TITLE-[Language: $INFO_2].mkv"


    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 "$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 golgot200 (09-01-2020 17:30:47)

Hors ligne

#100 09-01-2020 19:03: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.

ah oui, ~/mnt c'est pas bon smile

"Théo et Adama te rappellent pourquoi Zyed et Bouna couraient…"
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

En ligne

Pied de page des forums