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

#51 08-01-2017 12:41:08

Anonyme
Invité

Re : [Résolu]Un script DVD rip Seasons

Suppression du filtre w3fdif

   
#! /bin/bash

    ## dvd_seasons.sh
    ## Ce script extrait tous les titres et les encode en MP4  avec toutes les bandes audios françaises .
    ## Si il n'y a pas de bandes françaises sur la vidéo, il encodera celle-ci mais elle n'aura pas de bande son.
    ## Il taguera la vidéo et les bandes audios.
    ## http://forum.doom9.org/archive/index.php/t-163494.html
    ## https://www.cyberciti.biz/faq/bash-for-loop/
    ## http://superuser.com/questions/204564/h … an-x-bytes

    ## Programmes requis : lsdvd ffmpeg mplayer

    ## 2>&1 | tee "$OUTPUT"/outputfile.txt
    ## -crf 17 -vb 4M -minrate 4M -maxrate 4M -bufsize 7M
    ## -vf w3fdif,hqdn3d=1.5:1.5:6:6,unsharp=5:5:1.0:5:5:0.0,hue=b=0.1:s=0.7,noise=c0s=10:c1s=0:c2s=0:c0f=a+t

    DIR=$(xdg-user-dir DESKTOP)
    DEVICE=/dev/dvd

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

    TMPDIR=/tmp/DVD_JOB
    OUTPUT=$DIR/$TITLE

    for TOTAL in $(seq 1 $TITLE_NUMBER)
    do

         printf -v TOTAL_FILES "%02d" $TOTAL

        [ -d "$TMPDIR" ] || mkdir "$TMPDIR"

        cd "$TMPDIR"
        mplayer -dumpstream dvd://$TOTAL -dumpstream -dumpfile $TOTAL_FILES.dump

        [ -d "$OUTPUT" ] || mkdir "$OUTPUT"

        audio=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$TOTAL" -dvd-device "$DEVICE"  2>/dev/null | grep "language: fr" | grep "audio" | grep "ac3 (5.1)\|ac3 (stereo)" | awk -F " " '{print $NF}' | awk -F "." '{print $1}')

       
        echo $audio
       
        map=''
    n=0

    for elt in $audio; do
        printf -v temp -- '-map i:%d -metadata:s:a:%d language=fra -metadata:s:a:%d title="Français"' $elt $n $n
        map="$map $temp"
        let n+=1
    done

    echo $map

        ffmpeg -i "$TOTAL_FILES.dump" -map 0:v  -metadata title="$TITLE" $map  -threads 0 -profile:v high -level 4.1 -crf 17 -vb 4M -minrate 4M -maxrate 4M -bufsize 7M -pix_fmt yuv420p -sws_flags lanczos -vf hqdn3d=1.5:1.5:6:6,unsharp=5:5:1.0:5:5:0.0,hue=b=0.1:s=0.7,noise=c0s=10:c1s=0:c2s=0:c0f=a+t   -trellis 2 -x264opts bframes=6:cabac=1 -movflags faststart -c:a ac3 -y "$OUTPUT"/"$TOTAL_FILES-$TITLE.mp4"

        rm -r  "$TMPDIR"

    done
 

#52 08-01-2017 17:50:41

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu]Un script DVD rip Seasons

Anonyme a écrit :

Suppression du filtre w3fdif


Ça sert à quoi ?

EDIT: pour l'indentation. Et j'ai remis la commande awk de MicP, c'est beaucoup mieux,
je ne vois pas pourquoi tu tiens tant à cette cascade grep et de awk:


#! /bin/bash
## dvd_seasons.sh
## Ce script extrait tous les titres et les encode en MP4  avec toutes les bandes audios françaises .
## Si il n'y a pas de bandes françaises sur la vidéo, il encodera celle-ci mais elle n'aura pas de bande son.
## Il taguera la vidéo et les bandes audios.
## http://forum.doom9.org/archive/index.php/t-163494.html
## https://www.cyberciti.biz/faq/bash-for-loop/
## http://superuser.com/questions/204564/h … an-x-bytes

## Programmes requis : lsdvd ffmpeg mplayer

## 2>&1 | tee "$OUTPUT"/outputfile.txt
## -crf 17 -vb 4M -minrate 4M -maxrate 4M -bufsize 7M
## -vw3fdif,hqdn3d=1.5:1.5:6:6,unsharp=5:5:1.0:5:5:0.0,hue=b=0.1:s=0.7,noise=c0s=10:c1s=0:c2s=0:c0f=a+t

