Conversion d'un TS en MKV (en gardant les sous-titres)

Contributions au logiciel proposées par certains utilisateurs, et qui peuvent éventuellement intéresser les autres utilisateurs.
Djeipi
Messages : 6
Enregistré le : 16 déc. 2016, 15:18
Carte Tuner : Pas de carte, mais plusieurs lecteurs...
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Conversion d'un TS en MKV (en gardant les sous-titres)

Message par Djeipi »

Hello :)
Djeipi

Je vais étudier ton post qui:
me parait bien bien compliqué
Pas tellement sur le fond, mais à re-rédiger !

concerner les bluray (mts=bluray)
Non, pas du tout, c'est ce que me sortent en PVR mes décodeurs HD de bas de gamme TNT et Satellite FTA sur Astra, pour Arte allemand qui cause et sous-titre aussi en français.
Je n'ai pas ici le FTA pour tester en ce moment les quelques autres chaînes F.
Le FTA me sert dans un autre endroit (paumé) pour enregistrer directement Arte en complément d'un TNTSAT dont TOUS les enregistrements sont cryptés... et lourds et longs à archiver (via HDMI, obligation de buriner langue et sous-titres, donc deux versions à réencoder complètement !) :(
illwind
Messages : 19
Enregistré le : 06 mai 2012, 17:14
Carte Tuner : conceptronic CTVDIGUSB2 + avermedia a850
Êtes-vous un robot ? : Je ne suis pas un robot
Localisation : toulouse

Re: Conversion d'un TS en MKV (en gardant les sous-titres)

Message par illwind »

Djeipite
je n'ai jamais testé de fichier mts donc toutes les manip suivantes c'est des fichiers TS
il s'agit de nettoyer (début, pubs, fin) les enregistrements PVR de la TNT:
tu prend un player type MP-HC tu notes tes début/fin:

Code : Tout sélectionner

ffmpeg.exe -i "fichier.ts" -ss 00 -to 33:53        -map 0:0 -vcodec copy -map 0:1 -acodec:a aac -map 0:4 -s 720x516 -scodec dvdsub "fichier01.mkv"
ffmpeg.exe -i "fichier.ts" -ss 39:40 -to 1:05:38   -map 0:0 -vcodec copy -map 0:1 -acodec:a aac -map 0:4 -s 720x516 -scodec dvdsub "fichier02.mkv"
ffmpeg.exe -i "fichier.ts" -ss 1:10:12 -to 1:42:21 -map 0:0 -vcodec copy -map 0:1 -acodec:a aac -map 0:4 -s 720x516 -scodec dvdsub "fichier03.mkv"
video->copy, audio->aac, sub->idx/sub

ou si ffmpeg.exe plante:
video copy avec mkvmerge(-A -> pas d'audio)
audio (1 4) encodé aac avec ffmpeg
sub (3 5) encodé idx/sub avec ffmpeg

Ici 'yves montant' sur fr5 que j'ai coupé en 3 morceaux pour simuler les pub

Code : Tout sélectionner

>ffmpeg.exe -y -i "montant.ts"

Input #0, mpegts, from 'montant.ts':
  Duration: 01:19:00.79, start: 66761.006133, bitrate: 4731 kb/s
  Program 1025 
  Program 1026 
  Program 1031 
  Program 1045 
    Stream #0:0[0x1a4]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 24.08 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x1ae](fra): Audio: eac3 ([6][0][0][0] / 0x0006), 48000 Hz, stereo, fltp, 128 kb/s
    Stream #0:2[0x1af](qad): Audio: eac3 ([6][0][0][0] / 0x0006), 48000 Hz, stereo, fltp, 128 kb/s
    Stream #0:3[0x1b8](fra): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)
    Stream #0:4[0x1b0](qaa): Audio: eac3 ([6][0][0][0] / 0x0006), 48000 Hz, stereo, fltp, 128 kb/s
    Stream #0:5[0x1b9](fra): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
  Program 1046 
At least one output file must be specified

Code : Tout sélectionner

mkvmerge.exe -o "montant 01_V.mkv" -A "montant.ts" --split parts:00:07:02-00:18:42
ffmpeg.exe -y -i "montant.ts" -ss 00:07:02 -to 00:18:42 -vn -sn -acodec:a aac -map 0:1 -map 0:4 "montant 01_A.mkv"
ffmpeg.exe -y -i "montant.ts" -ss 00:07:02 -to 00:18:42 -vn -an -scodec dvdsub -s 720x516 -map 0:3 -map 0:5 "montant 01_S.mkv"
mkvmerge.exe -o "montant 01_VAS.mkv" "montant 01_V.mkv" "montant 01_A.mkv" "montant 01_S.mkv"

mkvmerge.exe -o "montant 02_V.mkv" -A "montant.ts" --split parts:00:27:59-00:40:14
ffmpeg.exe -y -i "montant.ts" -ss 00:27:59 -to 00:40:14 -vn -sn -acodec:a aac -map 0:1 -map 0:4 "montant 02_A.mkv"
ffmpeg.exe -y -i "montant.ts" -ss 00:27:59 -to 00:40:14 -vn -an -scodec dvdsub -s 720x516 -map 0:3 -map 0:5 "montant 02_S.mkv"
mkvmerge.exe -o "montant 02_VAS.mkv" "montant 02_V.mkv" "montant 02_A.mkv" "montant 02_S.mkv"

mkvmerge.exe -o "montant 03_V.mkv" -A "montant.ts" --split parts:00:48:59-00:58:52
ffmpeg.exe -y -i "montant.ts" -ss 00:48:59 -to 00:58:52 -vn -sn -acodec:a aac -map 0:1 -map 0:4 "montant 03_A.mkv"
ffmpeg.exe -y -i "montant.ts" -ss 00:48:59 -to 00:58:52 -vn -an -scodec dvdsub -s 720x516 -map 0:3 -map 0:5 "montant 03_S.mkv"
mkvmerge.exe -o "montant 03_VAS.mkv" "montant 03_V.mkv" "montant 03_A.mkv" "montant 03_S.mkv"
on réassemble les 3 mkv avec mkvtoolnix-gui / option 'Concaténer des fichiers'
ou

Code : Tout sélectionner

ffmpeg.exe -f concat -i "list.txt" -c copy "fichier.concat.mkv"
avec list.txt

Code : Tout sélectionner

file 'fichier01.mkv'
file 'fichier02.mkv'
file 'fichier03.mkv'
D:/Filmatraiter/Encours\mkvmerge.exe --ui-language fr --output ^"D:\Film..........+01:37:37.040-03:25:26.640 --track-order 0:0,0:1,0:2,1:1,1:2,2:0,3:0,4:0
tu fais un copier/coller de la ligne de commande de mkvinfo-gui.exe qui est incompréhensible

mieux vaut étudier la commande mkvmerge https://mkvtoolnix.download/doc/mkvmerge.html
ca donne des commandes plus compréhensibles:

Code : Tout sélectionner

mkvmerge.exe --default-duration 4:25fps -o "montant 01_VA.mkv" -a 5,8 "montant.ts" --split parts:00:07:02-00:18:42
mkvmerge.exe -o "montant 03_VAS.mkv" "montant 03_V.mkv" "montant 03_A.mkv" "montant 03_S.mkv"
:: Extraction des dvbsub
ffmpeg.exe -y -i "brut.mts" -vn -an -scodec dvdsub -vn -an -map 0 -ignore_unknown "brutS.mkv"

:: Redimensionnement des sous-titres et repositionnement, lignes à éditer si besoin, -I x.x = L/H
:: TF1 TMC F4 C8 NT1 "-S 0.5,0.5"
:: F2 F3 C8 Arte "-S 1,1"
java -jar BDSup2Sub512.jar -d 0000 -S 0.5,0.5 -l fr -I 2.4,0 -X left 160 -o brutS1r.idx brutS1.idx
java -jar BDSup2Sub512.jar -d 0000 -S 0.5,0.5 -l fr -I 2.4,0 -X left 160 -o brutS2r.idx brutS2.idx

Code : Tout sélectionner

Subtitle options:
-s size             set frame size (WxH or abbreviation)
-sn                 disable subtitle
-scodec codec       force subtitle codec ('copy' to copy stream)
pour avoir des sous-titres en bas de l’écran rajouter un -s 720x516 dans les commandes ffmpeg concernant les sous-titres:

Code : Tout sélectionner

::subtitle
ffmpeg.exe -i "crime.ts" -ss 00:07:36 -to 01:48:12 -vn -an -scodec dvdsub -s 720x516 -map 0:3  -map 0:5  -y "crimeS.mkv"
Djeipi
Messages : 6
Enregistré le : 16 déc. 2016, 15:18
Carte Tuner : Pas de carte, mais plusieurs lecteurs...
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Conversion d'un TS en MKV (en gardant les sous-titres)

Message par Djeipi »

Hello :)

