Konk_Gwin

Utiliser youtube-dl (extraction audio et incrustation de sous-titres)

Catégories:
Citation finale de:
Logiciels évoqués:

youtube-dl est un logiciel libre en ligne de commande qui tourne sous gnu/linux, iOS, Windows, etc. Il permet de télécharger des vidéos en provenance de youtube et de plein d’autres sites.
Il utilise de nombreux paramètres afin, par exemple, de ne pas être restreint par une géolocalisation, de charger l’ensemble ou un partie d’une playlist, etc. Il permet aussi de continuer un téléchargement interrompu et dispose de plein d’autres possibilités intéressantes.
Je vais décrire ici les paramétrages qui me semblent les plus courants.

Le billet va prendre comme exemple cette présentation TED effectuée par la data scientist Cathy O’Neil.

Voir quels sont les formats possibles de la vidéo : l’option - F

Pour connaître les formats possibles au téléchargement, j’utilise l’option -F et je fournis l’adresse de la page ou le lien de la vidéo.

youtube-dl -F https://vimeo.com/234445331

On obtient alors une liste des formats vidéos et audios disponibles au téléchargement.

Télécharger une vidéo d’un format donné : l’option - f

Dans le cadre de cette vidéo, je souhaite obtenir un format mp4 pas trop gros, je choisis donc, parmi tous les formats listés par l’option -F, de télécharger au format http-360p. Je tape alors :

youtube-dl -f http-360p https://vimeo.com/234445331

Obtenir la bande son d’une vidéo : l’option - x

Imaginons maintenant que je ne souhaite que la bande son, mais pas la partie vidéo. Or sur la liste des formats disponibles, le format du son n’est pas très explicite quand je tape l’option -F.

Je vais reprendre la même vidéo, mais postée sur Youtube, et regarder ses formats :

youtube-dl -F https://www.youtube.com/watch?v=Efa0dyIy22A

Je choisis le format qui me permet d’obtenir une bande son au format opus (le successeur du format ogg) et demande son extraction (-x) mais ne souhaite pas conserver la vidéo initiale.

youtube-dl -x -f 251 https://www.youtube.com/watch?v=Efa0dyIy22A

Obtenir une vidéo avec un sous-titre : les options - - list- subs, - - sub- lang, - - sub- format

La vidéo précédente est en anglais. Je vais regarder si la vidéo a des sous-titres de disponible :

youtube-dl --list-subs https://www.youtube.com/watch?v=Efa0dyIy22A

Malheureusement non, la réponse finale est en effet :

Efa0dyIy22A has no subtitles

Je vais regarder si la vidéo est postée sur un autre site avec des sous-titres disponible. Voyons ce que ça donne :

youtube-dl --list-subs https://www.ted.com/talks/cathy_o_neil_the_era_of_blind_faith_in_big_data_must_end/discussion?_lrsc=1ca274ce-8a81-4a41-800b-bdafca900197

Et cette fois, j’ai plein de langues possibles (dont le français fr, l’anglais en ou encore le portugais parlé au Brésil pt-BR) avec différents formats : vtt, ttml, srv3, srv2, srv1.

Il s’agit de choisir le format qui convient le mieux pour votre logiciel de lecture vidéo. Pas de chance pour moi, par défaut mon logiciel utilise le format srt. Il me faudra faire une transcription.

Je décide de télécharger le format vtt pour la traduction française. Cela donne :

youtube-dl --sub-format vtt --sub-lang fr https://www.ted.com/talks/cathy_o_neil_the_era_of_blind_faith_in_big_data_must_end/discussion?_lrsc=1ca274ce-8a81-4a41-800b-bdafca900197

Oups! ça ne marche pas comme je le voulais, il me crée une vidéo en format mkv avec le sous-titre incrusté dedans.

Oh j’avais oublié de lui dire que je voulais un format mp4 pas trop gros. En utilisant l’option -F je vois que le format vidéo qui me convient est -f 18.

