Debian-facile

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

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

#1 27-05-2019 17:06:09

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

Script Encodage VOB en MKV [GPU NVIDIA]

EDIT:

Ce que fait le script :

Détection d'un DVD-Vidéo dans le ou les lecteurs. Si il y a deux lecteurs avec un DVD-vidéo dans chaque, il le signalera.
Il fera un Dump complet du titre en un fichier vob.

Il y a dans ce script une fonction qui permettra manuellement de changer la durée des titres qui sera pris en considération pour le Dump. Pratique pour les DVD saisons avec plusieurs épisodes.

Il prendra les infos des streams audio par leur AID. ffmpeg et mplayer nommant différement les AID, il a fallu trouver une combine, ça fonctionne maintenant. Ça permet de garder l'ordre exact des streams car ils seront taggués aussi. (pour que les tags correspondent au bon stream)

Il inclura les chapitres.

Il inclura aussi tous les vobsubs français

Il sortira aussi le mkv avec que les audios en français et les vosubs en français.

Par un système d'info, le fichier se nommera avec son numéro + titre + language(s) + soustitre(s)


Il y a aussi une autre partie qui détectera un titre avec une bande audio lpcm et des sous-titres, et une autre sans.
Généralement c'est un dvd de concert, il ne gardera que celle-ci.


Et la dernière partie détectera un titre qui sera différent par son contenu par rapport au contenu des options précédentes

Ce script en faite y va par élimination. Ce sont les points principaux.

Merci à enicar pour son aide

wink






Bonjour,

je met cette commande de côté :


ffmpeg -hwaccel cuvid -c:v mpeg2_cuvid -i "$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 $i-$TITLE.mkv
 




Avec une carte graphique MSI Geforce GTX 1050 Ti.
Un film ripper en VOB  d'une durée de 1H37mn.
Un fichier final de 1.6 Go.
Temps d'encodage environ 3 minutes. [Hors rippage 2 minutes environ].
mpeg2_cuvid pour le décodage du VOB.
h264_nvenc  pour l'encodage.
Environ 1000 fps.

C'est pour plus tard dans un script.



Proceed...
MPlayer SVN-r38139 (C) 2000-2019 MPlayer Team
225 audio & 465 video codecs

Playing dvd://1.
ID_DVD_TITLES=1
ID_DVD_TITLE_1_CHAPTERS=28
ID_DVD_TITLE_1_ANGLES=1
ID_DVD_TITLE_1_LENGTH=5856.000
ID_DVD_DISC_ID=4E901F000025D8FED04A498F88D3701F
ID_DVD_VOLUME_ID=DVD_VIDEO
There are 1 titles on this DVD.

ID_DVD_CURRENT_TITLE=1
There are 1 angles in this DVD title.

libdvdread: Attempting to retrieve all CSS keys
libdvdread: This can take a _long_ time, please be patient

libdvdread: Get key for /VIDEO_TS/VIDEO_TS.VOB at 0x00000160
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_0.VOB at 0x00013b80
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_1.VOB at 0x00015e20
libdvdread: Elapsed time 0
libdvdread: Found 1 VTS's
libdvdread: Elapsed time 0
audio stream: 0 format: ac3 (stereo) language: en aid: 128.

ID_AUDIO_ID=128
ID_AID_128_LANG=en
audio stream: 1 format: ac3 (stereo) language: fr aid: 129.

ID_AUDIO_ID=129
ID_AID_129_LANG=fr
number of audio channels on disk: 2.
subtitle ( sid ): 0 language: en

ID_SUBTITLE_ID=0
ID_SID_0_LANG=en
subtitle ( sid ): 1 language: fr

ID_SUBTITLE_ID=1
ID_SID_1_LANG=fr
subtitle ( sid ): 2 language: nl

ID_SUBTITLE_ID=2
ID_SID_2_LANG=nl
subtitle ( sid ): 3 language: ar

ID_SUBTITLE_ID=3
ID_SID_3_LANG=ar
number of subtitles on disk: 4

CHAPTERS: 00:00:00.000,00:03:18.480,00:05:48.840,00:12:30.280,00:15:28.160,00:18:06.400,00:19:09.400,00:22:01.680,00:24:07.800,00:27:52.120,00:29:53.960,00:31:31.840,00:36:19.760,00:42:00.560,00:43:23.640,00:44:25.400,00:51:40.120,00:54:32.520,00:57:58.280,01:05:25.480,01:07:31.200,01:09:51.720,01:13:57.920,01:15:23.080,01:17:40.160,01:27:29.440,01:30:05.040,01:33:01.320,
dump: 3988115456 bytes written (~99.6%)
dump: 4005652480 bytes written to '1-DVD_VIDEO.vob'.
Core dumped ;)