Merci Illwind d'avoir examiné mes cogitations et donné des exemples fort utiles pour traiter les quelques soucis qui pourraient encore se présenter.

Pour l'instant, je rode ma dernière procédure (aboutissement de multiples essais, avec divers logiciels, je n'ai indiqué que les retenus) presque "tout automatique" au fur et à mesure des nouveaux enregistrements sur diverses chaînes.
Elle a tourné nickel sur "Titanic" / TF1, "Hugo Cabret" et "Retour III" /TMC : début, 2 pubs, fin. Sur "Retour II" et "Retour I" / TMC dans le même MTS : début, 5 pubs, fin (donc 2 lignes de coupe en mux final), j'ai eu un souci de parasitage sur le "Retour I" corrigé rapidement comme indiqué plus haut.

Donc quelques minutes pour avoir le film ouvert dans ADM, lancer le batch et relever les points de coupe, super pratique avec curseur, molette et flèches en moins d'une minute.
Ensuite on peut faire autre chose sur le PC ou ailleurs et revenir bien plus tard...
Quand le batch est terminé, j'ai juste à coller la ligne des points de coupe au bon endroit dans la LC de MKVtn qu'il ne faut pas chercher à comprendre en détail (c'est la copie des réglages du GUI), elle est préconfigurée pour mes choix personnels.
Quelques minutes après, j'ai un film archivé sur DD externe qui passe sur 4 lecteurs externes et 1 TV USB (un qui ne lit pas les AAC, un qui ne lit pas les AC3, un qui ne lit pas les VobSub, un qui ne lit pas les TS, un qui ne lit pas les MTS des autres, etc), géographiquement distants, en VO ou VF, sans ou avec sous-titres toujours bien positionnés.
Dingo Rouge
Messages : 5
Enregistré le : 31 oct. 2016, 10:41
Carte Tuner : Il y a sur ce forum des experts en retraitement vidéo.
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Conversion d'un TS en MKV (en gardant les sous-titres)

Message par Dingo Rouge »

Bonjour,

Merci pour le tuyau sur AVIDEMUX, il resynchronise effectivement les flux. Je n'aurais pas non plus pensé à l'utiliser pour repérer les découpes alors qu'il est radicalement plus véloce que n'importe quel player pour cette tâche.

Par contre :
- Même une fois remuxé avec MKVMerge, les vidéos passées par AVIDEMUX sont plus significativement lentes au démarrage et à la navigation sur VLC. Heureusement la coche "corriger les informations de temps du flux de données" de MKVToolnix fait tout rentrer dans l'ordre.
- AVIDEMUX fait aussi sauter le ratio d'aspect. Je dois le forcer dans MKVToolnix.

Du coup je ne remuxe avec AVIDEMUX que si MKVToolnix me signale une anomalie, ce qui n'est pas si fréquent.

Me voilà paré pour la période de Noël, dense en enregistrements pour les enfants. J'en ai pour une année de voyages tranquilles et de maladies au chaud sous la couverture.

Cordialement,
Grégory
Djeipi
Messages : 6
Enregistré le : 16 déc. 2016, 15:18
Carte Tuner : Pas de carte, mais plusieurs lecteurs...
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Conversion d'un TS en MKV (en gardant les sous-titres)

Message par Djeipi »

Hello :)
pour repérer les découpes
oui, et les raccords sont invisibles si on coupe aux"keyframes" (flèches H et B)
alors qu'il est radicalement plus véloce que n'importe quel player pour cette tâche.
Le temps passé à l'indexation est largement récupéré ensuite !
les vidéos passées par AVIDEMUX sont plus significativement lentes au démarrage et à la navigation sur VLC.
J'ai toujours trouvé VLC lent à démarrer et manoeuvrer quelle que soit la vidéo...
Je lui préfère le MPC ou le SMplayer, intéressant pour ses sauts de + ou - 1 ou 10 min .et le choix rapide des options de lecture
Mais j'utilise parfois VLC pour des conversions exotiques...
Heureusement la coche "corriger les informations de temps du flux de données" de MKVToolnix fait tout rentrer dans l'ordre.
Merci pour le tuyau :)
Fallait le savoir, elle est bien cachée et pas cochée par défaut ;)
- AVIDEMUX fait aussi sauter le ratio d'aspect. Je dois le forcer dans MKVToolnix.
En choisissant le conteneur de sortie en MKV, "Configurer" permet de forcer la largeur, pour la TNT je l'ai mise par défaut à 1920 et c'est tout bon

----------------------------------------------------------------------------------------------------------------

PS : Je viens de finaliser un BAT quasi tout-automatique, avec divers choix demandés au lancement :

- Adjonction après conversion des trois 1ères pistes audio en AAC, car selon les chaînes la VO et l'AD sont en 2ème ou 3ème position
- Adjonction (en "soft") des sous-titres dvbsub de la piste "normale". Si elle est vide, remplacement automatique par ceux de la piste "malentendants". Correction de la mise page selon la chaîne et le format L/H de présentation du film
- Adjonction (en "soft") des sous-titres SRT obtenus par OCR du dvbsub ci-dessus, mise en page automatique mais plus rustique qu'avec le dvbsub.
L'OCRpeut prendre quelques petites dizaines de minutes.
- Points de coupe (obtenus selon plusieurs méthodes) pour nettoyage début, pubs, fin