Et je veux écrire un sous-titre, il me faut l’option --write-sub pour ce faire.

Et je veux qu’il me le transforme en srt. Il me faut l’option --convert-subs srt. Ce qui donne :

youtube-dl --sub-format vtt --sub-lang fr --convert-subs srt --write-sub -f 18 https://www.ted.com/talks/cathy_o_neil_the_era_of_blind_faith_in_big_data_must_end/discussion?_lrsc=1ca274ce-8a81-4a41-800b-bdafca900197

Le résultat est presque parfait. Il reste une chose à faire si je veux lire automatiquement mon sous-titre quand je lance la vidéo. En effet, le sous-titre a presque le même nom que la video mais au lieu d’être suffixé par .srt il est suffixé par .fr.srt (en effet avec youtube-dl je peux télécharger autant de langues de sous-titre que je veux et les choisir ensuite dans le logiciel de visionnage vlc, par exemple).

Comme je veux que le sous-titre se déclenche automatiquement, je renomme le fichier de sous-titres en enlevant le .fr. J’obtiens maintenant le même nom pour la vidéo et le sous-titre, suffixé pour l’une par .mp4 et pour l’autre par .srt.

Je peux maintenant cliquer sur la vidéo ce qui lance mon logiciel de visionnage (mplayer pour ma part) et automatiquement prend en compte mes sous-titres.

Que faire si l’affichage des accents passe mal avec les sous-titres ?

Patatras, les accents sont mal pris en compte, je vois des ? à la place des é par exemple. Je vérifie les sous-titres. Le format vtt est par principe en UTF8, le srt est en UTF8 aussi. C’est donc mon logiciel de visionnage mplayer qui est en question.

Je consulte son manuel (je suis sous gnu/linux) :

man mplayer

Je constate qu’il faut préciser à mplayer d’utiliser UTF8 pour la prise en charge des accents dans les sous-titres. Ce qui donne :

mplayer -utf8 maVideo.mp4

Tout est rentré dans l’ordre. Il me suffit ensuite d’ajouter cette option dans le lanceur mplayer de mon gestionnaire de fichiers pour que je n’ai plus à y penser.

Incruster le sous-titre dans la vidéo avec - - embed- subs

youtube-dl permet l’incrustation des sous-titres avec l’option --embed-subs.

Mais d’abord, pour savoir quel format vidéo supporte quel format de sous-titre, je consulte Wikipedia.

On voit que le format mp4 supporte aussi bien les sous-titres en vtt qu’en srt. Donc inutile de traduire le vtt en srt quand je lance youtube-dl.

En revanche il me faut garder --write-sub si je veux que les sous-titres s’écrivent quelque part.

Je tape alors :

youtube-dl --sub-format vtt --sub-lang fr --write-sub --embed-subs -f 18 https://www.ted.com/talks/cathy_o_neil_the_era_of_blind_faith_in_big_data_must_end/discussion?_lrsc=1ca274ce-8a81-4a41-800b-bdafca900197

youtube-dl va successivement :

  • télécharger et écrire le sous-titre en français au format vtt,
  • télécharger et écrire la vidéo au format mp4,
  • intégrer le sous-titre dans la vidéo,
  • supprimer le fichier de sous-titre au format vtt.

Maintenant la vidéo embarque les sous-titres sans problème. On n’a même plus à demander à mplayer de prendre en charge l’UTF8 pour bien gérer les accents. La simple commande mplayer maVideo.mp4 suffit.

Parfait.


———- La citation :

Les sources de la nuit sont baignées de lumière.
C’est un fleuve où constamment
boivent des chevaux et des juments de pierre
en hennissant.

Tant de siècles de dur labeur
aboutiront-ils enfin à la fatigue qui amollit les pierres ?
Tant de larmes, tant de sueur,
justifieront-ils le sommeil sur la digue ?

Robert Desnos, « les sources de la nuit » (extrait)


Menu