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

#201 21-01-2020 10:43:29

Anonyme
Invité

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

Tu n'ai pas obligé de faire tout l'encodage, penses au ctrl + c dans le terminal.

#202 21-01-2020 10:52:22

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 ok Anonyme, je les supprime systématiquement ces fichiers-là.
j'ai un dvd en cours, je te file l'information bientôt. smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#203 21-01-2020 11:19:04

Anonyme
Invité

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

Je pense avoir trouvé l'erreur :


COUNT_VALID_AUDIO=$(ffprobe "$DEVICE" -t "$i" 2>&1 | awk '/Audio:/ && /Stream/ && /ac3,/ && /kb\/s/ { print $2 }'| cut -c4-4 | wc -w)
DETECT_VALID_AUDIO=$(ffprobe "$TITLE/$i-$TITLE.mkv" 2>&1 | awk '/Audio:/ && /Stream/ && /ac3,/ && /kb\/s/ { print $2 }'| cut -c4-4)
 



Devines wink

Dernière modification par Anonyme (21-01-2020 11:37:43)

#204 21-01-2020 11:39:31

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'suis pas assez calé pour deviner ça, compagnon, y faudrait que je reprenne les sources de mon activité professionnelle pour m'en démêler. old_geek.gif

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#205 21-01-2020 11:44:34

Anonyme
Invité

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

Et bien tu vois que l'on est callé sur ac3,

awk '/Audio:/ && /Stream/ && /ac3,/ && /kb\/s/ { print $2 }'



Donc banane pour l'audio mp2 et dts.

Il faut virer ac3, et analyser tous les streams :

 awk '/Audio:/ && /Stream/ && /kb\/s/ { print $2 }'

Dernière modification par Anonyme (21-01-2020 11:45:45)

#206 21-01-2020 11:52:15

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 Je comprends. smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#207 21-01-2020 11:58:51

Anonyme
Invité

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

Le prochain script que je post ici, c'est celui que tu utiliseras pour les tests, pas d'autres wink

#208 21-01-2020 12:03:39

Anonyme
Invité

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

Je viens de m'apercevoir qu'il y a des titres "sans vidéo" si on peut dire comme ça, (une image peut-être) ..... que l'audio lol

Dernière modification par Anonyme (21-01-2020 12:09:03)

#209 21-01-2020 13:09: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 pour les prochains tests Anonyme.
J'aimerai finaliser chacun d'eux tout de même.
Cet aprèm' je fais une installe partie debian à domicile, retour le soir.

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#210 21-01-2020 13:37:39

Anonyme
Invité

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

Rajout

"$TITLE/$i-$TITLE.mkv" doit exister et sera tout bon.

#211 21-01-2020 16:34:15

Anonyme
Invité

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

Voilà, ça devrait passer sur tes DVD-VIDÉOS récalcitrant :

x264 wink

J'ai laissé commenté :

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



pour que tu me fasses voir le ou les choix.txt




#!/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 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.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
 

Dernière modification par Anonyme (21-01-2020 16:36:46)

#212 21-01-2020 18:00:45

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à, j'ai lancé le script précédent (handbrake8) avec un dvd commercial (Le prisonnier...) smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#213 21-01-2020 21:09: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.

Il n'y a pas de choix.txt, juste le contenu de IFOS :
Voici un des contenus :

General
Unique ID                                : 17289420480752330910742530491805310440 (0xD01D23E425393479D9F8A2146AB9DE8)
Complete name                            : prisonnier1/2-prisonnier1-[Audio: fre].mkv
Format                                   : Matroska
Format version                           : Version 4
File size                                : 3.00 GiB
Duration                                 : 49 min 13 s
Overall bit rate                         : 8 714 kb/s
Encoded date                             : UTC 2020-01-21 17:13:54
Writing application                      : mkvmerge v31.0.0 ('Dolores In A Shoestand') 64-bit
Writing library                          : libebml v1.3.6 + libmatroska v1.4.9 / Lavf58.20.100

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L3.1
Format settings                          : CABAC / 4 Ref Frames
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 4 frames
Codec ID                                 : V_MPEG4/ISO/AVC
Duration                                 : 49 min 13 s
Bit rate                                 : 8 500 kb/s
Width                                    : 720 pixels
Height                                   : 576 pixels
Display aspect ratio                     : 4:3
Frame rate mode                          : Constant
Frame rate                               : 25.000 FPS
Standard                                 : PAL
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.820
Stream size                              : 2.93 GiB (98%)
Writing library                          : x264 core 155 r2917 0a84d98
Encoding settings                        : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=abr / mbtree=1 / bitrate=8500 / ratetol=1.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Default                                  : Yes
Forced                                   : No
Color range                              : Limited
Color primaries                          : BT.601 PAL
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.601

Audio
ID                                       : 2
Format                                   : AC-3
Format/Info                              : Audio Coding 3
Commercial name                          : Dolby Digital
Codec ID                                 : A_AC3
Duration                                 : 49 min 12 s
Bit rate mode                            : Constant
Bit rate                                 : 192 kb/s
Channel(s)                               : 2 channels
Channel layout                           : L R
Sampling rate                            : 48.0 kHz
Frame rate                               : 31.250 FPS (1536 SPF)
Bit depth                                : 16 bits
Compression mode                         : Lossy
Stream size                              : 67.6 MiB (2%)
Title                                    : Stereo
Language                                 : French
Service kind                             : Complete Main
Default                                  : Yes
Forced                                   : No

Text #1
ID                                       : 3
Format                                   : VobSub
Muxing mode                              : zlib
Codec ID                                 : S_VOBSUB
Codec ID/Info                            : Picture based subtitle format used on DVDs
Duration                                 : 46 min 33 s
Bit rate                                 : 3 561 b/s
Count of elements                        : 462
Stream size                              : 1.19 MiB (0%)
Language                                 : French
Default                                  : No
Forced                                   : No