Ensuite, ça mouline tout seul un certain temps qui s'allonge selon les conversions AAC et SRT (quelques petites dizaines de minutes sur un portable I3 ultrabasique de trois ans) et à la fin, on obtient le MKV optimum désiré, directement sur le DD externe d'archivage si on veut :)

Nota : On peut éditer facilement ce BAT pour modifier les choix par défaut proposés, les pistes par défaut et forcées, etc, selon ses habitudes. et bien sûr le bidouiller ad libitum

Dès que j'ai refondu le mode d'emploi, je publie ;)

Petit glossaire :

- dvbsub : Codage des sous-titres sous forme d'images genre BMP, avec couleurs et position variables utilisé dans les flux DVB(-T et -S).
On les trouve sous-forme classique et/ou pour malentendants, avec commentaires annexes concernant sons du film.

En général, ils ne peuvent être exploités par l'utilisateur qu'avec l'appareil qui a enregistré le flux "brut" ou les lecteurs informatiques (VLC, MPC-HC, SMplayer, etc). On peut cependant extraire facilement ces fichiers et les multiplexer ("soft") en MKV, c'est une option que je n'ai pas implémentée car je la pense inutile.
Certains logiciels d'édition vidéo peuvent les buriner définitivement ("hard") dans la vidéo, moyennant un réencodage de celle-ci.

- vobsub : Egalement codés sous forme d'images, rendu visuel identique au dvbsub. Obtenu par transcodage du dvbsub, le vobsub me semble plus largement accepté par les lecteurs externes. Il nécessite toutefois une reprise de la mise en page (plus ou moins automatique). Le codage se fait par paires *.idx et *.sub, multiplexables ("soft") en MKV et certains autres conteneurs.

- SRT : Fichiers texte éditables de rendu traditionnel (films "VOST" au cinéma...), modifiable selon les goûts. Ils sont obtenus par reconnaissance optique du dvbsub ou du vobsub et multiplexables en MKV et autres conteneurs, et pratiquement tous les logiciels d'édition vidéo peuvent les buriner définitivement ("hard") dans la vidéo, moyennant un réencodage de celle-ci.
Djeipi
Messages : 6
Enregistré le : 16 déc. 2016, 15:18
Carte Tuner : Pas de carte, mais plusieurs lecteurs...
Êtes-vous un robot ? : Je ne suis pas un robot

Re: Conversion d'un TS en MKV (en gardant les sous-titres)

Message par Djeipi »

MISE A JOUR du 2 février 2017

NOUVEAU La version 9.8.0 de MKVToolnix intègre désormais l'extraction des sous-titres DVBsub

Hello :)

Voici une V2.0 "alpha" en BAT :
Du code de bleusaille, pas très propre, plus ou moins auto-documenté et interactif, monté petit à petit à partir de (beaucoup de) recherches sur le net sur l'art du "batch" et de la ligne de commandes.
Il est (assez ?) facilement personnalisable en fonction des desiderata de chacun, j'ai laissé volontairement quelques "pause"(s) supprimables sans dommages pour suivre l'évolution du traitement. J'ai encore du mal à gérer proprement les affichages avec "echo", mais ça n'empêche pas le bazar de tourner.
La V2 se distingue de la V1 par l'adjonction d'une usine à gaz (entre "call" et"reprise") qui transforme les segments nettoyés avec Avidemux récupérés dans le fichier*.py créé par la sauvegarde du projet (débuts et durées en microsecondes) en ligne de commandes pour scission au format utilisé par MKVToolnix (débuts et fins en "hh:mm:ss,cc" cc étant les 100èmes de secondes), tout en conservant la possibilité de report manuel de ces valeurs dans un fichier texte ou directement en cours d'exécution.
La V2 exploite aussi l'extraction et le remultiplexage directs des sous-titres "DVBsub" par MKVToolnix mais en conservant la possibilité de les redimensionner et repositionner ainsi que d'en créer une version SRT.
Le choix des modalités d'exploitation et de nettoyage des divers flux avec Avidemux, MKVToolNix et FFmpeg est offert en coutr d'exécution pour pallier à certains problèmess liés aux erreurs de transmission ou de cogdage mieux traités selon les cas par l'un ou par l'autre de ces logiciels

RAPPEL :

Ici, il s'agit de nettoyer (début, pubs, fin) les enregistrements PVR de la TNT (et éventuellement FTA des satellites) et de les stocker de façon à ce que leurs caractéristiques de langues et sous-titres restent accessibles après coup à un maximum de lecteurs multimédia externes de tous types, les lecteurs "informatiques" tels que MPC-HC, SMplayer, VLC, etc. ne posant en principe pas de problèmes.

Si l'on désire sans se prendre la tête une vidéo personnalisable à tous points de vue mais figée, le logicie gratuit "Freemake Video Converter", bien que plutôt poussif pour la recherche des parties à nettoyer, reste le plus convivial.
Attention cependant à l'installation de décliner tous les parasites proposés !


Sinon, pour le cas où l'utilisation initiale de l'excellent programme "VidePub" ne permettrait pas de satisfaire les besoins spécifiques du/des lecteur(s) externe(s) de l'utilisateur, j'ai cherché à automatiser au maximum par un fichier BAT les opérations sous Windows et ceci en n'utilisant que des logiciels gratuits (ça doit pouvoir s'adapter à Linux) pour obtenir un fichier MKV facilement re-personnalisable en final, aussi passe-partout que possible, traité en un minimum de temps et sans pertes de qualité, par copie des composantes Vidéo, Audio, Sous-titres, et faculté de transcodage Audio pour certains lecteurs qui ne digèrent pas l'AC3 (majoritaire en TNT-HD) ou l'AAC (replays, YouTube, etc) et retraitement des sous-titres.
Les liens vers ces logiciels sont indiqués ci-dessous, on trouvera aussi d'autres logiciels et quelques commentaires en p.4 du fil.

Pour commencer, il faut se créer un répertoire de travail, chez moi c'est "D:\Filmatraiter\Encours\" dans lequel on laissera à demeure un certain nombre d'outils, le fichier BAT "ToutAuto_v*.bat" et où l'on copiera (pour y garder l'original en secours) depuis la clé USB le fichier "*.mts" à traiter.
Une fois le MKV final obtenu, on supprimera tout le contenu ajouté dans le répertoire avec sauvegarde éventuelle dans un répertoire dédié au film toutes les composantes utiles pour un repersonnalisation éventuelle du MKV, y compris redimensionnement, réencodage, burinage des sous-titres, changement de conteneur, etc.

Petit glossaire à propos des sous-titres :

- dvbsub : Codage original des sous-titres sous forme d'images genre BMP, avec couleurs et position variables utilisé dans les flux DVB(-T et -S).
On les trouve sous-forme classique (comme au cinéma, mais avec un peu de mise en page) et/ou pour malentendants avec commentaires annexes concernant les sons du film.

