Découper un fichier audio/vidéo sans le recompresser/réencoder

closeCet article a été publié il y a 6 ans 8 mois 20 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Aujourd’hui, et au risque de me faire taper sur les doigts, je vais vous montrer quelque chose de bien illégal, que je ne recommande pas, mais qui va me permettre de vous démontrer un peu plus la puissance de ffmpeg en tant que couteau suisse du multimédia. Quand l’offre légale ne permet pas de profiter de la musique dans des conditions acceptables, les bidouilleurs prennent la relève !

Vous avez certainement déjà croisé des compilations ou des albums complets sur YouTube, qui se matérialisent donc sous la forme de vidéos d’une ou deux heures voire plus, avec en description une playlist avec des timecodes. Dernièrement, après avoir écouté l’une d’entre elles, j’ai été frustré de ne pouvoir trouver l’intégralité des morceaux de cette compilation de manière légale en achat à l’unité (principalement Amazon pour moi, n’ayant rien d’autre sous la main) : certains ne sont dispos qu’en streaming, très rares ceux qui sont sur Bandcamp -ce qui est quand même cool-, d’autres sont à acheter physiquement mais à importer depuis d’autres pays pour un surcoût pas raisonnable du tout et qui ne rentrera pas dans les poches de l’artiste de toute façon. Du coup l’idée a germé dans mon esprit de faire mon gros pirate. Après tout, c’est déjà plus ou moins ce que je fais pour regarder YouTube dans mon salon, alors…

NB : par la suite l’URL de la vidéo a été volontairement modifiée. Je rappelle en outre que ce que je présente est la plupart du temps illégal, d’autant que ces compilations sont réalisées sans l’accord des artistes. Donc quand c’est possible, achetez directement à la source, c’est bien plus sympa pour eux, et BandCamp est super cool pour ça. Aussi, si vous pêchez un peu, je vous invite à relire les termes expliqués sur le multimédia pour mieux comprendre certains points de vocabulaire.

Première étape : récupération de l’audio dans le bon format

Malheureusement, l’audio est comme trop souvent le parent pauvre dans l’affaire : si YouTube propose 4K, 360, VR et tout le toutim pour la vidéo, l’audio, au max, tient à du 192kbps au format m4a inséré dans un conteneur MP4 « legacy » en 720p, ou 160kbps en Opus pour les autres via DASH. C’est pas folichon par rapport à du FLAC (j’aurai peut-être l’occasion d’y revenir dans un autre article) ou du MP3 320kbps, mais j’ai décidé de me tourner vers Opus du coup. Pour info, Opus est un codec libre de compression et diffusion audio, qui peut être utilisé aussi bien en fichier qu’en streaming live (notamment utilisé sur Mumble et donc sur Youtube pour les vidéos et les lives).

YouTube introduit une subtilité cependant : le flux est récupéré dans un conteneur Webm (simplification du MKV par Google pour embarquer de la vidéo VP8/9, concurrent du H264, utilisé notamment sur Youtube, et pour le Web de manière générale, d’où son nom). Pas vraiment ce qu’on recherche pour lancer un programme de gestion et de lecture de bibliothèque musicale.

On y va quand même :

Je me tourne donc vers le code 251 pour récupérer le flux Opus dans un conteneur Webm :

J’ai le donc le fichier Webm, je voudrais que ça soit maintenant un fichier exploitable par des lecteurs de musique (Amarok, Clementine, RythmBox, Banshee), mais je veux éviter de recompresser au passage, ce qui dégraderait la qualité. ffmpeg sait faire, c’est cool :

Deux petites choses à retenir ici : par principe, je demande à retirer tout flux vidéo qui pourrait se trouver là (-vn), et je dis à ffmpeg de ne pas recompresser/réencoder le flux (-acodec copy). Simple, efficace, et on a notre flux exploitable. Au passage on gagne 1Mo à passer à un conteneur audio/vidéo à audio pur (ogg en l’occurrence qui avait d’abord été créé pour embarquer du Vorbis, un autre codec audio qu’on comparait au MP3 à sa création).

Deuxième étape : les coups de ciseaux logiciel

