Debian-facile

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

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

#51 09-06-2019 22:45:06

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

C'est pour que quand j'ai activé cette fonction dans pluma, je n'ai jamais remarqué de différence ?

Hors ligne

#52 09-06-2019 22:49:49

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 5.2.8
(G)UI : openbox
Inscription : 26-08-2010

Re : Script Encodage VOB en MKV [GPU NVIDIA]

golgot200 a écrit :

C'est pour que quand j'ai activé cette fonction dans pluma, je n'ai jamais remarqué de différence ?


je n'ai compris ce que tu veux dire.


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#53 09-06-2019 22:55:30

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

enicar a écrit :

golgot200 a écrit :

C'est pour que quand j'ai activé cette fonction dans pluma, je n'ai jamais remarqué de différence ?


je n'ai compris ce que tu veux dire.



l'indentation dans les préférences de pluma.

Hors ligne

#54 09-06-2019 23:15:56

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Je teste ton script wink

   
Stream #0:20[0x27]: Subtitle: dvd_subtitle
Stream #0:21[0x26]: Subtitle: dvd_subtitle
[NULL @ 0x55b687abb8c0] Unable to find a suitable output format for 'audio'
audio: Invalid argument



je cherche tongue

Hors ligne

#55 09-06-2019 23:54:37

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 5.2.8
(G)UI : openbox
Inscription : 26-08-2010

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Bon, j'ai corrigé mon script, j'ai modifié le code dans le post #37.
Il faut que tu le copies à nouveau.

La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#56 10-06-2019 00:11:17

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Tout fonctionne !!!!

les bandes audio et les tags correspondes
les sous-titres sont OK.


il y a un truc que je n'arrive pas à faire dans cette partie. C'est quand c'est vide pour la langue.

language: vide aid: ...





    FR=$(mplayer_identify "$i" | awk_lang fr fra)
    FR_LPCM=$(mplayer_identify "$i" | awk_lpcm fr fra)
    EN=$(mplayer_identify "$i" | awk_lang en en)
    EN_LPCM=$(mplayer_identify "$i" | awk_lpcm en en)
    DE=$(mplayer_identify "$i" | awk_lang de ger)
    DE_LPCM=$(mplayer_identify "$i" | awk_lpcm de ger)
    IT=$(mplayer_identify "$i" | awk_lang it ita)
    IT_LPCM=$(mplayer_identify "$i" | awk_lpcm it ita)
    ES=$(mplayer_identify "$i" | awk_lang es spa)
    ES_LPCM=$(mplayer_identify "$i" | awk_lpcm es spa)
    NL=$(mplayer_identify "$i" | awk_lang nl nld)
    NL_LPCM=$(mplayer_identify "$i" | awk_lpcm nl nld)
    HE=$(mplayer_identify "$i" | awk_lang he heb)
    HE_LPCM=$(mplayer_identify "$i" | awk_lpcm he heb)
    HU=$(mplayer_identify "$i" | awk_lang hu hun)
    HU_LPCM=$(mplayer_identify "$i" | awk_lpcm hu hun)
    PL=$(mplayer_identify "$i" | awk_lang pl pol)
    PL_LPCM=$(mplayer_identify "$i" | awk_lpcm pl pol)
    CS=$(mplayer_identify "$i" | awk_lang cs cze)
    CS_LPCM=$(mplayer_identify "$i" | awk_lpcm cs cze)
    JA=$(mplayer_identify "$i" | awk_lang ja jpn)
    JA_LPCM=$(mplayer_identify "$i" | awk_lpcm ja jpn)
    SV=$(mplayer_identify "$i" | awk_lang sv swe)
    SV_LPCM=$(mplayer_identify "$i" | awk_lpcm sv swe)
    UNKNOWN=$(mplayer_identify "$i" | awk_lang unknown und)
    UNKNOWN_LPCM=$(mplayer_identify "$i" | awk_lpcm unknown und)

EMPTY_LANG=$(mplayer_identify "$i" | awk '(/language:  aid:/) && /format:/ {printf "-metadata:s:a:"$3" language=und -metadata:s:a:"$3" title="$5$6" "}')
EMPTY_LANG_LPCM=$(mplayer_identify "$i" | awk '(/language:  aid:/) && /format: lpcm/ {printf "-metadata:s:a:0 language=und -metadata:s:a:0 title="$5$6" "}')
 



PS : nl aussi est en rouge

Dernière modification par golgot200 (10-06-2019 00:23:56)

Hors ligne

#57 10-06-2019 00:51:07

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 5.2.8
(G)UI : openbox
Inscription : 26-08-2010

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Je vois tu peux toujours laisser comme ça. Sinon il faudrait voir
ce que donne


EMPTY_LANG=$(mplayer_identify "$i" |awk_lang ' aid:' und)
EMPTY_LANG_LPCM=$(mplayer_identify |awk_lpcm ' aid:' und)
 