En général, ils ne peuvent être exploités par l'utilisateur qu'avec l'appareil qui a enregistré le flux "brut" ou les lecteurs informatiques (VLC, MPC-HC, SMplayer, etc). On peut cependant extraire facilement ces fichiers et les multiplexer ("soft") en MKV, c'est une option que je n'ai pas implémentée car elle peut poser des problèmes avec certains lecteurs externes.

- vobsub : Egalement codés sous forme d'images, rendu visuel identique au dvbsub. Obtenu par transcodage du dvbsub, le vobsub me semble plus largement accepté par les lecteurs externes. Il nécessite toutefois une reprise de la mise en page (plus ou moins automatique). Le codage se fait par paires *.idx et *.sub, multiplexables ("soft") en MKV et certains autres conteneurs.

- SRT : Fichiers "texte" éditables de rendu traditionnel (films "VOST" au cinéma...), d'aspect éventuellement modifiable selon les goûts. Ils sont obtenus par reconnaissance optique du dvbsub ou du vobsub et multiplexables en MKV et autres conteneurs.
On peut aussi trouver pour les films ces fichiers SRT sur le net, mais il, faudra les resynchroniser, opération relativement avec "Subtitle Edit" et ses confrères.

La plupart des logiciels d'édition vidéo peuvent buriner définitivement ("hard") ces divers formats dans la vidéo, moyennant un réencodage de celle-ci.


LES OUTILS :

# Pour nettoyer directement et rapidement les début, pubs, fin :
Videpub
A installer et mettre un raccourci dans la boîte à outils.
Renommer auparavant "*.mts" en "*.ts"

# L'outil fondamental :
Avidemux Version actuelle : 2.6.18
A installer dans le dossier proposé par défaut et mettre un raccourci dans la boîte à outils.

# Son complémentaire :
FFmpeg Version actuelle 3.2.2
A dézipper, puis il suffit de copier l'exécutable "ffmpeg.exe" dans la boîte à outils.

# Pour remettre les sous-titres VobSub en bonne place (et faire plus encore):
BDSup2Sub
Il nécessite que Java soit installé
Celui-ci peut aussi fonctionner en ligne de commande
Dézipper puis copier "BDSup2Sub512.jar" dans la boîte à outils.

# Pour transcoder les sous-titres en SRT :
Subtitle Edit Version actuelle 3.5.1
Dézipper la version portable et copier le dossier "SE351" lui-même dans la boîte à outils.
Lancer une1ère fois "SubtitleEdit.exe"
Menu "Options" > Choisir la langue > français
Menu "Orthographe" > télécharger Dictionnaires > français

# Pour finaliser et personnaliser :
MKVToolNix Version actuelle 9.7.1
Dézipper la version portable "*.7z"
Il suffit ici de copier dans la boîte à outils les exécutables :
"mkvextract.exe"
"mkvmerge.exe"
"mkvtoolnix-gui.exe"
Pour avoir le GUI en français et éventuellement utiliser d'autres possibilités de MKVToolNix, compléter la copie avec les autres fichiers et sous-répertoires de la distribution

# Pour vérifier en lecture les traitements :
MPC-HC
Bien d'autres conviennent : VLC, SMplayer, etc..., mais j'ai retenu MPC-HC pour l'utiliser en ligne de commandes.
Choisir la version installable de MPC-HC, l'installer avec les paramètres par défaut, sinon éditer son chemin d'accès dans le BAT (à faire impérativement si l'on veut utiliser un autre lecteur).

# IMPORTANT : Il est impératif d'ajouter la commande Windows "Paste" qui n'existe pas en standard.
Pour cela dézipper
http://www.c3scripts.com/tutorials/msdos/paste.zip
et coller le fichier "paste.exe" dans C:\Windows\



PRELIMINAIRES :

# Il faut modifier les options par défaut d'Avidemux ainsi :
- Lancer le GUI d'Avidemux
- Format de sortie : Choisir MKV muxer
- Configurer : cocher "Force display width", choisir "1920" (pour gérer les chaînes qui diffusent en 1440x1080), OK
- Menu "Editer" > Sauver les réglages courants comme défaut.

# Copier en passant par un éditeur de texte comme "Notepad++" dans la boîte à outils les deux fichiers suivants avec l'extension ".py" :

"brut.py"

Code : Tout sélectionner

#PY  <- Needed to identify #
#--automatically built--

adm = Avidemux()
adm.videoCodec("Copy")
adm.audioClearTracks()
adm.setSourceTrackLanguage(0,"fra")
adm.setSourceTrackLanguage(1,"qaa")
adm.setSourceTrackLanguage(2,"qad")
adm.audioAddTrack(0)
adm.audioCodec(0, "copy");
adm.audioSetDrc(0, 0)
adm.audioSetShift(0, 0,0)
adm.audioAddTrack(1)
adm.audioCodec(1, "copy");
adm.audioSetDrc(1, 0)
adm.audioSetShift(1, 0,0)
adm.audioAddTrack(2)
adm.audioCodec(2, "copy");
adm.audioSetDrc(2, 0)
adm.audioSetShift(2, 0,0)
adm.setContainer("MKV", "forceDisplayWidth=True", "displayWidth=1920")
"brut_adm_AAC.py"

Code : Tout sélectionner

#PY  <- Needed to identify #
#--automatically built--

adm = Avidemux()
adm.videoCodec("Copy")
adm.audioClearTracks()
adm.setSourceTrackLanguage(0,"fra")
adm.setSourceTrackLanguage(1,"und")
adm.setSourceTrackLanguage(2,"und")
adm.audioAddTrack(0)
adm.audioCodec(0, "FDK_AAC");
adm.audioSetDrc(0, 0)
adm.audioSetShift(0, 0,0)
adm.audioAddTrack(1)
adm.audioCodec(1, "FDK_AAC");
adm.audioSetDrc(1, 0)
adm.audioSetShift(1, 0,0)
adm.audioAddTrack(2)
adm.audioCodec(2, "FDK_AAC");
adm.audioSetDrc(2, 0)
adm.audioSetShift(2, 0,0)
adm.setContainer("MKV", "forceDisplayWidth=True", "displayWidth=1920")

Ce sont des enregistrements de projets Avidemux, personnalisables éventuellement par les utilisateurs d'Avidemux de préférence depuis le GUI d'Avidemux.
Ils correspondent ici aux choix des traitements de base des diverses pistes audio, mais peuvent faire bien plus.
Pour ceux qui voudraient les créer depuis Avidemux, ce qui serait la façon normale, il faut charger n'importe quelle vidéo typique "*.mts" (avec plusieurs pistes audio), choisie courte pour une indexation rapide, paramétrer les réglages personnalisés et sauver le projet en *.py.
Ensuite, avec l'éditeur supprimer ces 5 lignes:

Code : Tout sélectionner

adm.loadVideo("D:/Filmatraiter/Encours/*.mts")
adm.clearSegments()
adm.addSegment(0, 0, nnnnn000)
adm.markerA = 0
adm.markerB = nnnnnn000
Et ne pas oublier "ToutAuto_v21.bat" :

ATTENTION : utiliser à titre expérimental, en cours de tests, il y a quelques pauses excédentaires

Code : Tout sélectionner



@echo Methode de recherche des points de coupe avec  :   1 = Avidemux    0 = Autres 
@echo Autres (par exemple "VidePub"  ou lecteurs PC) est plus rapide quand il n'y a pas de pubs pour reperer "Debut" et "Fin"
@echo mais Avidemux est plus performant pour balayer le film une fois l'indexation terminee et plus propre si coupes aux "keyframes"  

set MethodeRecherche=0
set /p MethodeRecherche=
echo off
echo.
@echo retenu %MethodeRecherche%
echo.
echo.

::echo off
if "%MethodeRecherche%"=="0" goto :ModeTraitement

@echo Indexation, patienter plusieurs minutes ou plus la premiere fois, mais incontournable pour l'usage d'Avidemux

"C:\Program Files\Avidemux 2.6 - 64 bits\avidemux_cli.exe" --load brut.mts --autoindex --quit
echo.
echo.
echo.
@echo Nettoyer le fichier "brut.mts" avec Avidemux (ADM) selon  Edition Effacer) avec curseur, molette, fleches G, D  et H, B
@echo pour les "keyframes"
@echo @echo 
@echo Pour continuer et finir le travail avec le GUI d'Avidemux plutot qu'avec le BAT,
@echo ne pas le fermer, le CONFIGURER selon ses desirs et sauver le fichier nettoye
@echo ATTENTION, dans ce cas, ABSENCE DES SOUS-TITRES dans le fichier sauve !
@echo Dans tous les cas SAUVER le PROJET en "nett_ADM.py" puis (pour le plan B) le film nettoye et configure en "nettADM.mkv"
@echo Fermer le GUI
@echo NOTA : Si le message "...too short" s'affiche en fin de sauvegarde avec le GUI, fermer le GUI. 
@echo Le fichier d'index "brut.mts.idx2" reste valable ainsi que le "segments.txt"
@echo Effacer le fichier *.mkv resultant, relancer le BAT avec "Mode" = 0 et "Recherche coupes" = "Autres" = 0
@echo ATTENDRE svp
echo off
echo.
echo.
echo.

