Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

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

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