Il faut forcer un espace en plus avant le « aid: ». Pour cela je lui
donne « ' aid:' » comme chaîne. Et par conséquent dans la fonction
on a  « ilang=" aid:" » (sans les « " »).


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#58 10-06-2019 00:52:49

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 5.2.8
(G)UI : openbox
Inscription : 26-08-2010

Re : Script Encodage VOB en MKV [GPU NVIDIA]

golgot200 a écrit :

PS : nl aussi est en rouge


Oui mais ça, c'est juste la coloration syntaxique, on s'en fiche. Il se trouve que « nl » est
une commande qui permet de numéroter les lignes d'un fichier.


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#59 10-06-2019 00:57:39

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Pour ton post 57, je vais avoir du mal à tester. Je ne sais plus quel dvd c'est. Et ma collection est énorme. Je garderai mes 2 lignes commentée au dessous des tiennes.

Hors ligne

#60 10-06-2019 01:03:42

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Bon les yeux fatigues.
Bonne nuit et merci pour ton aide smile

Hors ligne

#61 10-06-2019 01:03:48

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 5.2.8
(G)UI : openbox
Inscription : 26-08-2010

Re : Script Encodage VOB en MKV [GPU NVIDIA]

J'y reviendrais peut-être sur ce script. Je n'ai pas terminé l'indentation.
Mais pour ce soir, je vais me coucher.

La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#62 10-06-2019 01:34:38

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 5.2.8
(G)UI : openbox
Inscription : 26-08-2010

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Une dernière petite chose avant d'aller me coucher. Je viens d'installer
geany. J'ai ouvert le shell script (GPU_LIGHT.bash). Je suis allé
dans le menu « Construire », j'ai choisi « Lint ». Et hop, geany a lancé shellcheck
Il y avait une fenêtre avec les messages d'avertissements et d'erreurs.
Cliquer sur l'un de ces avertissements permet d'aller directement à l'endroit
où se trouve l'avertissement. Voilà. C'est pour montrer qu'un éditeur spécialisé
pour le développement peut être très utile et pratique, et cela même sans avoir
des tonnes de choses à apprendre comme dans vim et emacs…

Par contre il ne semble pas faire l'indentation automatiquement, c'est vraiment
quelque chose que j'apprécie. J'ai même utilisé des outils pour d'autres langages que
le shell qui allait plus loin dans la mise en forme du code et afficher des zones
pour délimiter les expressions suivant où se trouvait le curseur.
J'ai cela pour les parenthèses dans emacs qui les affiche avec différentes
couleurs suivant leur imbrication. Ça marche aussi pour les crochets et
les accolades. C'est une extension qui s'appelle « rainbow delimiters ».
(C'est à dire que ce n'est pas dans base dans emacs).
Bon malgré cela, je pense que geany peut être utile pour coder.

Sinon, il y a bien vscode de microsoft qui fonctionne sous linux
et qui fonctionne même très bien. Lui, il fait vraiment beaucoup de choses.
Je ne sais pas comment il se débrouille avec les shell scripts… mais je ne peux
pas conseiller de l'utiliser (ce n'est pas libre, juste open source).

Il faudrait voir comment se débrouille gedit. Il paraît qu'il fait du bon travail également.
Mais je n'ai pas testé.

La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#63 10-06-2019 09:09:50

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

enicar a écrit :

Une dernière petite chose avant d'aller me coucher. Je viens d'installer
geany. J'ai ouvert le shell script (GPU_LIGHT.bash). Je suis allé
dans le menu « Construire », j'ai choisi « Lint ». Et hop, geany a lancé shellcheck ...



Bonjour,

Juste les "" sur map et tags ferait une compilation terminée avec succès sur ta dernière majoration mais ça ce n'est pas possible smile

Dernière modification par golgot200 (10-06-2019 09:10:17)

Hors ligne

#64 10-06-2019 13:21:26

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Bonjour,

@enicar

je vois que tu as mis une fonction mplayer_identify
je peux aussi mettre une fonction lsdvd_identify pour alléger les lignes de code non ?:)

Hors ligne

#65 10-06-2019 13:24:39

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Par contre sur deux de tes fonctions, j'ai vraiment du mal. Mais je préfère attendre avant de te demander une explication.

Hors ligne

#66 10-06-2019 14:47:59

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 5.2.8
(G)UI : openbox
Inscription : 26-08-2010

Re : Script Encodage VOB en MKV [GPU NVIDIA]

golgot200 a écrit :

Juste les "" sur map et tags ferait une compilation terminée avec succès sur ta dernière majoration mais ça ce n'est pas possible smile


Vu la définition de ces deux variables je me demande si on ne peut pas faire quelque
chose avec des tableaux de façon simple.