"C:\Program Files\Avidemux 2.6 - 64 bits\avidemux.exe" --load brut.mts

:ModeTraitement
@echo Mode de traitement
@echo  Mode 0 = FFmpeg (plus rapide mais parfois pb de synchronisation A/V/ST, a confirmer)
@echo  Mode 1 = Avidemux (plus lent, synchro meilleure a confirmer,
@echo   mais plante parfois en traitement du "brut.mts" aux commutations de pub
@echo  En principe, choisir le mode 1, il y aura repli automatique vers le mode 0 en cas de detection de plantage
echo on
set Mode=1
set /p Mode=
echo.
@echo retenu %Mode%
echo.
echo.

:ChoixSousTitres
@echo Choix sous-titres SUB   : 0 = non   1 = oui
set SousTitresSUB=1
set /p SousTitresSUB=
echo off

echo.
@echo retenu %SousTitresSUB%
echo.
echo.


@echo Choix sous-titres SRT   : 0 = non   1 = oui 
echo on
set SousTitresSRT=0
set /p SousTitresSRT=
echo.
@echo retenu %SousTitresSRT%
echo off
echo.
echo.

echo off
if "%SousTitresSUB%"=="0" goto :segments
if "%SousTitresSUB%"=="1" goto :iniCAR
if "%SousTitresSRT%"=="0" goto :segments
if "%SousTitresSRT%"=="1" goto :segments

:iniCAR
set car=0.5,0.5
set format=1.8,50

:ReCorr
@echo Redimensionnement de la taille des caracteres des sous-titres : Coeffs largeur et hauteur
@echo actuel %car%  modifiable
echo on
set /p car= 
echo.
@echo retenu %car%
echo.
echo.

@echo Repositionnement des sous-titres : Format du film L/H, decalage vers le haut
@echo actuel %format%  modifiable
set /p format=
echo.
@echo retenu %format%
echo.
echo.

@echo Choix controle des sous-titres  : 0 = non   1 = oui 
set Controle=1
set /p Controle=
echo off
echo.
@echo retenu %Controle%
echo.
echo.

:segments
echo off
if exist "nett_ADM.py" goto :call
@echo segments selon le fichier "segments.txt"
if exist "segments.txt" goto :copie _fichier
echo on
set/p segments=
goto :ChoixDecTN_ADM
:copie _fichier
echo on
@set/p segments=<segments.txt
echo.
@echo %segments%
::pause
echo.

goto :ChoixDecTN_ADM

echo off
:call
echo off
:: Récupération des n segments dans  nett_ADM.py  début et durée en microsecondes, ", et ")" parasites à la fin
if exist "segs.txt" del "segs.txt
FINDSTR "addSegment(" nett_ADM.py | clip
paste >segs.txt
if exist "segs1.txt" del "segs1.txt
for /f "tokens=1,2,3" %%A in ('findstr /rc:"adm.addSegment" segs.txt') do (
echo %%B% >> "segs1.txt"
echo %%C% >> "segs1.txt"
)

if exist "segsnet.txt" del "segsnet.txt"
if exist "cuthmsc.txt" del cuthmsc.txt"
:nett
type nul > cuthmsc.txt

:boucle

::Nettoyage points de coupe "cut" des débuts
set /p cutmus=<"segs1.txt"
@echo %cutmus%
:: Nettoyage de "0000," ou "0000)" résultat en cs
set cutcs=%cutmus:~0,-6%
@echo %cutcs%
set cutcsdeb=%cutcs%

:: Conversion HH:MM:SS.cc (format MKVToolNix) desv débuts de segments

if %cutcs% GEQ 100 goto :cutnonzero
set cutcs=100
:cutnonzero
set /a hours=(%cutcs%/360000)
@echo %hours%
set /a minutes=(%cutcs%/6000)-(hours*60)
@echo %minutes%
set /a seconds=(%cutcs%-(%minutes%*6000)-(%hours%*360000))/100
@echo %seconds%
set /a csecs=(%cutcs%-(%seconds%*100)-(%minutes%*6000)-(%hours%*360000))
@echo %csecs% 

set hh=0
set mm=0
set ss=0
set cc=0

:hh
if  %hours% GEQ 10 goto :hhok
if  "%hours%"=="0" goto :hh00
set ohours=0%hours%

set hh=%ohours%
@echo %hh%
goto :mm
:hh00
set hh=00
@echo %hh%
goto :mm
:hhok
set hh=%hours% 

:mm
if  %minutes% GEQ 10 goto :mmok
if  %minutes% EQU 0 goto :mm00
set ominutes="0%minutes%"
set ominutes1=%ominutes:~1,-1%

set mm=%ominutes1%
@echo %mm%
goto :ss
:mm00
set mm=00
@echo %mm%
goto :ss
:mmok
set mm=%minutes%
set mm1=%minutes:~0,-1% 