DIR=$(xdg-user-dir DESKTOP)
DEVICE=/dev/dvd
TITLE_NUMBER=$(lsdvd | grep ^'Title: ' | wc -l)
TITLE=$(lsdvd "$DEVICE" | head -1 | awk '{print $3}')
TMPDIR=/tmp/DVD_JOB
OUTPUT=$DIR/$TITLE

for TOTAL in $(seq 1 $TITLE_NUMBER)
do

    printf -v TOTAL_FILES "%02d" $TOTAL
    [ -d "$TMPDIR" ] || mkdir "$TMPDIR"
    cd "$TMPDIR"
    mplayer -dumpstream dvd://$TOTAL -dumpstream -dumpfile $TOTAL_FILES.dump
    [ -d "$OUTPUT" ] || mkdir "$OUTPUT"

    audio=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$TOTAL" -dvd-device "$DEVICE"  2>/dev/null |awk '/language: fr/ && /audio/ && (/ac3 \(5.1\)/ || /ac3 \(stereo\)/) {print substr($NF,1,length($NF)-1)}')

    echo $audio
    map=''
    n=0

    for elt in $audio; do
        printf -v temp -- '-map i:%d -metadata:s:a:%d language=fra -metadata:s:a:%d title="Français"' $elt $n $n
        map="$map $temp"
        let n+=1
    done

    echo $map

    ffmpeg -i "$TOTAL_FILES.dump" -map 0:v  -metadata title="$TITLE" $map  -threads 0 -profile:v high -level 4.1 -crf 17 -vb 4M -minrate 4M -maxrate 4M -bufsize 7M -pix_fmt yuv420p -sws_flags lanczos -vf hqdn3d=1.5:1.5:6:6,unsharp=5:5:1.0:5:5:0.0,hue=b=0.1:s=0.7,noise=c0s=10:c1s=0:c2s=0:c0f=a+t   -trellis 2 -x264opts bframes=6:cabac=1 -movflags faststart -c:a ac3 -y "$OUTPUT"/"$TOTAL_FILES-$TITLE.mp4"

    rm -r  "$TMPDIR"

done
 

Dernière modification par enicar (08-01-2017 19:15:06)

Hors ligne

#53 08-01-2017 18:24:02

Anonyme
Invité

Re : [Résolu]Un script DVD rip Seasons

enicar a écrit :

Anonyme a écrit :

Suppression du filtre w3fdif


Ça sert à quoi ?



C'est pour désentrelacer.


enicar a écrit :

EDIT: pour l'indentation. Et j'ai remis la commande awk de MicP, c'est beaucoup mieux,
je ne vois pas pourquoi tu tiens tant à cette cascade grep et de awk:



Simple, si je l'ai laissé c'est que ça faisait l'impasse de l'encodage sur la vidéo sans bande française.

Message rouge dans le terminal : map 0: not found. smile


EDIT: Et bizarrement, quand tu as fais le truc pour les metadatas, ça m'a remis l'encodage des vidéos sans français, donc sans aucun son wink

Dernière modification par Anonyme (08-01-2017 18:29:26)

#54 08-01-2017 18:31:00

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu]Un script DVD rip Seasons

Anonyme a écrit :

Simple, si je l'ai laissé c'est que ça faisait l'impasse de l'encodage sur la vidéo sans bande française.


Et bien il faut tester la valeur de « $audio » juste après en faisant :


[ "$audio" = 0 ] && audio=''
 


Comme ça, on vide tout et tu te retrouves sans bande son.

EDIT:

Anonyme a écrit :


EDIT: Et bizarrement, quand tu as fais le truc pour les metadatas, ça m'a remis l'encodage des vidéos sans français, donc sans aucun son wink


Je n'y suis pour rien, j'ai l'impression que tout cela n'est pas très clair pour toi, ceci dit je ne sais pas
pourquoi non plus…

EDIT2: En fait, si quand la variable audio est vide, la boucle for n'est pas parcouru, et comme
je fais « map='' » cela vide l'audio…

Dernière modification par enicar (08-01-2017 18:35:28)

Hors ligne

#55 08-01-2017 18:40:13

Anonyme
Invité

Re : [Résolu]Un script DVD rip Seasons

enicar a écrit :


Et bien il faut tester la valeur de « $audio » juste après en faisant :


[ "$audio" = 0 ] && audio=''
 


Comme ça, on vide tout et tu te retrouves sans bande son.



Place moi le dans le script, là je suis perdu smile

EDIT: sur ton dernier que tu as posté post 52, il y a problème je crois le done tout en bas est blanc smile

Dernière modification par Anonyme (08-01-2017 18:51:16)

#56 08-01-2017 18:52:12

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu]Un script DVD rip Seasons