Il faudrait que tu me donnes un exemple de ces variables avec les différents éléments
qui les composent. Par exemple la valeur de :


TAGS_ID_STREAMS
 


Avec les valeurs séparées des éléments qui la compose :


FR
EN
DE

 


Mais j'ai une idée simple pour utiliser des tableaux pour
MAP_ID_STREAM et MAP_ID_STREAMS_LPCM. J'explique
sur un exemple simple. Soit le script :


#! /bin/bash

affiche () {
    echo "Taille du tableau : $#"
    echo 'Liste des éléments du tableau :'
    for s in "$@"; do
        echo "$s"
    done
}

mapfile -t -d$' ' essai < <(echo -n "coucou ça va")
affiche "${essai[@]}"
read -r -a essai < <(echo "oui, très bien")
affiche "${essai[@]}"
 



Ici la variable, je l'ai appelé essai. J'ai demandé à mapfile
de découper par rapport aux espaces (-d$' ') et de supprimer ces
espaces (-t). La syntaxe « < <(… ) » permet de donner en entrée
standard de mapfile (qui est une commande interne de bash), la sortie
de la commande. Le seul soucis de cette méthode est que ça va laisser
un caractère nouvelle ligne à la fin du dernier élément. C'est pour
cela que j'ai utilisé « echo -n ». Par contre avec « read -r -a », on
n'a pas ce porblème. Bref allons y avec read, donc !

Je te propose cette version, où j'ai utilisé cette technique :


#!/bin/bash

#### Golgot200 ###############################################################################
# 22-03-2019
# Archlinux
# MPlayer SVN-r38101
# ffmpeg version n4.1.1
# lsdvd 0.17
# ogmtools v1.5 (dvdxchap)
# mkvtoolnix-cli 32.0.0-1 (mkvmerge)
# mencoder-38125-5
##############################################################################################

declare -a MPLAYER_IDENTIFY
declare -a LSDVD_X

