#1 Le 05/09/2016, à 16:00
- Djem
Script extraction/conversion sous titres
Bonjour !
Je n'ai jamais fait de script, soyez indulgent ^^.
Je voudrait extraire les sous-titres de fichiers mkv se trouvant dans le même répertoire. (les piste de sous-titres on le même numéro) et les convertir.
Extraire les sous titres :
mkvextract tracks mavideo.mkv 4:soustitres.srt
Et ensuite convertir les sous-titres du srt en vtt :
ffmpeg -i fichier.srt -c:s vtt fichier.vtt
Merci !
Hors ligne
#2 Le 05/09/2016, à 17:11
- Compte anonymisé
Re : Script extraction/conversion sous titres
Bonjour,
je pense qu'une boucle for devrait faire l'affaire :
for a in *.mkv
do mkvextract tracks "$a" 4:"${a%.*}".srt
ffmpeg -i "${a%.*}".srt -c:s vtt "${a%.*}".vtt
done
si tu ne veux pas conserver le fichier .srt, tu peux rajouter un rm "${a%.*}".srt avant le done.
#3 Le 05/09/2016, à 18:07
- Djem
Re : Script extraction/conversion sous titres
Merci.
Est-ce que je doit remplacer seulement le *.mkv par monfichier.mkv ou je laisse les autres * tel quel ?
Hors ligne
#4 Le 05/09/2016, à 18:10
- Compte anonymisé
Re : Script extraction/conversion sous titres
non le script tel quel va traiter tout tes fichiers mkv dans le dossier courant
#5 Le 05/09/2016, à 18:10
- Djem
Re : Script extraction/conversion sous titres
Les * qui définissent les nom des fichier crée. Enfin je pense.
Hors ligne
#6 Le 05/09/2016, à 18:13
- Djem
Re : Script extraction/conversion sous titres
Ah d'accord ! merci
Hors ligne
#7 Le 05/09/2016, à 18:15
- Compte anonymisé
Re : Script extraction/conversion sous titres
je sais pas,
si tu as un dossier avec
fichier 1.mkv
fichier 2.mkv
il va faire
mkvextract tracks "fichier 1.mkv" 4:"fichier 1".srt
ffmpeg -i "fichier 1".srt -c:s vtt "fichier 1".vtt
mkvextract tracks "fichier 2.mkv" 4:"fichier 2".srt
ffmpeg -i "fichier 2".srt -c:s vtt "fichier 2".vtt
#8 Le 05/09/2016, à 18:17
- Djem
Re : Script extraction/conversion sous titres
Oui je vois, je vais tester ça de suite !
Hors ligne
#9 Le 05/09/2016, à 18:37
- Djem
Re : Script extraction/conversion sous titres
J'ai l'erreur
Unknown encoder 'vtt'
et le code qu'il y a avant :
for a in *.mkv; do mkvextract tracks "$a" 4:"${a%.*}".srt; ffmpeg -i "${a%.*}".srt -c:s vtt "${a%.*}".vtt; done
Extraction de la piste 4 avec le codec 'S_TEXT/UTF8' dans le fichier 'fichier.srt'. Format de conteneur : SRT text subtitles
Progression : 100%
ffmpeg version 2.7.6-0ubuntu0.15.10.1 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.2.1 (Ubuntu 5.2.1-22ubuntu2) 20151010
configuration: --prefix=/usr --extra-version=0ubuntu0.15.10.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-frei0r --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-openal --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libxvid --enable-libzvbi --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-libssh --enable-libsoxr --enable-libx264 --enable-libopencv --enable-libx265
libavutil 54. 27.100 / 54. 27.100
libavcodec 56. 41.100 / 56. 41.100
libavformat 56. 36.100 / 56. 36.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 16.101 / 5. 16.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, srt, from 'fichier.srt':
Duration: N/A, bitrate: N/A
Stream #0:0: Subtitle: subrip
Unknown encoder 'vtt'
Je n'ai pas la bonne version de ffmpeg ? car quand je lance un apt-get install ffmpeg j'ai un
ffmpeg est déjà la plus récente version disponible.
0 mis à jour, 0 nouvellement installés, 0 à enlever et 8 non mis à jour.
Hors ligne
#10 Le 05/09/2016, à 19:29
- Compte anonymisé
Re : Script extraction/conversion sous titres
ça j'en sais rien
#11 Le 05/09/2016, à 20:06
- melixgaro
Re : Script extraction/conversion sous titres
salut,
Cette commande devrait te lister les codecs sous-titres connus par ta version de ffmpeg. Les lignes avec un D dans la première colonne indique que le codec sert à décoder, les lignes avec un E dans la deuxième colonne indique que le codec sert à coder.
ffmpeg -codecs 2> /dev/null | grep -E "^ *..S"
Pour vtt, j'ai ça
DES... webvtt WebVTT subtitle
Donc le codec 'webvtt' sert à coder et décoder le vtt. Avec
-c:s webvtt
ça devrait passer
Linux depuis ~2007. Xubuntu seulement.
Hors ligne
#12 Le 07/09/2016, à 13:42
- Djem
Re : Script extraction/conversion sous titres
Merci, ça marche.
Du coup je me suis inspiré de la boucle for pour extraire le fichier ac3 et le convertir en ogg :
for a in *.mkv
do mkvextract tracks "$a" 4:"${a%.*}".srt
ffmpeg -i "${a%.*}".srt -c:s webvtt "${a%.*}".vtt
mkvextract tracks "$a" 1:"${a%.*}".ac3
ffmpeg -i "${a%.*}".ac3 -c:s ogg "${a%.*}".ogg
done
Mais du coup je cherche aussi a "muxer" les fichiers ogg aux fichiers mkv, j'ai donc essayer ça :
mkvmerge -o fichier.mkv fichier.ogg
Et ça a tout simplement supprimer toutes les pistes et il ne me reste plus que la piste ogg dans le fichier... Vous connaissez la commande mkvmerge pour ajouter une piste a un mkv ?
Hors ligne
#13 Le 08/09/2016, à 08:19
- Djem
Re : Script extraction/conversion sous titres
J'ai trouvé ça pour muxer une piste :
mkvmerge -o fichier.mkv -A fichier.mkv fichier.ogg
Mais ça crée un nouveau fichier mkv.
J'ai essayer de l'integrer a la boucle for malgré que je préfererais que ça ne crée pas de nouveau fichier. Mais ça ne marche pas :
for a in *.mkv
do mkvextract tracks "$a" 2:"${a%.*}".srt
ffmpeg -i "${a%.*}".srt -c:s webvtt "${a%.*}".vtt
mkvextract tracks "$a" 1:"${a%.*}".ac3
ffmpeg -i "${a%.*}".ac3 -c:s ogg "${a%.*}".ogg
mkvmerge -o "${a%.*}".mkv -A "${a%.*}".mkv "${a%.*}".ogg
done
Vous auriez une solution ?
Hors ligne
#14 Le 08/09/2016, à 17:33
- Compte anonymisé
Re : Script extraction/conversion sous titres
tu rajoutes un truc comme ça :
mv -f nouveaufichier.mkv ancienfichier.mkv
par contre on peut rajouter une variable pour rendre le code un peu plus propre :
for a in *.mkv
do b=${a%.*}
mkvextract tracks "$a" 2:"$b".srt
ffmpeg -i "$b".srt -c:s webvtt "$b".vtt
mkvextract tracks "$a" 1:"$b".ac3
ffmpeg -i "$b".ac3 -c:s ogg "$b".ogg
mkvmerge -o "$b"2.mkv -A "$b".mkv "$b".ogg
mv "$b"2.mkv "$b".mkv
done
#15 Le 08/09/2016, à 17:34
- Djem
Re : Script extraction/conversion sous titres
Merci ! je vais tester ça !
Hors ligne