:ss
if  %seconds% GEQ 10 goto :ssok
if  "%seconds%"=="0" goto :ss00
set oseconds=0%seconds%

set ss=%oseconds%
@echo %ss%
goto :cc
:ss00
set ss="00"
@echo %ss%
goto :cc
:ssok
set ss=%seconds%

:cc

if  %csecs% GEQ 10  goto :ccok
if  "%csecs%"=="0" goto :cc00

set ocsecs="0%csecs%"
set ocsecs_=%ocsecs:~1,-1%
set cc=%ocsecs_%
@echo %cc%
goto :hmsc
:cc00
set cc=00
@echo %cc%
goto :hmsc
:ccok
set cc=%csecs% 

:hmsc
set cc=%cc: =%

@echo %hh%:%mm%:%ss%.%cc%
:: stockage deb
set "filemask=cuthmsc.txt"
for %%A in (%filemask%) do if %%~zA==0 goto :tour1
@set /p avant=<cuthmsc.txt
echo %avant%,+%hh%:%mm%:%ss%.%cc%->cuthmsc.txt
goto :more
:tour1
echo %hh%:%mm%:%ss%.%cc%->cuthmsc.txt
goto :more
:more
more +1 segs1.txt > segstemp.txt
del "segs1.txt"
ren "segstemp.txt" "segs1.txt

:: Phase durée, nettoyage et calcul des points de coupe "cut" des fins de segments
set /p cutmus=<"segs1.txt"
@echo %cutmus%
:: Nettoyage de "0000," ou "0000)" résultat en cs
set cutcs=%cutmus:~0,-6%
@echo %cutcs%
set /a cutcsfin=%cutcsdeb%+%cutcs%
:: @echo %cutcsfin%
set cutcs=%cutcsfin%
@echo %cutcs%

:: Conversion HH:MM:SS,cc (format MKVToolNix) des  fins de segments

set /a hours=(%cutcs%/360000)
@echo %hours%
set /a minutes=(%cutcs%/6000)-(hours*60)
@echo %minutes%
set /a seconds=(%cutcs%-(%minutes%*6000)-(%hours%*360000))/100
@echo %seconds%
set /a csecs=(%cutcs%-(%seconds%*100)-(%minutes%*6000)-(%hours%*360000))
@echo %csecs% 


set hh=0
set mm=0
set ss=0
set cc=0


:hhF
if %hours% GEQ 10 goto :hhokF
if "%hours%"=="0" goto :hh00F
set ohours=0%hours%
set hh=%ohours%
@echo %hh%
goto :mmF
:hh00F
set hh=00
@echo %hh%
goto :mmF
:hhokF
set hh=%hours% 

:mmF
if  %minutes% GEQ 10 goto :mmokF
if  "%minutes%"=="0" echo goto :mm00F
set ominutes="0%minutes%"
set ominutes1=%ominutes:~1,-1%
set mm=%ominutes1%
@echo %mm%
goto :ssF
:mm00F
set mm=00
@echo %mm%
goto :ssF
:mmokF
set mm=%minutes% 
set mm1=%mm:~0,-1%
set mm=%mm1%

:ssF
if  %seconds% GEQ 10 goto :ssokF
if  %seconds% EQU 0 goto :ss00F
set oseconds=0%seconds%
set ss=%oseconds%
@echo %ss%
goto :ccF
:ss00F
set ss="00"
@echo %ss%
goto :ccF
:ssokF
set ss=%seconds%

:ccF

if %csecs% GEQ 10  goto :ccokF
if "%csecs%" EQU 0 goto :cc00F

set ocsecs="0%csecs%"
set ocsecs_=%ocsecs:~1,-1%
set cc=%ocsecs_%
@echo %cc%
goto :hmscF
:cc00F
set cc=00
@echo %cc%
goto :hmscF
:ccokF
set cc=%csecs% 

:hmscF
set cc=%cc: =%

@echo %hh%:%mm%:%ss%.%cc%
:: stockage fin
@set /p avant=<cuthmsc.txt
echo %avant%%hh%:%mm%:%ss%.%cc%>cuthmsc.txt
more +1 segs1.txt > segstemp.txt
del "segs1.txt"
ren "segstemp.txt" "segs1.txt

:: test si fini
set "filemask=segs1.txt"
for %%A in (%filemask%) do if %%~zA==0 goto :fini

goto :boucle
:fini

:reprise

copy "cuthmsc.txt" "segments.txt"
@set /p segments=<segments.txt

goto :ChoixDecTN_ADM

:ChoixDecTN_ADM

echo off
echo.
echo.
@echo Decoupe avec MKVToolNix = 0     ADM = 1 
echo on
set Decoupe=0
set /p Decoupe=
echo off
echo.
@echo retenu %Decoupe%
echo.
pause

echo off
if "%Decoupe%"=="1" goto :EXTRdvbSUB


:ChoixAudioAAC

@echo Conversion Audio en AAC  0 = non   1 =  oui
echo on
set AAC=1
set /p AAC=
echo.
@echo retenu %AAC%
echo.
echo.

:EXTRdvbSUB
echo off
if "%SousTitresSUB%"=="1" goto :EXTR
if "%SousTitresSRT%"=="1" goto :EXTR
goto :V_A
:EXTR
if exist "brutS.mkv" goto :existbrutSmkv

:: Extraction des dvbSUB  L'option -s LxH n'est pas utilisée volontairement, remplacement par BDSup java  
ffmpeg.exe -y -i "brut.mts" -vn -an -scodec dvdsub -vn -an -map 0 -ignore_unknown "brutS.mkv"

:existbrutSmkv

echo off
:: Nettoyage des anciens idx et sub
if exist "brutS1.idx" del "brutS1.idx"
if exist "brutS1.sub" del "brutS1.sub"
if exist "brutS2.idx" del "brutS2.idx"
if exist "brutS2.sub" del "brutS2.sub"
if exist "brutS.idx" del "brutS.idx"
if exist "brutS.sub" del "brutS.sub"
if exist "brutSr.idx" del "brutSr.idx"
if exist "brutSr.sub" del "brutSr.sub"
if exist "brut.idx" del "brut.idx"
if exist "brut.sub" del "brut.sub"
:SEP
:: Essai 2eme piste ST normaux
mkvextract tracks brutS.mkv  1:brutS2.srt
@echo %errorlevel%
::Si = 2 (absente)Alors Essai S1

echo off
if "%errorlevel%"=="2" goto :EssaiS1

:: Verif S2 non vide
set "filemask=brutS2.sub"
for %%A in (%filemask%) do if %%~zA==0 goto :S2vide

ren "brutS2.sub" "brutS.sub"
ren "brutS2.idx" "brutS.idx"
goto :RedimvobSUB
:S2vide

del "brutS2.sub"
del "brutS2.idx" 

:EssaiS1
:: Essai 1ère piste ST malentendants
mkvextract tracks brutS.mkv  0:brutS1.srt
@echo %errorlevel%