menage () {
    rm -f "$FOLDER"/*.idx
    rm -f "$FOLDER"/*.sub
    rm -f "$FOLDER/$i-$TITLE+CHAPTERS.mkv"
}

mplayer_identify () {
    local i="$1"
    if [[  "${#MPLAYER_IDENTIFY[@]}" -eq 0 ]]; then
        mapfile MPLAYER_IDENTIFY < <(mplayer -vo null -ao null -frames 0 \
                -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null)
    fi
    echo -n "${MPLAYER_IDENTIFY[@]}"
}

awk_lang () {
    local ilang="$1"
    local olang="$2"
    awk "/language: $ilang/ && /format:/ \
        {printf \"-metadata:s:a:\"\$3\" language=$olang -metadata:s:a:\"\$3\" title=\"\$5\$6\" \"}"

}

awk_lpcm () {
    local ilang="$1"
    local olang="$2"
    awk "/language: $ilang/ && /format: lpcm/ \
        {printf \"-metadata:s:a:0 language=$olang -metadata:s:a:0 title=\"\$5\$6\" \"}"

}

lsdvd_x () {
    local i="$1"
    if [[ "${#LSDVD_X[@]}" -eq 0  ]]; then
        mapfile LSDVD_X < <(lsdvd -x "$DEVICE" -t "$i" 2> /dev/null)
    fi
    echo -n "${LSDVD_X[@]}"
}

## CONDITION : UN SEUL DVD-VIDÉO
COUNT_DEVICE=$(blkid /dev/sr* | \
            awk '{print $1}'  | \
            sed -e 's/://g'   | \
            awk '{x=x+NF}END{print x}')

if [[ "$COUNT_DEVICE" -eq "1" ]] ; then
    echo "Proceed..."
else
    echo "Aucun DVD-Vidéo ou 2 DVD-Vidéos/DVD-ROM ... dans différents lecteurs ?"
    exit 0
fi


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

## LABEL DU DVD-VIDÉO & NOMBRE TOTAL DE TITRES SUR CELUI-CI
TITLE=$(lsdvd "$DEVICE" | head -1 | awk '{print $3}')
TITLE_COUNT=$(lsdvd "$DEVICE" | grep -c ^'Title: ')


DIR=$(xdg-user-dir DESKTOP)
FOLDER="$DIR/$TITLE"


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

## METADATAS DIVERS [À COMPLETER AU CAS OÙ IL MANQUERAIT QUELQUES LANGUES]
## https://fr.wikipedia.org/wiki/Liste_des_codes_ISO_639-1
    FR=$(mplayer_identify "$i" | awk_lang fr fra)
    FR_LPCM=$(mplayer_identify "$i" | awk_lpcm fr fra)
    EN=$(mplayer_identify "$i" | awk_lang en en)
    EN_LPCM=$(mplayer_identify "$i" | awk_lpcm en en)
    DE=$(mplayer_identify "$i" | awk_lang de ger)
    DE_LPCM=$(mplayer_identify "$i" | awk_lpcm de ger)
    IT=$(mplayer_identify "$i" | awk_lang it ita)
    IT_LPCM=$(mplayer_identify "$i" | awk_lpcm it ita)
ES=$(mplayer_identify "$i" | awk '/language: es/ && /format:/  {printf "-metadata:s:a:"$3" language=spa -metadata:s:a:"$3" title="$5$6" "}')
ES_LPCM=$(mplayer_identify "$i" | awk '/language: es/ && /format: lpcm/  {printf "-metadata:s:a:0 language=spa -metadata:s:a:0 title="$5$6" "}')
NL=$(mplayer_identify "$i" | awk '/language: nl/ && /format:/  {printf "-metadata:s:a:"$3" language=nld -metadata:s:a:"$3" title="$5$6" "}')
NL_LPCM=$(mplayer_identify "$i" | awk '/language: nl/ && /format: lpcm/  {printf "-metadata:s:a:0 language=nld -metadata:s:a:0 title="$5$6" "}')
HE=$(mplayer_identify "$i" | awk '/language: he/ && /format:/  {printf "-metadata:s:a:"$3" language=heb -metadata:s:a:"$3" title="$5$6" "}')
HE_LPCM=$(mplayer_identify "$i" | awk '/language: he/ && /format: lpcm/  {printf "-metadata:s:a:0 language=heb -metadata:s:a:0 title="$5$6" "}')
HU=$(mplayer_identify "$i" | awk '/language: hu/ && /format:/  {printf "-metadata:s:a:"$3" language=hun -metadata:s:a:"$3" title="$5$6" "}')
HU_LPCM=$(mplayer_identify "$i" | awk '/language: hu/ && /format: lpcm/  {printf "-metadata:s:a:0 language=hun -metadata:s:a:0 title="$5$6" "}')
PL=$(mplayer_identify "$i" | awk '/language: pl/ && /format:/  {printf "-metadata:s:a:"$3" language=pol -metadata:s:a:"$3" title="$5$6" "}')
PL_LPCM=$(mplayer_identify "$i" | awk '/language: pl/ && /format: lpcm/  {printf "-metadata:s:a:0 language=pol -metadata:s:a:0 title="$5$6" "}')
CS=$(mplayer_identify "$i" | awk '/language: cs/ && /format:/  {printf "-metadata:s:a:"$3" language=cze -metadata:s:a:"$3" title="$5$6" "}')
CS_LPCM=$(mplayer_identify "$i" | awk '/language: cs/ && /format: lpcm/  {printf "-metadata:s:a:0 language=cze -metadata:s:a:0 title="$5$6" "}')
JA=$(mplayer_identify "$i" | awk '/language: ja/ && /format:/  {printf "-metadata:s:a:"$3" language=jpn -metadata:s:a:"$3" title="$5$6" "}')
JA_LPCM=$(mplayer_identify "$i" | awk '/language: ja/ && /format: lpcm/  {printf "-metadata:s:a:0 language=jpn -metadata:s:a:0 title="$5$6" "}')
SV=$(mplayer_identify "$i" | awk '/language: sv/ && /format:/  {printf "-metadata:s:a:"$3" language=swe -metadata:s:a:"$3" title="$5$6" "}')
SV_LPCM=$(mplayer_identify "$i" | awk '/language: sv/ && /format: lpcm/  {printf "-metadata:s:a:0 language=swe -metadata:s:a:0 title="$5$6" "}')
UNKNOWN=$(mplayer_identify "$i" | awk '/language: unknown/ && /format:/  {printf "-metadata:s:a:"$3" language=und -metadata:s:a:"$3" title="$5$6" "}')
UNKNOWN_LPCM=$(mplayer_identify "$i" | awk '/language: unknown/ && /format: lpcm/  {printf "-metadata:s:a:0 language=und -metadata:s:a:0 title="$5$6" "}')
EMPTY_LANG=$(mplayer_identify "$i" | awk '(/language:  aid:/) && /format:/ {printf "-metadata:s:a:"$3" language=und -metadata:s:a:"$3" title="$5$6" "}')
EMPTY_LANG_LPCM=$(mplayer_identify "$i" | awk '(/language:  aid:/) && /format: lpcm/ {printf "-metadata:s:a:0 language=und -metadata:s:a:0 title="$5$6" "}')


TAGS_ID_STREAMS="${FR}${EN}${DE}${IT}${ES}${NL}${HE}${HU}${PL}${CS}${JA}${SV}${UNKNOWN}${EMPTY_LANG}"
TAGS_ID_STREAMS_LPCM="${FR_LPCM}${EN_LPCM}${DE_LPCM}${IT_LPCM}${ES_LPCM}${NL_LPCM}${HE_LPCM}${HU_LPCM}${PL_LPCM}${CS_LPCM}${JA_LPCM}${SV_LPCM}${UNKNOWN_LPCM}${EMPTY_LANG_LPCM}"


## TITRES D'UNE DURÉE DE PLUS DE .... SECONDES [ ICI, 1200 SECONDES = 20 MINUTES]
LIMIT_TIME=$(mplayer_identify "$i" | grep ID_LENGTH | sed 's/.*=\([0-9]*\)/\1/' | sed "s/\\..*//")
B=1200

if [[ "$LIMIT_TIME" -gt "$B" ]]; then
    mplayer -identify -dvd-device "$DEVICE" dvd://"$i" \
        -nocache -dumpstream -dumpfile "$FOLDER/$i-$TITLE.vob"


## DISNEY A-R-C-C-O-S
#mplayer dvdnav://"$i" -dvd-device "$DEVICE" -dumpstream -dumpfile "$i-$TITLE.vob"



    COUNT_LPCM=$(lsdvd_x "$i" |grep 'lpcm' | awk '{print$8}' | \
                     awk '{x=x+NF}END{print x}')
    COUNT_AC3_DTS_MPEG1=$(lsdvd_x "$i" | grep 'ac3,\|dts,\|mpeg1,' | \
                              awk '{print$8}' |awk '{x=x+NF}END{print x}')
#    MAP_ID_STREAMS=( $(lsdvd_x "$i" |grep "Audio:" | \
#                         sed -n -e 's/.*\(0x\)/\1/p' |sed -e 's/c/1c/g' | \
#                         awk '/0x/{gsub (/^/,"-map i:")}1') )
    read -r -a MAP_ID_STREAMS < <(lsdvd_x "$i" |grep "Audio:" | \
                                  sed -n -e 's/.*\(0x\)/\1/p' |sed -e 's/c/1c/g' | \
                                  awk '/0x/{gsub (/^/,"-map i:")}1')
#    MAP_ID_STREAMS_LPCM=$(lsdvd_x "$i" |grep 'lpcm' | \
#                              sed -n -e 's/.*\(0x\)/\1/p' | sed -e 's/c/1c/g' | \
#                              awk '/0x/{gsub (/^/,"-map i:")}1')
    read -r -a MAP_ID_STREAMS_LPCM < <(lsdvd_x "$i" |grep 'lpcm' | \
                             n -e 's/.*\(0x\)/\1/p' | sed -e 's/c/1c/g' | \
                             awk '/0x/{gsub (/^/,"-map i:")}1')

    SIDFR=$(lsdvd_x "$i" | grep "Subtitle:" | grep  "Language: fr" | \
                awk '{print$2}' | sed s'/.$//' | \
                awk 'BEGIN { RS="[^0-9]"; OFS=""; ORS=""; } {if(length($0)) {print ($0-1);}print RT}')
    COUNT_SID_FR=$(mplayer_identify "$i" | \
                       grep "subtitle ( sid ):" | grep "language: fr" | \
                       awk '{print$7}' | awk '{x=x+NF}END{print x}')

    RATIO=$(lsdvd_x i"$i" | head -3 | grep "Aspect ratio:" | \
                awk '{print$11}' | sed '$ s/.$//' | sed 's/\//:/')


#CROP=$(ffmpeg -i "$FOLDER/$i-$TITLE.vob" -ss 60 -t 15 -t 1 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tail -1)


    INFO_AC3_DTS_MPEG1=$(lsdvd_x "$i" |awk '/ac3,/  {printf ""$4","}'  | \
                             sed -e 's/,*$//g')
    INFO_LPCM=$(lsdvd_x "$i" |awk '/ac3,/  {printf ""$4","}' | \
                    sed -e 's/,*$//g')



## ENCODAGE
## GPU
## FILMS
## AC3 & DTS & MPEG1
## SOUS-TITRAGE(S) VF
if [[ "$COUNT_LPCM" -eq "0" ]] && \
    [[ "$COUNT_AC3_DTS_MPEG1" -ge "1" ]] && \
    [[ "$COUNT_SID_FR" -ge "1" ]]
then
    ffmpeg -hwaccel auto -c:v mpeg2_cuvid -i "$FOLDER/$i-$TITLE.vob" \
        -map 0:v -metadata title="$TITLE" \
        -c:v h264_nvenc -preset slow -profile:v high -level 4.2 \
        -loglevel repeat+verbose  "${MAP_ID_STREAMS[@]}" \
        -c:a copy ${TAGS_ID_STREAMS} -movflags +faststart -qmin 18 -qmax 23 \
        -filter:v hue=b=0.1:s=0.7,hqdn3d=1.5:1.5:4:4,unsharp=luma_msize_x=5:luma_msize_y=5:luma_amount=0.5,noise=c0s=2:c1s=2:c2s=2:c0f=a+t \
        -y "$FOLDER/$i-$TITLE.mkv"


    rm -f "$FOLDER/$i-$TITLE.vob"
    dvdxchap -t  "$i" "$DEVICE" > "$FOLDER/$i-$TITLE-CHAPTERS.txt"
    mkvmerge "$FOLDER/$i-$TITLE.mkv" --chapters "$FOLDER/$i-$TITLE-CHAPTERS.txt"  \
              -o "$FOLDER/$i-$TITLE+CHAPTERS.mkv"

    rm -f "$FOLDER/$i-$TITLE-CHAPTERS.txt"
    rm -f "$FOLDER/$i-$TITLE.mkv"

    for n in $SIDFR; do
        mencoder -dvd-device "$DEVICE" "dvd://$i" \
            -nosound -ovc copy -force-avi-aspect "$RATIO"  \
            -o /dev/null -ifo "/run/media/$USER/$TITLE/VIDEO_TS/VTS_01_0.IFO"  \
            -sid "$n" -vobsubout "$FOLDER/$i-vobsubs-fr" -vobsuboutindex "$n"
    done
    mkvmerge "$FOLDER/$i-$TITLE+CHAPTERS.mkv" -a fre --default-language fr \
            "$FOLDER"/*.idx \
            -o "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv"


    menage



## ENCODAGE
## GPU
## CONCERTS LIVE
## LPCM (ON GARDE QUE LA PISTE LPCM)
## PAS DE SOUS-TITRAGE

elif [[ "$COUNT_LPCM" -ge "1" ]] && \
     [[ "$COUNT_AC3_DTS_MPEG1" -ge "0" ]] && \
     [[ "$COUNT_SID_FR" -eq "0" ]]
then

    ffmpeg -hwaccel auto -c:v mpeg2_cuvid -i "$FOLDER/$i-$TITLE.vob" \
        -map 0:v -metadata title="$TITLE" -c:v h264_nvenc -preset hq \
        -profile:v high -level 4.2 -loglevel repeat+verbose  \
        "${MAP_ID_STREAMS_LPCM[@]}" -acodec pcm_s16be ${TAGS_ID_STREAMS_LPCM} \
        -movflags +faststart -qmin 18 -qmax 23 -y "$FOLDER/$i-$TITLE.mkv"

    rm -f "$FOLDER/$i-$TITLE.vob"
    dvdxchap -t  "$i" "$DEVICE" > "$FOLDER/$i-$TITLE-CHAPTERS.txt"
    mkvmerge "$FOLDER/$i-$TITLE.mkv" --chapters "$FOLDER/$i-$TITLE-CHAPTERS.txt" \
            -o "$FOLDER/$i-$TITLE-[Language:$INFO_LPCM].mkv"

    rm -f "$FOLDER/$i-$TITLE.mkv"
    rm -f "$FOLDER/$i-$TITLE-CHAPTERS.txt"



## ENCODAGE
## GPU
## CONCERTS LIVE
## LPCM (ON GARDE QUE LA PISTE LPCM)
## SOUS-TITRAGE(S) VF

elif [[ "$COUNT_LPCM" -ge "1" ]] && \
         [[ "$COUNT_AC3_DTS_MPEG1" -ge "0" ]] && \
         [[ "$COUNT_SID_FR" -ge "1" ]]
then
    ffmpeg -hwaccel cuvid -c:v mpeg2_cuvid -i "$FOLDER/$i-$TITLE.vob" \
           -map 0:v -metadata title="$TITLE" \
           -c:v h264_nvenc -preset hq -profile:v high -level 4.2 \
           -loglevel repeat+verbose  "${MAP_ID_STREAMS_LPCM[@]}" \
           -acodec pcm_s16be ${TAGS_ID_STREAMS_LPCM} -movflags +faststart \
           -qmin 18 -qmax 23 -y "$FOLDER/$i-$TITLE.mkv"

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

    dvdxchap -t  "$FOLDER/$i" "$DEVICE" > "$FOLDER/$i-$TITLE-CHAPTERS.txt"
    mkvmerge "$FOLDER/$i-$TITLE.mkv" --chapters "$FOLDER/$i-$TITLE-CHAPTERS.txt" \
            -o "$FOLDER/$i-$TITLE+CHAPTERS.mkv"

    rm -f "$FOLDER/$i-$TITLE-CHAPTERS.txt"
    rm -f "$FOLDER/$i-$TITLE.mkv"

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

    mkvmerge "$FOLDER/$i-$TITLE+CHAPTERS.mkv" \
            -a fre --default-language fr "$FOLDER"/*.idx \
            -o "$FOLDER/$i-$TITLE-[Language:$INFO_LPCM]+SUBVF.mkv"


    menage

## LA PETITE MAISON DANS LA PRAIRIE
elif [[ "$COUNT_LPCM" -eq "0" ]] &&
         [[ "$COUNT_AC3_DTS_MPEG1" -ge "1" ]] &&
         [[ "$COUNT_SID_FR" -eq "0" ]]
then
    ffmpeg -hwaccel auto -c:v mpeg2_cuvid \
           -i "$FOLDER/$i-$TITLE.vob" -map 0:v -metadata title="$TITLE" \
           -c:v h264_nvenc -preset hq -profile:v high -level 4.2\
           -loglevel repeat+verbose  "${MAP_ID_STREAMS[@]}" \
           -c:a copy ${TAGS_ID_STREAMS} -movflags +faststart \
           -qmin 18 -qmax 23 -y "$FOLDER/$i-$TITLE.mkv"

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

    dvdxchap -t  "$i" "$DEVICE" > "$FOLDER/$i-$TITLE-CHAPTERS.txt"
    mkvmerge "$FOLDER/$i-$TITLE.mkv" \
             --chapters "$FOLDER/$i-$TITLE-CHAPTERS.txt" -o \
             "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1].mkv"

    rm -f "$FOLDER/$i-$TITLE-CHAPTERS.txt"
    rm -f "$FOLDER/$i-$TITLE.mkv"

fi
fi
done

 


J'ai aussi créer une autre fonction lsdvd_x pour factoriser un peu
plus le code. Comme cela on se rend compte qu'il y a une autre chose
que l'on peut optimiser. Comme tu renouvelles cet appel plusieurs fois
on pourrait mettre le résultat de la commande dans un tableau
et ensuite reservir ces lignes aux différents filtres (grep, sed,
awk). On pourrait faire de même pour mplayer_identify. Dans ces deux
cas il faudrait utiliser mapfile… Je vais voir si je mets tout cela en place.

ADDENDUM :
J'ai intégré ces modifications dans le script. J'ai aussi
créé des tableaux pour les variables TAGS_ID_STREAMS et
TAGS_ID_STREAMS_LPCM. Shellcheck ne produit plus aucun avertissement,
mais ça ne marchera peut-être pas…

NOTE : Suppressions des tableaux pour les variables
TAGS_ID_STREAMS et TAGS_ID_STREAMS_LPCM car c'est comme ça que ça doit
être. Il ne faut pas toujours suivre les recommandations de
shellcheck.

Dernière modification par enicar (10-06-2019 15:47:00)


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#67 10-06-2019 15:18:33

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Résultat

Sur un dvd où il n'y a que des bandes AC3, on n'encode que la première bande audio.
A la ligne 141 , j'ai en retour :

./1: ligne 141: n : commande introuvable



Je pense que c'est normal vu qu'il n'a pas de bande lpcm.

Je te post ce que tu demande ....

Hors ligne

#68 10-06-2019 15:23:12

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 5.2.8
(G)UI : openbox
Inscription : 26-08-2010

Re : Script Encodage VOB en MKV [GPU NVIDIA]

golgot200 a écrit :

Sur un dvd où il n'y a que des bandes AC3, on n'encode que la première bande audio.
A la ligne 141 , j'ai en retour :


Sur quel version du script ?

ADDENDUM : Je te demande cela car dans mon script
ligne 141, il n'y a rien…

Dernière modification par enicar (10-06-2019 15:31:09)


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#69 10-06-2019 15:23:59

Debian Alain
Adhérent(e)
Lieu : zone 51
Distrib. : W$10 / stable / ubuntu / F29 / testing
Noyau : Linux 5.2.0-2 amd 64 SMP debian 5.2.9-2
(G)UI : Gnome wayland / Gdm3
Inscription : 11-03-2017

Re : Script Encodage VOB en MKV [GPU NVIDIA]

avé golgot200 !  big_smile

quand ton script sera prêt , par curiosité , je veux bien le tester sur un disque , ici  (chez moi)  .

1498812139.jpg OAKENFOLD -Resurrection
RYZEN7 1700X - PRIME X370 PRO - 16 Go DDR4 - RADEON PULSE RX 550 4GB DDR5 OC UEFI - CORSAIR RM750X - SSD crucial MX500 500GB

Hors ligne

#70 10-06-2019 15:31:23

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

FR=$(mplayer -vo null -ao null -frames 0 -identify dvd://01 -dvd-device /dev/sr0  2>/dev/null | awk '/language: fr/ && /format:/  {printf "-metadata:s:a:"$3" language=fra -metadata:s:a:"$3" title="$5$6" "}')



-metadata:s:a:1 language=fra -metadata:s:a:1 title=ac3(stereo)




EN=$(mplayer -vo null -ao null -frames 0 -identify dvd://01 -dvd-device /dev/sr0  2>/dev/null | awk '/language: en/ && /format:/  {printf "-metadata:s:a:"$3" language=en -metadata:s:a:"$3" title="$5$6" "}')



-metadata:s:a:0 language=en -metadata:s:a:0 title=ac3(stereo) -metadata:s:a:5 language=en -metadata:s:a:5 title=ac3(stereo) -metadata:s:a:6 language=en -metadata:s:a:6 title=ac3(unknown)






DE=$(mplayer -vo null -ao null -frames 0 -identify dvd://01 -dvd-device /dev/sr0  2>/dev/null | awk '/language: de/ && /format:/  {printf "-metadata:s:a:"$3" language=ger -metadata:s:a:"$3" title="$5$6" "}')



-metadata:s:a:2 language=ger -metadata:s:a:2 title=ac3(stereo)





IT=$(mplayer -vo null -ao null -frames 0 -identify dvd://01 -dvd-device /dev/sr0  2>/dev/null | awk '/language: it/ && /format:/  {printf "-metadata:s:a:"$3" language=ita -metadata:s:a:"$3" title="$5$6" "}')



-metadata:s:a:3 language=ita -metadata:s:a:3 title=ac3(stereo)





ES=$(mplayer -vo null -ao null -frames 0 -identify dvd://01 -dvd-device /dev/sr0  2>/dev/null | awk '/language: es/ && /format:/  {printf "-metadata:s:a:"$3" language=spa -metadata:s:a:"$3" title="$5$6" "}')



-metadata:s:a:4 language=spa -metadata:s:a:4 title=ac3(stereo)





Et le TAGS_ID_STREAMS

-metadata:s:a:1 language=fra -metadata:s:a:1 title=ac3(stereo) -metadata:s:a:0 language=en -metadata:s:a:0 title=ac3(stereo) -metadata:s:a:5 language=en -metadata:s:a:5 title=ac3(stereo) -metadata:s:a:6 language=en -metadata:s:a:6 title=ac3(unknown) -metadata:s:a:2 language=ger -metadata:s:a:2 title=ac3(stereo) -metadata:s:a:3 language=ita -metadata:s:a:3 title=ac3(stereo) -metadata:s:a:4 language=spa -metadata:s:a:4 title=ac3(stereo)

Dernière modification par golgot200 (10-06-2019 15:39:45)

Hors ligne

#71 10-06-2019 15:36:02

enicar
Membre
Lieu : Grenoble
Distrib. : debian/sid
Noyau : Linux 5.2.8
(G)UI : openbox
Inscription : 26-08-2010

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Bon alors je pense que les dernières modifications que j'ai faites ne servent à rien.
Il faut laisser ces deux variables comme elles étaient. Je vais changer le script du post #66.
Tel quel il ne fonctionnera pas.

Dernière modification par enicar (10-06-2019 15:57:50)


La machine, c'est dépassé ! On va tout remplacer par des humains big_smile

Hors ligne

#72 10-06-2019 15:36:41

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

enicar a écrit :

golgot200 a écrit :

Sur un dvd où il n'y a que des bandes AC3, on n'encode que la première bande audio.
A la ligne 141 , j'ai en retour :


Sur quel version du script ?

ADDENDUM : Je te demande cela car dans mon script
ligne 141, il n'y a rien…



Script du post 66

Hors ligne

#73 10-06-2019 15:38:02

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

enicar a écrit :

Bon alors je pense que les dernières modifications que j'ai faites ne servent à rien.
Il faut laisser ces deux variables comme elles étaient. Je vais change le script du post #66.
Tel quel il ne fonctionnera pas.




vi big_smile car là, je suis en train de couler !!!!! lol

Hors ligne

#74 10-06-2019 15:44:15

golgot200
Membre
Distrib. : Archlinux
Noyau : Linux 5.2.0-arch2-1-ARCH
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Debian Alain a écrit :

avé golgot200 !  big_smile

quand ton script sera prêt , par curiosité , je veux bien le tester sur un disque , ici  (chez moi)  .



Tu as quoi comme carte graphique ?

Hors ligne

#75 10-06-2019 15:48:18

Debian Alain
Adhérent(e)
Lieu : zone 51
Distrib. : W$10 / stable / ubuntu / F29 / testing
Noyau : Linux 5.2.0-2 amd 64 SMP debian 5.2.9-2
(G)UI : Gnome wayland / Gdm3
Inscription : 11-03-2017

Re : Script Encodage VOB en MKV [GPU NVIDIA]

pas  grand  chose , une petite AMD/ATI Sapphire Radeon RX 550 Pulse (4 Go) (polaris 12)

Dernière modification par Debian Alain (10-06-2019 15:51:58)


1498812139.jpg OAKENFOLD -Resurrection
RYZEN7 1700X - PRIME X370 PRO - 16 Go DDR4 - RADEON PULSE RX 550 4GB DDR5 OC UEFI - CORSAIR RM750X - SSD crucial MX500 500GB

Hors ligne

Pied de page des forums