Text #2
ID                                       : 4
Format                                   : VobSub
Muxing mode                              : zlib
Codec ID                                 : S_VOBSUB
Codec ID/Info                            : Picture based subtitle format used on DVDs
Duration                                 : 1 s 513 ms
Bit rate                                 : 9 707 b/s
Count of elements                        : 1
Stream size                              : 1.79 KiB (0%)
Language                                 : French
Default                                  : No
Forced                                   : No

Menu
00:00:00.000                             : :Chapter 1
00:00:09.280                             : :Chapter 2
00:02:22.720                             : :Chapter 3
00:09:18.720                             : :Chapter 4
00:21:48.480                             : :Chapter 5
00:35:03.680                             : :Chapter 6
00:48:04.160                             : :Chapter 7


Faudra que je fasse un autre test demain sur un dvd avec un film et non des épisodes. cool


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#214 21-01-2020 21:36:01

Anonyme
Invité

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

C'est que tu n'as pas encore compris le fonctionnement du script big_smile

Si il n'y a pas de fichiers choix.txt, c'est qu'il n'a pas eu besoin de trier les bons streams audios. Il est passer à une autre phase. Si tu as un fichier log comme je le vois plus haut, ça me parait nickel et normal.

Tu as un titre :

2-prisonnier1-[Audio: fre].mkv

d'une durée de 49 min 13 s

avec une bande audio AC3 French stéréo

2 sous-titres en français ( ça, c'est pas encore sûr, présent oui mais vide parfois.)

et les chapitres

toi comprendre moi !!!!!! big_smile

Ce fichier log "IFO" ne se crée que quand le fichier final est sortie. C'est pour ça que j'ai tout mis en bas du script.
le choix.txt, il contient que les streams audios valides (après analyse) qui servira --atracks 1,4,6 par exemple, au lieu de --atracks 1,NOSON,NOSON,4,NOSON,6 qui serait indiqué en sélection dans ton titre, donc inutile. wink

Ce soir, j'ai testé ce script chez un pôte avec une Arch et une Buster. Ça fonctionne. smile


tongue



├── [7,4G]  1-LE_CHACAL-[Audio: fre].mkv
├── [7,1M]  2-LE_CHACAL-[Audio: nosound].mkv
├── [ 14M]  3-LE_CHACAL-[Audio: fre].mkv
└── [ 13K]  IFOS
    ├── [4,6K]  1-LE_CHACAL-[Audio: fre].log
    ├── [1,9K]  2-LE_CHACAL-[Audio: nosound].log
    └── [2,8K]  3-LE_CHACAL-[Audio: fre].log

 7.5G used in 1 directory, 6 files
 



Faudra juste faire une recherche sur ce :

[mp2 @ 0x7f6b0c02db00] Header missing



pour les audios en mp2

D'ailleurs pour ces mp2, j'ai rajouté un "ou (LC)," car bizarrement il n'y a pas de kb\/s pour ceux-ci. C'est là que ça foirait chez toi.

COUNT_VALID_AUDIO=$(ffprobe "$TITLE/$i-$TITLE.mkv" 2>&1 | awk '/Audio:/ && /Stream/ && /kb\/s|\(LC),/ { print $2 }'| cut -c4-4 | wc -w)

Dernière modification par Anonyme (21-01-2020 22:12:21)

#215 22-01-2020 09:09:05

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.

Modifié le script et envoyé le bouzin.
Pas de fichier : choix.txt, le script a fonctionné parfaitement.
J'envoie un autre dvd qui avait donné ces fichiers précédemment...

La copie est beaucoup plus rapide maintenant ! woohoo.gif

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#216 22-01-2020 09:55:57

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.

Toujours pas de fichier choix.txt pour les pistolets !
La copie est parfaite.

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#217 22-01-2020 09:57:51

Anonyme
Invité

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

Fais fumer

tongue tongue tongue

Un CTRL + C pour les tests wink

Dernière modification par Anonyme (22-01-2020 09:58:38)

#218 22-01-2020 10:31:08

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.

Pareil pour le second dvd (dollars pour un massacre) pas de fichier choix.txt...

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#219 22-01-2020 10:31: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.

je teste un autre... Ctrl c, OK ce coup-ci. big_smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#220 22-01-2020 10:36: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.

Au démarrage de la copie, pas de fichier choix.txt...

Voici le script :

#!/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 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.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



smile


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#221 22-01-2020 10:36:41

Anonyme
Invité

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

Tu  fera gaffe surtout aux dvds protégés. Sur certains, ça ne passera pas wink

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

#222 22-01-2020 10:38:08

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 merde j'ai modifié la ligne commentée et pas la'active !!!
Je modifie et refais... big_smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#223 22-01-2020 10:41:30

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, j'ai 2 lignes actives avec la modif, peut-être qu'y faut pas ?

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#224 22-01-2020 10:43:23

Anonyme
Invité

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

smolski a écrit :

Non, j'ai 2 lignes actives avec la modif, peut-être qu'y faut pas ?



J'ai pas compris

#225 22-01-2020 10:49:24

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.

COUNT_VALID_AUDIO=$(ffprobe "$TITLE/$i-$TITLE.mkv" 2>&1 | awk '/Audio:/ && /Stream/ && /kb\/s|\(LC),/ { print $2 }'| cut -c4-4 | wc -w)


DETECT_VALID_AUDIO=$(ffprobe "$TITLE/$i-$TITLE.mkv" 2>&1 | awk '/Audio:/ && /Stream/ && /kb\/s|\(LC),/ { print $2 }'| cut -c4-4)


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

Pied de page des forums