Qu'est-ce qu'on ne ferait pas pour des « amis » smile
Voilà, si j'ai bien compris le problème, ça devrait marcher.


#! /bin/bash
## dvd_seasons.sh
## Ce script extrait tous les titres et les encode en MP4  avec toutes les bandes audios françaises .
## Si il n'y a pas de bandes françaises sur la vidéo, il encodera celle-ci mais elle n'aura pas de bande son.
## Il taguera la vidéo et les bandes audios.
## http://forum.doom9.org/archive/index.php/t-163494.html
## https://www.cyberciti.biz/faq/bash-for-loop/
## http://superuser.com/questions/204564/h … an-x-bytes

## Programmes requis : lsdvd ffmpeg mplayer

## 2>&1 | tee "$OUTPUT"/outputfile.txt
## -crf 17 -vb 4M -minrate 4M -maxrate 4M -bufsize 7M
## -vw3fdif,hqdn3d=1.5:1.5:6:6,unsharp=5:5:1.0:5:5:0.0,hue=b=0.1:s=0.7,noise=c0s=10:c1s=0:c2s=0:c0f=a+t

DIR=$(xdg-user-dir DESKTOP)
DEVICE=/dev/dvd
TITLE_NUMBER=$(lsdvd | grep ^'Title: ' | wc -l)
TITLE=$(lsdvd "$DEVICE" | head -1 | awk '{print $3}')
TMPDIR=/tmp/DVD_JOB
OUTPUT=$DIR/$TITLE

for TOTAL in $(seq 1 $TITLE_NUMBER)
do

    printf -v TOTAL_FILES "%02d" $TOTAL
    [ -d "$TMPDIR" ] || mkdir "$TMPDIR"
    cd "$TMPDIR"
    mplayer -dumpstream dvd://$TOTAL -dumpstream -dumpfile $TOTAL_FILES.dump
    [ -d "$OUTPUT" ] || mkdir "$OUTPUT"

    audio=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$TOTAL" -dvd-device "$DEVICE"  2>/dev/null |awk '/language: fr/ && /audio/ && (/ac3 \(5.1\)/ || /ac3 \(stereo\)/) {print substr($NF,1,length($NF)-1)}')
   
    echo $audio
    [ "$audio" = 0 ] && audio=''
    map=''
    n=0

    for elt in $audio; do
        printf -v temp -- '-map i:%d -metadata:s:a:%d language=fra -metadata:s:a:%d title="Français"' $elt $n $n
        map="$map $temp"
        let n+=1
    done

    echo $map

    ffmpeg -i "$TOTAL_FILES.dump" -map 0:v  -metadata title="$TITLE" $map  -threads 0 -profile:v high -level 4.1 -crf 17 -vb 4M -minrate 4M -maxrate 4M -bufsize 7M -pix_fmt yuv420p -sws_flags lanczos -vf hqdn3d=1.5:1.5:6:6,unsharp=5:5:1.0:5:5:0.0,hue=b=0.1:s=0.7,noise=c0s=10:c1s=0:c2s=0:c0f=a+t   -trellis 2 -x264opts bframes=6:cabac=1 -movflags faststart -c:a ac3 -y "$OUTPUT"/"$TOTAL_FILES-$TITLE.mp4"

    rm -r  "$TMPDIR"

done
 


Remarque  que « [ "$audio" = 0 ] » est un test d'égalité de chaîne et non d'égalité numérique comme
on pourrait le croire. Si ça ne marche pas, il faudrait regarder ce que vaut $audio dans ce cas
en mettant un « echo ":${audio}:" » pour délimiter exactement la chaîne. Ça permettra de voir
s'il y a des espaces dedans.

Dernière modification par enicar (08-01-2017 19:10:30)

Hors ligne

#57 08-01-2017 18:53:54

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu]Un script DVD rip Seasons

Anonyme a écrit :

EDIT: sur ton dernier que tu as posté post 52, il y a problème je crois le done tout en bas est blanc smile

Tu pourrais être plus explicite, je ne comprends pas ce que tu veux dire…

Hors ligne

#58 08-01-2017 18:58:32

Anonyme
Invité

Re : [Résolu]Un script DVD rip Seasons

enicar a écrit :

Anonyme a écrit :

EDIT: sur ton dernier que tu as posté post 52, il y a problème je crois le done tout en bas est blanc smile

Tu pourrais être plus explicite, je ne comprends pas ce que tu veux dire…



C'est bon maintenant. Un problème de copie collé je pense.

le done en bas du script est en rouge normalement dans mon éditeur mais tout l'heure, il était  blanc et le lancement su script plantait.

#59 08-01-2017 19:03:40

Anonyme
Invité