echo off
::Si = 2 (absente)alors Pas de ST
if "%errorlevel%"=="2" goto :PasdeST

:: Verif S1 non vide
set "filemask=brutS1.sub"
for %%A in (%filemask%) do if %%~zA==0 goto :PasdeST

ren "brutS1.sub" "brutS.sub"
ren "brutS1.idx" "brutS.idx"

:RedimvobSUB

java -jar BDSup2Sub512.jar -r 1080 -d 0000 -S %car% -l fr -I %format% -X left 160 -F set -o brutSr.idx brutS.idx

ren "brutSr.idx" "brut.idx"
ren "brutSr.sub" "brut.sub"
:: Contrôle
if "%Controle%"=="0" goto :SRT

@echo Appel MPC-HC  selon Menu Lecture  Sous-titres   english  (bogue dans le Java) ATTENDRE

"C:\Program Files\MPC-HC\mpc-hc64.exe" "D:\Filmatraiter\Encours\brut.mts" /play
pause
echo on
@echo Validation sous-titrage  0 = non   1 =  oui
set STok=1
set /p STok=
echo.
@echo retenu %STok%
echo.
echo.
echo off
if "%STok%"=="0" goto :ReCorr

goto :SRT

:PasdeST
set SousTitresSUB=0
set SousTitresSRT=0
goto : V_A
:SRT
echo off

if "%SousTitresSRT%"=="1" goto :OCR
if "%SousTitresSRT%"=="0" goto :V_A
if "%SousTitresSUB%"=="1" goto :V_A

:: OCR  sur piste vobsub non vide non redimensionnée ;   brutS2.*  sinon brutS1.*
:OCR

echo off
if exist "brutS.srt" goto :V_A

del D:\Filmatraiter\Encours\SE351\brutS.sub
del D:\Filmatraiter\Encours\SE351\brutS.idx
copy brutS.sub D:\Filmatraiter\Encours\SE351\brutS.sub
copy brutS.idx D:\Filmatraiter\Encours\SE351\brutS.idx
cd D:\Filmatraiter\Encours\SE351\
@echo ATTENDRE svp, une bonne dizaine de minutes
SubtitleEdit/convert brutS.sub subrip
move brutS.srt D:\Filmatraiter\Encours\brutS.srt
cd D:\Filmatraiter\Encours\


:V_A

echo off
if "%DecoupeADM%"=="1" goto :PlanB
if "%Mode%"=="0" goto :AAC_FFmpeg

:: brutMKVadm  Conversion  en MKV avec copies directes vidéo et audio :
if exist "brut.mkv" goto :ADMok
set avidemux="C:\Program Files\Avidemux 2.6 - 64 bits\avidemux_cli.exe"
for %%f in (brut.mts) do %avidemux% --load "%%f" --run "brut.py" --save "%%f.mkv" --quit
ren "brut.mts.mkv" "brut.mkv"
:: Test erreur ADM
@echo %errorlevel%
::pause

echo off
if "%errorlevel%"=="0" goto :ADMok

:ErreurADM
del "brut.mkv"
set Mode=0
goto :AAC_FFmpeg 

:ADMok

::  Conversion  en MKV avec copie vidéo et conversion audio en AAC:

echo off
if exist "brutAv.mkv" goto :MUX

if "%AAC%"=="0" goto :MUX
if "%AAC%"=="1" goto :ADM_Audio

:ADM_Audio
set avidemux="C:\Program Files\Avidemux 2.6 - 64 bits\avidemux_cli.exe"
for %%f in (brut.mts) do %avidemux% --load "%%f" --run "brut_adm_AAC.py" --save "%%f.mkv" --quit
ren "brut.mts.mkv" "brutAv.mkv"
:: Test erreur ADM
::@echo %errorlevel%
::pause

echo off
if "%errorlevel%"== "0" goto :MUX
goto :ErreurADM_A

:AAC_FFmpeg

echo off
if exist "brutA.mkv" goto MUX

if "%AAC%"=="0" goto :MUX
if "%AAC%"=="1" goto :Audio

:Audio
ffmpeg -i "brut.mts" -map 0:1 -map 0:2 -map 0:3 -c:a aac -b:a 128k "brutA.mkv"

:MUX
:: MKVmerge selon les 16 combinaisons : ADM AAC SUB SRT, rappel pour contrôle. 
echo on
@echo segments=%segments%
@echo Mode=%Mode%
@echo Audio=%AAC%
@echo SUB=%SousTitresSUB%
@echo SRT=%SousTitresSRT%
:MUXpar
set /a MUXpar=1000*%Mode%+100*%AAC%+10*%SousTitresSUB%+%SousTitresSRT%
echo Mux final %MUXpar%
pause

goto :%MUXpar%

::FFmpeg
:0
mkvmerge.exe --output "nett_0000.mkv" "brut.mts" --split "parts:%segments%"
goto :Validation
:1
mkvmerge.exe --output "nett_0001.mkv" "brut.mts" "brutS.srt" --split "parts:%segments%"
goto :Validation
:10
mkvmerge.exe --output "nett_0010.mkv" "brut.mts" "brut.idx" --split "parts:%segments%"
goto :Validation
:11
mkvmerge.exe --output "nett_0011.mkv" "brut.mts" "brut.idx" "brutS.srt" --split "parts:%segments%"
goto :Validation

::FFmpeg_AAC_AAC
:100
mkvmerge.exe --output "nett_0100.mkv" "brut.mts" --no-video "brutA.mkv" --split "parts:%segments%"
goto :Validation
:101
mkvmerge.exe --output "nett_0101.mkv" "brut.mts" --no-video "brutA.mkv" "brutS.srt" --split "parts:%segments%"
goto :Validation
:110
mkvmerge.exe --output "nett_0110.mkv" "brut.mts" --no-video "brutA.mkv" "brut.idx"  --split "parts:%segments%"
goto :Validation
:111
mkvmerge.exe --output "nett_0111.mkv" "brut.mts" --no-video "brutA.mkv" "brut.idx" "brutS.srt" --split "parts:%segments%"
goto :Validation

::ADM
:1000
mkvmerge.exe --output "nett_1000.mkv" "brut.mkv" --split "parts:%segments%"
goto :Validation_ADM
:1001
mkvmerge.exe --output "nett_1001.mkv" "brut.mkv" "brutS.srt" --split "parts:%segments%"
goto :Validation_ADM
:1010
mkvmerge.exe --output "nett_1010.mkv" "brut.mkv" "brut.idx" --split "parts:%segments%"
goto :Validation_ADM
:1011
mkvmerge.exe --output "nett_1011.mkv" "brut.mkv" "brut.idx" "brutS.srt" --split "parts:%segments%"
goto :Validation_ADM