Exiting... (End of file)
ID_EXIT=EOF
ffmpeg version n4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 8.2.1 (GCC) 20181127
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
[mpeg @ 0x55c84c7dd0c0] max_analyze_duration 5000000 reached at 5000000 microseconds st:0
Input #0, mpeg, from '1-DVD_VIDEO.vob':
  Duration: 01:37:35.94, start: 0.049756, bitrate: 5472 kb/s
    Stream #0:0[0x1e0]: Video: mpeg2video (Main), 1 reference frame, yuv420p(tv, top first, left), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x81]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:2[0x80]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:3[0x23]: Subtitle: dvd_subtitle
[mpeg2_cuvid @ 0x55c84c835680] Initializing cuvid hwaccel
[mpeg2_cuvid @ 0x55c84c835680] CUVID capabilities for mpeg2_cuvid:
[mpeg2_cuvid @ 0x55c84c835680] 8 bit: supported: 1, min_width: 48, max_width: 4080, min_height: 16, max_height: 4080
[mpeg2_cuvid @ 0x55c84c835680] 10 bit: supported: 0, min_width: 0, max_width: 0, min_height: 0, max_height: 0
[mpeg2_cuvid @ 0x55c84c835680] 12 bit: supported: 0, min_width: 0, max_width: 0, min_height: 0, max_height: 0
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg2video (mpeg2_cuvid) -> h264 (h264_nvenc))
  Stream #0:2 -> #0:1 (copy)
  Stream #0:1 -> #0:2 (copy)
Press [q] to stop, [?] for help
[mpeg2_cuvid @ 0x55c84c835680] Initializing cuvid hwaccel
[mpeg2_cuvid @ 0x55c84c835680] Formats: Original: cuda | HW: cuda | SW: nv12
[graph 0 input from stream 0:0 @ 0x55c84ce42c80] w:720 h:576 pixfmt:cuda tb:1/90000 fr:25/1 sar:64/45 sws_param:flags=2
[h264_nvenc @ 0x55c84c7f50c0] Loaded Nvenc version 9.0
[h264_nvenc @ 0x55c84c7f50c0] Nvenc initialized successfully
Output #0, matroska, to '1-DVD_VIDEO.mkv':
  Metadata:
    title           : DVD_VIDEO
    encoder         : Lavf58.20.100
    Stream #0:0: Video: h264 (h264_nvenc) (High), 1 reference frame (H264 / 0x34363248), cuda(left), 720x576 [SAR 64:45 DAR 16:9], q=18-23, 2000 kb/s, 25 fps, 1k tbn, 25 tbc
    Metadata:
      encoder         : Lavc58.35.100 h264_nvenc
    Side data:
      cpb: bitrate max/min/avg: 0/0/2000000 buffer size: 4000000 vbv_delay: -1
    Stream #0:1(en): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 192 kb/s
    Metadata:
      title           : ac3(stereo)
    Stream #0:2(fra): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 192 kb/s
    Metadata:
      title           : ac3(stereo)
[mpeg @ 0x55c84c7dd0c0] New subtitle stream 0:4 at pos:25485326 and DTS:45.3298ss speed=50.1x    
[mpeg @ 0x55c84c7dd0c0] New subtitle stream 0:5 at pos:65744910 and DTS:108.13ss/s speed=53.2x    
[mpeg @ 0x55c84c7dd0c0] New subtitle stream 0:6 at pos:65753102 and DTS:108.13s
No more output streams to write to, finishing.me=01:37:16.44 bitrate=2334.3kbits/s speed=38.2x    
frame=146400 fps=957 q=17.0 Lsize= 1669915kB time=01:37:36.12 bitrate=2336.0kbits/s speed=38.3x    
video:1391860kB audio:274498kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.213457%
Input file #0 (1-DVD_VIDEO.vob):
  Input stream #0:0 (video): 146400 packets read (3657369025 bytes); 146400 frames decoded;
  Input stream #0:1 (audio): 182999 packets read (140543232 bytes);
  Input stream #0:2 (audio): 182999 packets read (140543232 bytes);
  Input stream #0:3 (subtitle): 0 packets read (0 bytes);
  Total: 512398 packets (3938455489 bytes) demuxed
Output file #0 (1-DVD_VIDEO.mkv):
  Output stream #0:0 (video): 146400 frames encoded; 146400 packets muxed (1425264598 bytes);
  Output stream #0:1 (audio): 182999 packets muxed (140543232 bytes);
  Output stream #0:2 (audio): 182999 packets muxed (140543232 bytes);
  Total: 512398 packets (1706351062 bytes) muxed