Re : [Résolu]Un script DVD rip Seasons

Et paf rebelote, c'est quoi ce truc big_smile

1483898579.jpg

Dernière modification par Anonyme (02-04-2017 07:40:56)

#60 08-01-2017 19:11:50

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu]Un script DVD rip Seasons

Voilà j'avais oublié une parenthèse fermante à la fin de la ligne « audio=$(… »
Tu peux copier le script du post #56, il est bon wink

EDIT: J'ai corrigé celui du post #52 aussi…

Dernière modification par enicar (08-01-2017 19:15:43)

Hors ligne

#61 08-01-2017 19:20:36

Anonyme
Invité

Re : [Résolu]Un script DVD rip Seasons

Merci smile

Dis moi, je sais pas si je vais arrivé à t'expliquer mais je tente big_smile

je sais pas si c'est parce que j'ai activé l'identation ou au autre ou jamais fait gaffe, ce m'étonnerait. le screen  de mon post 59, le done est en gris d'accord. J'enregistre le script done grisé. Tu me suis toujours ? Quand réouvre le script dans l'éditeur, done est toujours grisé, le script fonctionne pas et ben : barre espace pour echapper done et il devient rouge et tout roule. Vraiment, jamais fait gaffe au truc smile

EDIT Post croisé

EDIT 2 je lance le teste  smile

Dernière modification par Anonyme (08-01-2017 19:23:01)

#62 08-01-2017 19:24:29

Anonyme
Invité

Re : [Résolu]Un script DVD rip Seasons

Je viens de virer la parenthèse pour voir. C'était ça smile

#63 08-01-2017 19:30:43

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu]Un script DVD rip Seasons

Anonyme a écrit :

Je viens de virer la parenthèse pour voir. C'était ça smile


Ben oui, bash se fiche pas mal de l'indentation. L'indentation c'est pour avoir
un script plus facile à décoder pour les humains wink

Hors ligne

#64 08-01-2017 19:35:52

Anonyme
Invité

Re : [Résolu]Un script DVD rip Seasons

Ok smile

Bon, il encode toujours les vidéos qui ont qu'une bande anglaises donc qui n'auront plus de son après encodage smile
Mais ça c'est vraiment pas important. Un ctrl + c fera bien l'affaire.

Dernière modification par Anonyme (08-01-2017 19:37:56)

#65 08-01-2017 19:38:54

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu]Un script DVD rip Seasons

Anonyme a écrit :

Bon, il encode toujours les vidéos qui ont qu'une bande anglaises donc qui n'auront plus de son après encodage smile


Il faudrait quand même essayer de récupérer la bande son en anglais si possible, quitte
à prendre celle qui est « unknown »… Je ne sais pas si c'est possible de lister toutes
les bandes son disponible d'un dvd…

Hors ligne

#66 08-01-2017 19:45:44

Anonyme
Invité

Re : [Résolu]Un script DVD rip Seasons

C'est pour ça que j'ai essayer un truc à mon post 28, mais sans succès.
Pour le unknow, c'est vrai que c'est problématique d'autant plus que ça pourrait très bien tomber sur le fr sur certains DVD mal foutus.

#67 08-01-2017 19:49:45

Anonyme
Invité

Re : [Résolu]Un script DVD rip Seasons

enicar a écrit :

Je ne sais pas si c'est possible de lister toutes
les bandes son disponible d'un dvd…



Si on peut, il faut que je retrouve la commande smile

#68 08-01-2017 19:49:48

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu]Un script DVD rip Seasons

Regarde du côté de « lsdvd -a »…

Hors ligne

#69 08-01-2017 20:08:27

Anonyme
Invité

Re : [Résolu]Un script DVD rip Seasons

enicar a écrit :

Regarde du côté de « lsdvd -a »…



Oui, celle-ci liste tous les streams audio sur tous les titres.

Est-ce que le Stream  id: 0x81 par exemple sont bien respecté et ne changent pas sur  un DVD sur dix ?

Dernière modification par Anonyme (08-01-2017 20:11:00)

#70 08-01-2017 20:21:37

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [Résolu]Un script DVD rip Seasons

Anonyme a écrit :

Est-ce que le Stream  id: 0x81 par exemple sont bien respecté et ne changent pas sur  un DVD sur dix ?



Je ne comprends pas…

Hors ligne

#71 08-01-2017 20:39:37

Anonyme
Invité

Re : [Résolu]Un script DVD rip Seasons

0x81 Français
0x82 Italien
0x80 Anglais
etc

On pourrait peut-être éviter le unknow

Dernière modification par Anonyme (08-01-2017 20:40:12)

Pied de page des forums