Bien, maintenant on veut un fichier par morceau, ce qui est bien plus pratique, si par exemple comme moi vous laissez l’autoradio de la voiture en mode shuffle, ce qui peut conduire à 4h de route sans entendre deux fois le même artiste ou le même morceau; et ça c’est cool.

Dans mon cas j’ai les timecodes, mais si vous ne les avez pas, vous pouvez toujours utiliser Audacity pour visualiser le son du fichier et déterminer où couper, l’ouverture prend du temps (un peu plus d’une minute dans mon cas), mais voilà le résultat :

Alors oui, certains me diront qu’on pourrait potentiellement tout faire avec Audacity, je ne sais pas s’il permet d’éviter de recompresser, sachant que techniquement il « importe » le fichier quand on l’ouvre pour pouvoir le manipuler (et donc recompresse à l’exportation). Et puis c’est pas assez geek, mince. Bref, ici, vous avez compris que je vais essayer d’extraire le morceau qui semble un peu plus calme que les autres (moins saturé).

Le morceau commence à 26:48 et termine à 33:21, ce qui donne un morceau de 6 minutes 33 secondes. Ce sont ces éléments que l’on va passer à ffmpeg pour faire le taf :

On passe donc la position de départ (-ss), la durée du morceau (-t) et comme tout à l’heure on indique de ne pas réencoder (-acodec copy). A noter que j’indique un .0 à la fin de la seconde, en effet, lors d’une première mesure avec Audacity j’étais plutôt sur une base de 6 minutes 32 secondes et 5 dixièmes. J’aurai pu donc indiquer une durée de 00:06:32.5.

L’opération est très rapide, et si on vérifie le fichier de sortie :

Une petite passe dans Audacity pour confirmer la bonne opération :

Et voilà. Ne reste plus qu’à faire la même avec les autres morceaux, à rajouter les noms et pourquoi pas des tags, convertir dans un autre format si vous ne pouvez pas lire de l’Opus dans votre voiture par exemple (préférez un bitrate assez élevé en destination pour ne pas trop distordre les morceaux et perdre en qualité, on part d’un Opus 160kbps en VBR tout de même).

Attention, on se rend compte que le morceau final ne fait que 6:32 et pas 6:33 comme je l’ai indiqué. Ça peut arriver (j’ai déjà eu l’occasion d’avoir les détails technique du pourquoi, j’ai pas tout compris et c’était en anglais), si vous avez également ce genre d’écart et qu’il vous manque quelques notes à la fin, n’hésitez pas à ajuster avec les dixièmes de secondes voire rajouter une seconde, étant donné la vitesse du traitement, ça ne sera pas long à refaire.

Un outil vraiment cool, et multi-plateforme en plus

En effet, même les windowsiens peuvent expérimenter ce que je présente aujourd’hui puisqu’il existe une version compilée pour eux. C’est d’ailleurs un outil recommandé si vous utilisez également Youtube-dl aussi sous Windows…

Cette trousse à outils est d’ailleurs au cœur d’autres logiciels plus ou moins connus de nos jours. J’ai évoqué en introduction l’aspect couteau suisse, ce n’est pas pour rien, et c’est une expression que j’ai déjà pu employer à propos de VLC Media Player, qui utilise la bibliothèque comme base pour son support des différents formats existants de vidéo et d’audio. On le retrouve aussi dans différents outils de conversion vidéo, soit de manière explicite, soit un peu plus masqué (ce qui est souvent le cas sous Windows malheureusement). L’utilitaire Youtube Downloader HD l’exploite lorsqu’il a besoin de fusionner des flux DASH si vous avez sélectionné une résolution type Full HD/4K.

Bref, c’est un très bon outil qu’il faut garder sous la main en cas de besoin (surtout sa documentation), la preuve, ici j’ai présenté comment découper, mais on peut aussi fusionner :P.

1 Commentaire
Le plus ancien
Le plus récent
Commentaires en ligne
Afficher tous les commentaires
mmu_man
mmu_man
30/07/2017 18:34

Pourquoi faudra-t-il que ce soit forcément illégal ?

https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000033219336&cidTexte=LEGITEXT000006069414&dateTexte=20170730
 » l’auteur ne peut interdire… » 😉