::ADM_AAC
:1100
mkvmerge.exe --output "nett_1100.mkv" "brut.mkv" --no-video "brutAv.mkv" --split "parts:%segments%"
goto :Validation_ADM
:1101
mkvmerge.exe --output "nett_1101.mkv" "brut.mkv" --no-video "brutAv.mkv" "brutS.srt" --split "parts:%segments%"
goto :Validation_ADM
:1110
mkvmerge.exe --output "nett_1110.mkv" "brut.mkv" --no-video "brutAv.mkv" "brut.idx"  --split "parts:%segments%"
goto :Validation_ADM
:1111
mkvmerge.exe --output "nett_1111.mkv" "brut.mkv" --no-video "brutAv.mkv" "brut.idx" "brutS.srt" --split "parts:%segments%"
goto :Validation_ADM

:Validation_ADM
@echo En principe c'est tout bon et fait avec Avidemux
pause
exit

:Validation
@echo Fichier satisfaisant 1 = oui  0 = non
set OK=1
set /p OK=
echo off
if "%OK%" == "1" exit

:PlanB
:: Suppose au moins que la sauvegarde du projet ADM avec nettoyage "nett_ADM.py" a été faite avec le GUI en son temps.
:: Alors, V et A  seront nettoyés par ADM pour supprimer les commuts de pub, en ligne de commande si pas déjà fait avec le GUI
:: et SUB et SRT seront nettoyés par FFmpeg avec %segments%, puis mux final V + A + S avec MKVToolNix sans %segments%

:: Découpe ADM et Conversion en MKV avec copies directes vidéo et copie ou conversion audio selon configuration ADM :

echo off
if exist "nettADM.mkv" goto :MUXpar
set avidemux="C:\Program Files\Avidemux 2.6 - 64 bits\avidemux_cli.exe"
for %%f in (brutnettADM.mkv.mts) do %avidemux% --load "%%f" --run "nett_ADM.py" --save "%%f.mkv" --quit

pause


ren "brutnettADM.mkv.mts.mkv" "nettADM.mkv"
:: Test erreur ADM
@echo %errorlevel%
::pause

echo off
if "%errorlevel%"=="0" goto :MUXpar

@echo Traitement_correct_impossible
pause
exit

:: nettoyage ST

:MUXpar
set /a muxST=10*%SousTitresSUB%+%SousTitresSRT%+2

@echo %muxST%
::pause
goto :%muxST%

:2

pause
exit
:3
mkvmerge.exe  --output "brutx_subsrt.mkv" --no-audio "brut.mts" "brutS.srt" --split parts:"%segments%"
::pause

goto :remux
:12
mkvmerge.exe  --output "brutx_subsrt.mkv" --no-audio "brut.mts" "brut.idx" --split parts:"%segments%"
::pause
goto :remux
:13

mkvmerge.exe  --output "brutx_subsrt.mkv" --no-audio "brut.mts" "brut.idx" "brutS.srt" --split parts:"%segments%"
::pause

:remux
mkvmerge.exe  --output "nettADMst.mkv" "nettADM.mkv" --no-video "brutx_subsrt.mkv"
pause
exit

TRAITEMENT

A.
Visionner le *.mts de la clé avec MPC-HC pour vérifier langues et sous-titres et décider de ce que l'on veut conserver en matière de langues et sous-titres. Utiliser les menus "Fichier" > "Propriétés" > Media info et "Lecture"
Selon les chaînes, on trouvera 3 ou 4 pistes audio (codage AC3 ou MPEG audio) et 2 ou 3 pistes de sous-titres "dvbsub", la 1ère est généralement qualifiée de "hearing impaired"
Selon les films, la 1ère piste audio est la VF, la 2ème piste audio est la VO ou la VF, la 3ème la VF avec audio-description éventuellement et les sous-titres peuvent être vides.

B.
- Détruire (ou les déplacer dans un autre répertoire) tous les fichiers créés lors de la session antérieure
- Copier le fichier *.mts depuis la clé dans le dossier de travail dédié où l'on a mis les outils et les raccourcis
- Le renommer "brut.mts"
- Avant de lancer "ToutAuto_v20.bat" (c'est un truc de bleusaille, merci pour les suggestions d'améliorations), savoir que:

Le nettoyage utilise le fichier texte "segments.txt" contenant une ligne avec les sections selon le format MKVToolNix :.
hh:mm:ss.nnn-hh:mm:ss.nnn,+hh:mm:ss.nnn-hh:mm:ss.nnn,+....
Celui-ci peut-être créé en cours de route automatiquement avec Avidemux ou manuellement, alors après repérage à l'avance de différentes manières au choix (VidePub, MPC-HC, etc.) et formattage.

Le début du programme est interactif, à chaque étape, un choix est proposé par défaut, validé par "Enter" ou à modifier par la valeur désirée puis "Enter".
On a un certain droit au remord pour les modifications de paramètres, mais les fichiers déjà créés étant conservés, on gagne du temps pour les options modifiées quand on repart au début.
Les choix sont sommairement documentés.
Le redimensionnement des sous titres dépend des chaînes, j'y reviendrai : soit 0.5,0.5 soit 1,1
Déjà, en principe :
TF1 TMC F4 NT1 Chérie "-S 0.5,0.5"
F2 F3 C8 6ter Arte "-S 1,1"
Le repositionnement dépend du format de présentation du film. En "Cinemascope", choisir normalement 2.4, mais avec 1.8, les sous-titres sont sous l'image, ça peut être mieux si le lecteur l'accepte. Avec le format 1.8 (16:9), un offset de 40 peut-être utile : 1.8,40.
D'ailleurs cette affaire de sous-titres est pour moi une bouteille à encre, la présentation dépend du lecteur, j'ai donc implémenté un contrôle visuel par MPC-HC, dont il convient d'éditer le chemin d'installation dans le BAT et ensuite de le préconfigurer ainsi, après qu'il ait ouvert "brut.mts" :
Menu "Lecture" > Piste de sous-titres > Options > Divers : Cocher les deux premières cases "Préférer ..."
En tout état de cause, au coup par coup :
Menu "Lecture" > Piste de sous-titres > "English" ("English" à cause d'une bogue dans le BDsup2Sub...)
Si le résultat ne plaît pas, on peut reboucler sur les paramètres, l'exécution du "Java" dure peu de temps.
Il conviendra de se noter à l'usage à part personnellement pour ses lecteurs les réglages qui vont bien. par chaîne et selon le format du film.
Les traitements "longs" (ne pas s'inquiéter quand le contenu de la fenêtre n'évolue pas) sont l'indexation Avidemux, en général quelques minutes, parfois peu de dizaines, les transcodages Audio et surtout la création du SRT quand demandés (quelques dizaines de minutes sur un PC portable basique).
A la fin, une validation du fichier final est demandée pour traiter d'une troisième manière avec le GUI dans le cas où aucun des deux modes de traitement initiaux proposés ne donnerait un résultat correct. Un accès direct anticipé à ce 3ème mode est aussi possible.
Une fois obtenu le fichier nettoyé avec les options choisies, on peut vouloir encore lancer le GUI de MKVToolnix pour un re-multiplexage totalement personnalisé, avec pistes par défaut, forcées et d'éventuelles corrections de synchronisation entre autres.

Tous commentaires, observations, remarques, suggestions et autres retours sont bienvenus, merci :)
Répondre