[AVIOContext @ 0x55c84c80fd00] Statistics: 2354 seeks, 8256 writeouts
[h264_nvenc @ 0x55c84c7f50c0] Nvenc unloaded
[AVIOContext @ 0x55c84c7e5fc0] Statistics: 4006361232 bytes read, 2 seeks
mkvmerge v34.0.0 ('Sight and Seen') 64-bit
« 1-DVD_VIDEO.mkv » : Utilisation du démultiplexeur pour le format « Matroska ».
« 1-DVD_VIDEO.mkv » piste 0 : Utilisation du module de sortie pour le format « AVC/H.264 ».
« 1-DVD_VIDEO.mkv » piste 1 : Utilisation du module de sortie pour le format « AC-3 ».
« 1-DVD_VIDEO.mkv » piste 2 : Utilisation du module de sortie pour le format « AC-3 ».
Le fichier « 1-DVD_VIDEO-CHAPTERS.mkv » est ouvert en écriture.
Progression : 100%
Les entrées CUE (l'index) sont en cours d'écriture…
Le multiplexage a pris 20 secondes.
Travail réalisé en 0h:5m:56s
mkvmerge v34.0.0 ('Sight and Seen') 64-bit
« 1-DVD_VIDEO-CHAPTERS.mkv » : Utilisation du démultiplexeur pour le format « Matroska ».
« 1-DVD_VIDEO-CHAPTERS.mkv » piste 0 : Utilisation du module de sortie pour le format « AVC/H.264 ».
« 1-DVD_VIDEO-CHAPTERS.mkv » piste 2 : Utilisation du module de sortie pour le format « AC-3 ».
Le fichier « 1-DVD_VIDEO-CHAPTERS-FRE.mkv » est ouvert en écriture.
Progression : 100%
Les entrées CUE (l'index) sont en cours d'écriture…
Le multiplexage a pris 22 secondes.
Travail réalisé en 0h:6m:37s

 




Script 405 :



#!/bin/bash

PATH=$PATH:/sbin:/usr/sbin

#### 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
##############################################################################################
# Modifications par enicar 09-26/06/2019
##############################################################################################

declare -a MPLAYER_IDENTIFY
declare -a LSDVD_X

mplayer_identify () {
    if [[  "${#MPLAYER_IDENTIFY[@]}" -eq 0 ]]; then
        mapfile MPLAYER_IDENTIFY < \
                <(mplayer -noconfig all -nocache -vo null -ao null -frames 0 \
                          -identify -dvd-device "$DEVICE" dvd://"$1" 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 () {
    if [[ "${#LSDVD_X[@]}" -eq 0  ]]; then
        mapfile LSDVD_X < <(lsdvd -x "$DEVICE" -t "$1" 2> /dev/null)
    fi
    echo -n "${LSDVD_X[@]}"
}

merge_chapters () {
    local output="$2"
    dvdxchap -t  "$1" "$DEVICE" > "$FOLDER/$1-$TITLE-CHAPTERS.txt"
    mkvmerge "$FOLDER/$1-$TITLE.mkv" --chapters "$FOLDER/$1-$TITLE-CHAPTERS.txt" \
             -o "$output"

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

encode_sidfr_and_merge () {
    local output="$2"
    for n in $SIDFR; do
        mencoder -dvd-device "$DEVICE" "dvd://$1" \
                 -nosound -ovc copy -force-avi-aspect "$RATIO" \
                 -o /dev/null -ifo "$MOUNT_POINT/VIDEO_TS/VTS_01_0.IFO" \
                 -sid "$n" -vobsubout "$FOLDER/$i-vobsubs-fr" -vobsuboutindex "$n"
    done

    mkvmerge "$FOLDER/$1-$TITLE+CHAPTERS.mkv" -a fre --default-language fr \
             "$FOLDER"/*.idx -o "$output"
}

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


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

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
    MPLAYER_IDENTIFY=()
    LSDVD_X=()
    ## TITRES D'UNE DURÉE DE PLUS DE .... SECONDES [ ICI, 1200 SECONDES = 20 MINUTES]
    LENGTH=$(mplayer_identify "$i" |sed -E -n 's/^.*ID_LENGTH=([0-9]+).*$/\1/p')
    LIMIT=30
    [[ "$LENGTH" -le "$LIMIT" ]] && continue

## 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_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_lang ' aid:' und)
    EMPTY_LANG_LPCM=$(mplayer_identify "$i" |awk_lpcm ' aid:' und)

    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}"

    COUNT_LPCM=$(lsdvd_x "$i" |grep -c 'lpcm')
    COUNT_AC3_DTS_MPEG1=$(lsdvd_x "$i" | grep -c -E 'ac3,|dts,|mpeg1,')

    MAP_ID_STREAMS=$(lsdvd_x "$i" |sed -E -n '/Audio:/s/.*(0x)/\1/p' | \
                         awk '{ gsub(/c/, "1c") }
                              /0x/ {gsub (/^/,"-map i:")}
                              { print $0 }'
)

    MAP_ID_STREAMS_LPCM=$(lsdvd_x "$i" | sed -n -E '/lpcm/s/.*(0x)/\1/p' | \
                              awk '{ gsub(/c/, "1c") }
                                   /0x/ { gsub (/^/,"-map i:")}
                                   { print $0 }'
)


    SIDFR=$(lsdvd_x "$i" |awk '/Subtitle:/ && /Language: fr/ { sub(/,$/ ,"", $2);
                                     if ($2 ~ /^[0-9]+$/) print (--$2) }'
)

    COUNT_SID_FR=$(echo "$SIDFR" |wc -w)

    RATIO=$(lsdvd_x "$i" | \
                awk 'NR <= 3 && /Aspect ratio:/ {sub(/\//, ":", $11); x = x " " $11}
                          END { sub(/.$/, "", x); print x}'
)

    INFO_AC3_DTS_MPEG1=$(lsdvd_x "$i" | \
                awk '/ac3,|dts,|mpeg1,/  { x = x $4 ","}
                    END { sub(/,*$/, "", x); print x }'
)

    INFO_LPCM=$(lsdvd_x "$i" | awk '/lpcm/ { print $4 }')

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

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

    mplayer -noconfig all -nocache -dvd-device "$DEVICE" dvd://"$i" \
            -dumpstream -dumpfile "$FOLDER/$i-$TITLE.vob"

    ## 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 \
            -y "$FOLDER/$i-$TITLE.mkv"

        rm -f "$FOLDER/$i-$TITLE.vob"
        merge_chapters "$i" "$FOLDER/$i-$TITLE+CHAPTERS.mkv"
        encode_sidfr_and_merge "$i" "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv"
        menage "$i"

    ## 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"
        merge_chapters "$i" "$FOLDER/$i-$TITLE-[Language:$INFO_LPCM].mkv"

    ## 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"
        merge_chapters "$i" "$FOLDER/$i-$TITLE+CHAPTERS.mkv"
        encode_sidfr_and_merge "$i" "$FOLDER/$i-$TITLE-[Language:$INFO_LPCM]+SUBVF.mkv"
        menage "$i"

    ## 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"
        merge_chapters "$i" "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1].mkv"
    fi
done
 

Dernière modification par golgot200 (26-06-2019 14:27:58)

Hors ligne

#2 27-05-2019 19:26:22

Herve5
Membre
Lieu : Cannes, France
Distrib. : Debian 9
Noyau : Linux 4.9.0-8-amd64
(G)UI : Mate 1.16
Inscription : 02-03-2019

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Wow!
Il y a les sous-titres? (je sais, question de newbie...)

--
Hervé S.
deux machines Tuxedo de 2017 (préconfigurées Linux), l'une sous Debian 9, l'autre Ubuntu 16LTS

Hors ligne

#3 27-05-2019 21:46:43

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]

Herve5 a écrit :

Wow!
Il y a les sous-titres? (je sais, question de newbie...)



Bonsoir,
Oui, si une bande son et non française.


EDIT: Tous les sous-titres français seront intégrés et seulement ceux-ci.

Dernière modification par golgot200 (30-05-2019 21:31:30)

Hors ligne

#4 28-05-2019 07:34:33

smolski
admin quasi...modo
Lieu : AIN
Distrib. : 9 (stretch) 64 bits + backports
Noyau : 4.9.65-3+deb9u2
(G)UI : gnome
Inscription : 21-10-2008

Re : Script Encodage VOB en MKV [GPU NVIDIA]

Mis le post en lien dans le tuto ffmpeg :
https://debian-facile.org/doc:media:ffm … vob-en-mkv cool

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

Hors ligne

#5 30-05-2019 21:26: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]

Bonsoir,

Fonction dans le script

Détection du DVD-vidéo dans le lecteur.
Création du dossier Title dans son Bureau.
Les Metadata pour le genre d'audio AC3 2.0 5.1, DTS, mpeg1 etc sont OK.
Les MAP audio se font par les AID, que ce soit pour l'AC3 DTS ainsi que pour le mpeg1 et le LPCM.
Il comptabilisera toutes les bandes audio.
Un réglage de temps, ce qui permettra si on veux, de ripper plusieurs titres (DVD seasons).
Un option Crop, pas implantée mais pas encore placée.
Intégration des chapitres dans le mkv.
Si des sous-titres français sont présents, ils seront tous intégrés dans le MKV.
Le MKV sera nommé avec le nom du 1-titre-[fr,eng,deutch ...+SUBVF].mkv  ou sans etc ...
Suppression des fichiers temporaires à chaque travaux effectués ( ça c'est moins propre ) Mon TMP sur ma Arch est limité à 4 Go.

Il faudra obligatoirement passer par l'accélération graphique .( pour l'instant )

et les programmes :

# MPlayer
# ffmpeg
# lsdvd
# ogmtools  (dvdxchap)
# mkvtoolnix-cli (mkvmerge)
# mencoder

Voilà, c'est à peu près tout.

EDIT: modification de mon post 3.

Dernière modification par golgot200 (30-05-2019 21:33:20)

Hors ligne

#6 31-05-2019 09:27:45

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,

Un dvd récalitrant "ALEXANDRE" avec la commande de mon post 1 :


 ffmpeg -hwaccel cuvid -c:v mpeg2_cuvid -i "$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 $i-$TITLE.mkv
 




Impossible to convert between the formats supported by the filter 'Parsed_null_0' and the filter 'auto_scaler_0'
 



Passer -hwaccel cuvid en auto semble résoudre le problème.


 ffmpeg -hwaccel auto -c:v mpeg2_cuvid -i "$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 $i-$TITLE.mkv
 



la vitesse d'encodage en sera juste réduite de moitié smile

Dernière modification par golgot200 (31-05-2019 09:30:40)

Hors ligne

#7 31-05-2019 09:34:21

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]

## FILTERS

Je place ces filtres qui fonctionneront avec cette commande modifié en sauvegarde :


-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
 




qui me donnera donc:


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

Dernière modification par golgot200 (31-05-2019 09:38:31)

Hors ligne

#8 31-05-2019 09:40:05

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]

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

Hors ligne

#9 31-05-2019 10:00:19

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]

#######################################################################################################################################
## DEVICE

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




/dev/sr0
 




#########################################################################################################################################
## TITLE

TITLE=$(lsdvd "$DEVICE" | head -1 | awk '{print $3}')




SLEEPLESS_IN_SEATTLE
 



###########################################################################################################################################
## NOMBRE DE TITRES SUR LE DVD

TITLE_COUNT=$(lsdvd "$DEVICE" | grep ^'Title: ' | wc -l)




3
 




###########################################################################################################################################
## METADATA POUR LES BANDES AUDIO
## Lien :
https://fr.wikipedia.org/wiki/Liste_des_codes_ISO_639-1


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




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




TAGS_ID_STREAMS=$FR.....
TAGS_ID_STREAMS_LPCM=$FR_LPCM....
 




##############################################################################################################################################
## TITRES D'UNE DURÉE DE PLUS DE .... SECONDES [ ICI, 1200 SECONDES = 20 minutes]


LIMIT_TIME=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | grep ID_LENGTH | sed 's/.*=\([0-9]*\)/\1/' | sed "s/\..*//")
B=1200
 




6051
 



##############################################################################################################################################
LE DUMP :


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"
 



##############################################################################################################################################
Le MAP


MAP_ID_STREAMS=$(lsdvd -x "$DEVICE" -t "$i" 2> /dev/null | 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 "$DEVICE" -t "$i" 2> /dev/null | grep 'lpcm' | sed -n -e "s/.*\(0x\)/\1/p" | sed -e 's/c/1c/g' | awk '/0x/{gsub (/^/,"-map i:")}1')
 




-map i:0x80 -map i:0x81 -map i:0x82 -map i:0x83 -map i:0x84 -map i:0x85 -map i:0x86
 




##############################################################################################################################################
## POUR LES SOUS-TITRES


SIDFR=$(lsdvd -x "$DEVICE" -t "$i" 2> /dev/null | 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 -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE" 2>/dev/null | grep "subtitle ( sid ):" | grep "language: fr" | awk '{print$7}' | awk '{x=x+NF}END{print x}')
RATIO=$(lsdvd -x $DEVICE -t "$i" 2> /dev/null | head -3 | grep "Aspect ratio:" | awk '{print$11}' | sed '$ s/.$//' | sed 's/\//:/')
 




1 20
2
16:9
 




###############################################################################################################################################
## LE CROP


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




crop=704:544:10:14
 




###############################################################################################################################################
## INFO CHAPITRES ET MUTIPLEXAGE AU MKV


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"
 




CHAPTER01=00:00:00.000
CHAPTER01NAME=Chapter 01
CHAPTER02=00:05:17.560
CHAPTER02NAME=Chapter 02
CHAPTER03=00:12:17.080
...
...
 




################################################################################################################################################
LA PARTIE SOUS-TITRAGE :


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"




# VobSub index file, v7 (do not modify this line!)
#
# Generated by MPlayer SVN-r38139
# See <URL:http://www.mplayerhq.hu/> for more information about MPlayer
# See <URL:http://wiki.multimedia.cx/index.php?title=VOBsub> for more information about Vobsub
#
size: 720x576
palette: 101010, 6e6e6e, cbcbcb, 202020, b4b4b4, 1e1e1e, 626262, d7d7d7, 808080, 808080, 808080, 808080, 808080, 808080, 808080, 808080
# ON: displays only forced subtitles, OFF: shows everything
forced subs: OFF

# Language index in use
langidx: 1

id: fr, index: 1
timestamp: 00:00:41:400, filepos: 000000000
timestamp: 00:00:46:999, filepos: 000001000
timestamp: 00:00:50:359, filepos: 000001800
timestamp: 00:00:54:160, filepos: 000002800
timestamp: 00:01:21:079, filepos: 000003800
...
...


id: fr, index: 20
timestamp: 00:00:35:680, filepos: 000014800
timestamp: 00:00:38:639, filepos: 000016000
timestamp: 00:00:41:840, filepos: 000017000
timestamp: 00:00:43:400, filepos: 000017800
...
...
 

Dernière modification par golgot200 (02-06-2019 16:05:33)

Hors ligne

#10 31-05-2019 10:03:09

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]

Plus que les conditions à mettre en place et ça, c'est pas bien mon truc hmm

Hors ligne

#11 31-05-2019 10:21:59

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

Re : Script Encodage VOB en MKV [GPU NVIDIA]

j'ai pas tout suivi mais y a pas plus simple avec handbrake et winff ????

en graphique , donc  ?

golgot200 a écrit :

C'est pour plus tard dans un script.


arf ! , j'avais pas vu ...

pardon

Dernière modification par Debian Alain (31-05-2019 10:31:54)


1498812139.jpg Cats, funniest creatures in animal kingdom - Funny cat compilation
RYZEN7 1700X - PRIME X370 PRO - 16 Go DDR4 - RADEON PULSE RX 550 4GB DDR5 OC UEFI - CORSAIR RM750X - SSD crucial MX500 500GB

En ligne

#12 09-06-2019 14:16:44

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,

Bon apparement mencoder est maintenant dans stretch, ça facilitera les choses. Par contre ffmpeg est en version 3.2. Mes tests se font sur la version 4
Je ne sais pas cette 3.2 est compilé pour l'encodage par le GPU.
Si quelqu'un pouvait me vérifier ça ?

Qui ferait une installation des paquets :


apt-get install mplayer ffmpeg lsdvd ogmtools mkvtoolnix mencoder util-linux
 



ogmtools  ===>| (dvdxchap)
mkvtoolnix ====> (mkvmerge)

Dernière modification par golgot200 (10-06-2019 21:11:29)

Hors ligne

#13 09-06-2019 14:23:43

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]

Ha oui aussi, si des pros du script voient des trucs pas correct dans les quelques lignes à mes posts 7, 8 et 9, ça serait cool de me le signaler pour la suite. ( des remarques, des questions aussi )  smile

Hors ligne

#14 09-06-2019 14:34:14

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]

Si tu pouvais tout cela dans un seul cadre de balise code, oui j'y regarderai
depuis mon éditeur favori. Parce que ce n'est pas facile sur le forum
quand c'est en plusieurs morceaux.

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

En ligne

#15 09-06-2019 18:01:10

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]

Ok, je post ça smile

Hors ligne

#16 09-06-2019 18:07:05

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]

GPU_LIGHT.sh



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

## 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 ^'Title: ' | wc -l)


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 -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: fr/ && /format:/  {printf "-metadata:s:a:"$3" language=fra -metadata:s:a:"$3" title="$5$6" "}')
FR_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: fr/ && /format: lpcm/  {printf "-metadata:s:a:0 language=fra -metadata:s:a:0 title="$5$6" "}')
EN=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: en/ && /format:/  {printf "-metadata:s:a:"$3" language=en -metadata:s:a:"$3" title="$5$6" "}')
EN_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: en/ && /format: lpcm/  {printf "-metadata:s:a:0 language=en -metadata:s:a:0 title="$5$6" "}')
DE=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: de/ && /format:/  {printf "-metadata:s:a:"$3" language=ger -metadata:s:a:"$3" title="$5$6" "}')
DE_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: de/ && /format: lpcm/  {printf "-metadata:s:a:0 language=ger -metadata:s:a:0 title="$5$6" "}')
IT=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: it/ && /format:/  {printf "-metadata:s:a:"$3" language=ita -metadata:s:a:"$3" title="$5$6" "}')
IT_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: it/ && /format: lpcm/  {printf "-metadata:s:a:0 language=ita -metadata:s:a:0 title="$5$6" "}')
ES=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: es/ && /format:/  {printf "-metadata:s:a:"$3" language=spa -metadata:s:a:"$3" title="$5$6" "}')
ES_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: es/ && /format: lpcm/  {printf "-metadata:s:a:0 language=spa -metadata:s:a:0 title="$5$6" "}')
NL=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: nl/ && /format:/  {printf "-metadata:s:a:"$3" language=nld -metadata:s:a:"$3" title="$5$6" "}')
NL_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: nl/ && /format: lpcm/  {printf "-metadata:s:a:0 language=nld -metadata:s:a:0 title="$5$6" "}')
HE=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: he/ && /format:/  {printf "-metadata:s:a:"$3" language=heb -metadata:s:a:"$3" title="$5$6" "}')
HE_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: he/ && /format: lpcm/  {printf "-metadata:s:a:0 language=heb -metadata:s:a:0 title="$5$6" "}')
HU=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: hu/ && /format:/  {printf "-metadata:s:a:"$3" language=hun -metadata:s:a:"$3" title="$5$6" "}')
HU_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: hu/ && /format: lpcm/  {printf "-metadata:s:a:0 language=hun -metadata:s:a:0 title="$5$6" "}')
PL=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: pl/ && /format:/  {printf "-metadata:s:a:"$3" language=pol -metadata:s:a:"$3" title="$5$6" "}')
PL_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: pl/ && /format: lpcm/  {printf "-metadata:s:a:0 language=pol -metadata:s:a:0 title="$5$6" "}')
CS=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: cs/ && /format:/  {printf "-metadata:s:a:"$3" language=cze -metadata:s:a:"$3" title="$5$6" "}')
CS_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: cs/ && /format: lpcm/  {printf "-metadata:s:a:0 language=cze -metadata:s:a:0 title="$5$6" "}')
JA=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: ja/ && /format:/  {printf "-metadata:s:a:"$3" language=jpn -metadata:s:a:"$3" title="$5$6" "}')
JA_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: ja/ && /format: lpcm/  {printf "-metadata:s:a:0 language=jpn -metadata:s:a:0 title="$5$6" "}')
SV=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: sv/ && /format:/  {printf "-metadata:s:a:"$3" language=swe -metadata:s:a:"$3" title="$5$6" "}')
SV_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: sv/ && /format: lpcm/  {printf "-metadata:s:a:0 language=swe -metadata:s:a:0 title="$5$6" "}')
UNKNOWN=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: unknown/ && /format:/  {printf "-metadata:s:a:"$3" language=und -metadata:s:a:"$3" title="$5$6" "}')
UNKNOWN_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '/language: unknown/ && /format: lpcm/  {printf "-metadata:s:a:0 language=und -metadata:s:a:0 title="$5$6" "}')
EMPTY_LANG=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | awk '(/language:  aid:/) && /format:/ {printf "-metadata:s:a:"$3" language=und -metadata:s:a:"$3" title="$5$6" "}')
EMPTY_LANG_LPCM=$(mplayer -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | 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 -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE"  2>/dev/null | 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 "$DEVICE" -t "$i" 2> /dev/null | grep 'lpcm' | awk '{print$8}' | awk '{x=x+NF}END{print x}')
COUNT_AC3_DTS_MPEG1=$(lsdvd -x "$DEVICE" -t "$i" 2> /dev/null | grep 'ac3,\|dts,\|mpeg1,' | awk '{print$8}' | awk '{x=x+NF}END{print x}')

MAP_ID_STREAMS=$(lsdvd -x "$DEVICE" -t "$i" 2> /dev/null | 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 "$DEVICE" -t "$i" 2> /dev/null | grep 'lpcm' | sed -n -e "s/.*\(0x\)/\1/p" | sed -e 's/c/1c/g' | awk '/0x/{gsub (/^/,"-map i:")}1')

SIDFR=$(lsdvd -x "$DEVICE" -t "$i" 2> /dev/null | 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 -vo null -ao null -frames 0 -identify dvd://"$i" -dvd-device "$DEVICE" 2>/dev/null | grep "subtitle ( sid ):" | grep "language: fr" | awk '{print$7}' | awk '{x=x+NF}END{print x}')

RATIO=$(lsdvd -x $DEVICE -t "$i" 2> /dev/null | 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 $DEVICE -t "$i" 2> /dev/null | awk '/ac3,/  {printf ""$4","}'  | sed -e 's/,*$//g')
INFO_LPCM=$(lsdvd -x $DEVICE -t "$i" 2> /dev/null | 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"


rm -f $FOLDER/*.idx
rm -f $FOLDER/*.sub
rm -f $FOLDER/"$i-$TITLE+CHAPTERS.mkv"




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


rm -f $FOLDER/*.idx
rm -f $FOLDER/*.sub
rm -f $FOLDER/"$i-$TITLE+CHAPTERS.mkv"





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



Ce script dans l'état à été testé sur environ 50 dvd sans problème ...  (pour l'instant) smile

Dernière modification par golgot200 (09-06-2019 18:23:40)

Hors ligne

#17 09-06-2019 18:21:29

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 commence par une chose que je t'ai déjà dite. Si dans ton script
tu as « #! /bin/bash » ne l'appelle pas GPU_LIGHT.sh mais GPU_LIGHT.bash
car sh ≠ bash.
Maintenant dans debian c'est dash qui est utilisé pour sh et de nombreuse syntaxes de
bash ne sont pas comprises par dash). Je ne sais pas comment ça marche dans archlinux
ceci dit, mais c'est une bonne habitude à prendre. Ça évite des mauvaises surprises.

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

En ligne

#18 09-06-2019 18:30: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]

enicar a écrit :

Je commence par une chose que je t'ai déjà dite. Si dans ton script
tu as « #! /bin/bash » ne l'appelle pas GPU_LIGHT.sh mais GPU_LIGHT.bash
car sh ≠ bash.
Maintenant dans debian c'est dash qui est utilisé pour sh et de nombreuse syntaxes de
bash ne sont pas comprises par dash). Je ne sais pas comment ça marche dans archlinux
ceci dit, mais c'est une bonne habitude à prendre. Ça évite des mauvaises surprises.



OK smile

GPU_LIGHT sans extension serait mieux ?

Sous Debian, je ne pourrais pas le tester par contre. neutral

Hors ligne

#19 09-06-2019 18:38:21

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]

J'ai mis

#!/bin/sh



Pas de problème, ça fait son job smile

Hors ligne

#20 09-06-2019 18:39:31

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'ouvre une petite parenthèse.
Je ne sais pas ce que tu utilises comme éditeur pour écrire tes scripts, mais
il y a un excellent programme qui permet d'améliorer substantiellement les shell script :


shellcheck
 


Dans debian c'est dans le paquet éponyme.

Je l'utilise via syntastic quand j'utilise vim et via flycheck quand j'utilise emacs.
Je ne sais pas comment il est possible de l'utiliser avec d'autres environnements
mais ça doit être possible.

Note, on peut aussi l'utiliser avec ALE sous vim ou neovim.
ALE est le successeur de syntastic, en mieux (car il fait les choses
en arrière plan de façon asynchrone).
Bon je ferme cette parenthèse.


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

En ligne

#21 09-06-2019 18:41:59

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 :

J'ouvre une petite parenthèse.
Je ne sais pas ce que tu utilises comme éditeur pour écrire tes scripts, mais
il y a un excellent programme qui permet d'améliorer substantiellement les shell script :


shellcheck
 


Dans debian c'est dans le paquet éponyme.

Je l'utilise via syntastic quand j'utilise vim et via flycheck quand j'utilise emacs.
Je ne sais pas comment il est possible de l'utiliser avec d'autres environnements
mais ça doit être possible.

Note, on peut aussi l'utiliser avec ALE sous vim ou neovim.
ALE est le successeur de syntastic, en mieux (car il fait les choses
en arrière plan de façon asynchrone).
Bon je ferme cette parenthèse.



Je regarde pour Arch ...

EDIT :

https://www.archlinux.org/packages/comm … hellcheck/

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

Hors ligne

#22 09-06-2019 18:42:56

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 :

J'ai mis

#!/bin/sh



Pas de problème, ça fait son job smile



Euh, justement non, dans ton script tu utilises au moins une syntaxe qui ne fait partie
du sh posix, par exemple :


for (( i=1; i<=TITLE_COUNT; i++ ))
do
#… le code ici
done
 


J'ai viré le $ à TITLE_COUNT, ça marche sans les $ dans les évaluations arithmétiques.


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

En ligne

#23 09-06-2019 18:47:19

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 :

J'ai mis

#!/bin/sh



Pas de problème, ça fait son job smile



Euh, justement non, dans ton script tu utilises au moins une syntaxe qui ne fait partie
du sh posix, par exemple :


for (( i=1; i<=TITLE_COUNT; i++ ))
do
#… le code ici
done
 


J'ai viré le $ à TITLE_COUNT, ça marche sans les $ dans les évaluations arithmétiques.



Ok, je vire le $ et je passe à b=30 pour prendre en compte plusieurs titres et je teste dans la foulée smile

Hors ligne

#24 09-06-2019 18:48:21

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]

Te sers tu de la variable CROP définie par :


 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)
 


Il semblerait que non car shellcheck produit un avertissement à ce sujet.


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

En ligne

#25 09-06-2019 18:53:10

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 :

Te sers tu de la variable CROP définie par :


 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)
 


Il semblerait que non car shellcheck produit un avertissement à ce sujet.




OK, là de toutes façon, je ne l'ai pas encore implanté. Tu peux la commenter.

Dernière modification par golgot200 (09-06-2019 18:57:48)

Hors ligne

Pied de page des forums