get-tracks.sh
est un script qui extrait des morceaux de musique depuis un fichier audio. À partir d’un fichier audio (CD, livre audio, un mix quelconque…) et de la liste de lecture, retrouvez tous vos morceaux dans des fichiers séparés !
Objectif
Disons que vous ayez :
- un fichier audio contenant plusieurs morceaux de musique (comme un CD, un mix téléchargé sur le net ou même un livre audio dont vous aimeriez extraire les chapitres) ;
- la liste des plages audio et leur horodatage (quand chaque morceau démarre).
À partir de ces deux informations, vous pouvez extraire facilement vos plages ! ffmpeg fait très bien le travail, mais il lui manque une interface simple pour utilisateur, c’est exactement ce que fait get-tracks.sh
.
Usage
Vous avez votre fichier audio, disons doom-eternal.opus
, et la liste des morceaux de musique dans un fichier texte (doom-eternal.txt). Ce fichier ressemble à ceci :
0:00 DOOM Eternal
4:48 Hell on Earth
9:29 Deag Nilox - First Priest Death
10:14 Barging In
12:32 Demonic Corruption
À partir de ça, les morceaux sont extraits :
$ get-tracks.sh doom-eternal.opus doom-eternal.txt
$ ls
01 - DOOM Eternal.opus
02 - Hell on Earth.opus
03 - Deag Nilox - First Priest Death.opus
04 - Barging In.opus
05 - Demonic Corruption.opus
Configuration
Le comportement du script peut changer via quelques variables d’environnement.
Par exemple, si vous ne voulez pas le numéro du morceau dans le nom de fichier :
$ NONUMBER=1 get-tracks.sh doom-eternal.opus doom-eternal.txt
# Fichiers produits :
# DOOM Eternal.opus
# Hell on Earth.opus
# ...
Si vous souhaitez les numéros, mais que vous voulez changer le séparateur (qui est par défaut -
) :
$ SEPARATOR=". " get-tracks.sh doom-eternal.opus doom-eternal.txt
# Fichiers produits :
# 01. DOOM Eternal.opus
# 02. Hell on Earth.opus
# ...
D’autres options sont possibles. Par exemple, il est possible de changer le format des fichiers générés, si vous préférez avoir des mp3
plutôt que opus
(format libre avec une bonne compression). Allez voir la page du projet pour plus d’informations.
À l’intérieur
Ce simple script est écrit en sh
: pas de basheries ou zsheries. Il a été testé sur Linux (Ubuntu et Alpine) et OpenBSD.
get-tracks.sh
prend en compte des erreurs courantes de typographie dans l’horodatage des pistes, telles que l’on peut en trouver dans des commentaires en ligne. Par exemple, un commentaire en ligne peut nommer des plages en incluant des caractères qui ne sont pas acceptables pour des noms de fichier comme le caractère /
, ou des caractères non affichables.
Contraintes de développement
Je me suis efforcé à produire un outil :
- avec des technos très répandues (
sh
,sed
,awk
,xxd
,ffmpeg
) ; - avec le moins de complexité possible (pas de langage dynamique « simple » codé en plus d’un million de lignes de code comme Python) ;
- le plus simple possible à maintenir (chose réussie, en n’utilisant que des langages quasi gravés dans le marbre).
Le programme iconv
n’est pas appelé, la suppression ou la modification des caractères UTF-8 non acceptables est faite à la main via xxd
, sed
et awk
. Cela permet de ne pas dépendre de cet outil qui, au fond, ne nous est pas indispensable.
Pourquoi ?
Pourquoi avoir fait cet outil avec ces contraintes ? Pour voir où on pouvait aller avec des outils de base du système. J’ai utilisé des programmes qui sont sur nos ordinateurs depuis des décennies et qui répondent pourtant, encore et toujours, à des besoins actuels.
Je pense que le code peut servir d’exemple pour des développeurs débutants : il est très simple (en sh
, awk
, sed
, et xxd
), il y a un peu de gestion d’erreurs et je bidouille à la main du code UTF-8 (suppression des caractères qui nous gênent).
J’utilise régulièrement ce script, et je pense qu’il était temps que je le diffuse. Selon moi il peut servir à un paquet de gens.
Si vous voyez des améliorations possibles, n’hésitez pas à m’en faire part ou à contribuer ! Le code peut être compris même par des novices.
Aller plus loin
- Page des sorties (65 clics)
- Dépôt de code (120 clics)
# Recodage
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 10.
J'ai l'impression que ça recode l'audio, c'est à dire que s'il est compressé (MP3, Vorbis, Opus, AAC…), ça le décompresse, ça découpe, puis ça recompresse dans le format choisi. Je me trompe ?
Pour info, il existe des outils pour couper des fichiers audio sans les recoder, comme
mp3splt
pour les formats MP3, Vorbis et FLAC. Ffmpeg peut faire de même en utilisant le pseudo-codeccopy
, mais je ne sais pas si ça fonctionne avec un découpage.[^] # Re: Recodage
Posté par karchnu . Évalué à 4.
Oui, il est possible qu'il ré-encode pour le découpage, et oui on peut utiliser
copy
. Je ne m'étais pas trop posé la question jusqu'à présent. Peut-être queffmpeg
se met automatiquement encopy
quand les fichiers d'entrée et de sortie sont dans le même format. Je n'ai jamais entendu de différence de qualité.En tout cas, je préférerai ne pas dépendre d'un autre logiciel que
ffmpeg
.[^] # Re: Recodage
Posté par Zenitram (site web personnel) . Évalué à 9.
Ça mérite 36 méthodes de torture avant l'échafaud (je plaisante… Que quelques unes).
Non, vraiment, stop à la destruction de qualité lors de traitement qui n'en nécessitent pas, c'est à faire en dernier recourt et pas par défaut.
exemple caricatural pour montrer les dégâts que vous ne voyez pas.
Ça ne veut pas dire qu'il n'y en n'a pas et que tu ne souffres pas inconsciemment de la chose.
[^] # Re: Recodage
Posté par karchnu . Évalué à 4.
Ha mais je suis parfaitement d'accord avec toi : il faut s'assurer que le programme ne ré-encode pas, et au moins indiquer une alerte si c'est impossible. Après avoir viré
xxd
des dépendances je m'occupe de ça.[^] # Re: Recodage
Posté par karchnu . Évalué à 3.
Pour préserver la qualité du fichier de base, j'ajoute un paramètre de qualité.
Par défaut, ce paramètre vaut
-c:a copy
, ce qui indique àffmpeg
de ne pas ré-encoder.Cela a pour effet de nécessiter le même format de fichiers en entrée et en sortie. Rien de trop contraignant, mais il faut peut-être que je bidouille pour garder le même format par défaut, plutôt que mettre un format fixe par défaut. Pour faire simple, il faudrait prendre l'extension du fichier audio fourni en paramètre. Tout le monde est d'accord, ou il y a mieux sans nécessiter une nouvelle dépendance ?
[^] # Re: Recodage
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3.
C'est parfait ça, c'est ce à quoi je pensais. Ça fonctionne bien avec un découpage ?
[^] # Re: Recodage
Posté par karchnu . Évalué à 2.
J'ai pas vu de problème, et ça se copie de manière quasi instantanée vu qu'il n'y a pas de calcul.
[^] # Re: Recodage
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 6.
Un autre exemple caricatural : https://xkcd.com/1683/
[^] # Re: Recodage
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
De case en case on sent la bande s'user (les moins jeunes, qui l'ont faite tourner au stylo et/ou utiliser des nettoyantes comprendront l'allusion.)
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: Recodage
Posté par Stéphane Ascoët (site web personnel) . Évalué à 3.
Ouaaah merci Tanguy, grâce à toi je viens de découvrir https://packages.debian.org/buster/mp3splt-gtk qui semble être un clone, volontaire ou pas, de mp3directcut, qui est la seule raison pour laquelle je lance encore un window$ NT de temps en temps chez moi! L'idéal serait qu'Audacity sache le faire aussi.
[^] # Re: Recodage
Posté par Stéphane Ascoët (site web personnel) . Évalué à 1.
Quelqu'un connaît-il un outil pour faire exactement la même chose, mais sur des vidéos?
J'ai déjà réussi à le faire avec un bon vieux split bien rustique, mais, pour des raisons que j'igonore, certaines vidéos ne le supportent pas.
[^] # Re: Recodage
Posté par Crao . Évalué à 2.
Il y a avidemux en GUI, et mencoder en CLI.
# xxd
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 10.
On pourrait prendre soin d'éviter
xxd
avec le même soin qu'on éviteiconv
…Pourquoi ? C'est un utilitaire qui vient avec ViM …qui n'est pas présent partout (l'auteur utilisant OpenBSD devrait savoir que, si ça n'a pas changé, ce n'est pas installé par défaut et qu'on a plutôt NVi par défaut.)
Quelle alternative ? Il y a
hexdump
qui est présent sur tous les Unix-like où j'en ai eu besoin (mais n'ayant pas vérifié partout je ne garantie pas sa présence systématique) etod
qui doit toujours être disponible (parce-que dans la liste des commandes POSIX de base.)“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: xxd
Posté par karchnu . Évalué à 5.
J'aimerai bien utiliser
od
, mais je n'ai pas su lui faire sortir une entrée en une colonne hexadécimal. Je trouve cet utilitaire très bizarre d'ailleurs, je ne comprends pas le choix de mettre plein d'options pour spécifier une sortie octale avec 1, 2 ou 4 caractères par ligne, des options pour des sorties hexa avec 2 ou 4 caractères par ligne, une option-N
pour ne convertir qu'un certain nombre de caractères là où on a déjà d'autres outils pour faire ça (commehead
)… c'est un peu le foutoir.Du coup, si quelqu'un arrive à faire, avec des outils de base, l'équivalent de
xxd -p -c 1
pour convertir l'entrée en hexa sur une seule colonne etxxd -p -r
qui fait l'inverse, je suis preneur !Je suppose qu'il y a un coup à jouer avec
od
suivi deawk
etsed
si on serait joueur, mais c'est quand même plus long et pas très lisible, donc bon… j'hésite.[^] # Re: xxd
Posté par trautruf . Évalué à 3.
od -A n -t x1 -v --width=1
[^] # Re: xxd
Posté par karchnu . Évalué à 3. Dernière modification le 24 janvier 2022 à 12:00.
Ton
od
a des extensions qui ne sont pas portables. Je n'ai pas--width
par exemple.[^] # Re: xxd
Posté par trautruf . Évalué à 1.
Ah … pourtant j'ai un bête gnu od et utilise l'option depuis longtemps.
Bon, s'il faut aussi que ça tourne sur SunOS, en effet, ça va être dur :-)
[^] # Re: xxd
Posté par karchnu . Évalué à 3.
Tout le monde n'est pas sous Linux, et même sous Linux tu n'es pas forcé d'utiliser les outils GNU. Là je suis sur OpenBSD et apporter un peu d'amour aux autres OS ne fait pas de mal.
[^] # Re: xxd
Posté par trautruf . Évalué à 2.
OK, OK … dans ce cas, bon courage … j'espère que awk (par exemple) ne sera pas trop surprenant, vu qu'il y a également awk et gawk …
[^] # Re: xxd
Posté par karchnu . Évalué à 3.
Comme dit dans la dépêche, j'ai testé mon script sur Alpine, Ubuntu et OpenBSD. À chaque fois ce sont des implémentations différentes de
awk
, mais elles ont le même comportement pour ce que j'en fais.[^] # Re: xxd
Posté par Tonton Th (Mastodon) . Évalué à 4.
C'est parce que tu n'as jamais eu de pdp11 :)
[^] # Re: xxd
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 9. Dernière modification le 24 janvier 2022 à 19:27.
Pas compris… Je suppose que tu veux faire ceci avec
head
?Historiquement,
head
n'avait pas l'option-c
d'une part, et il n'y avait pas d'éditeur de binaire Or il fait sens de vouloir examiner une portion déterminée sans devoir remplir tout l'affichage (rappelons-nous des petits écrans sans mémoire tampon pour garder plusieurs pages écran en mémoire tout ça)Pour la petite histoire,
od
existe depuis la v1 d'UNIX AT&T, tandis quehead
est apparu plus tard dans PWB UNIX…Et c'est tellement inutile que même xxd permet de le faire ;D
En fait il y a deux notions, qui sont souvent liées quand on fait de la programmation : le (type de) format et la longueur. Cela correspond à signaler le type de données …non signé qui sont interprétés… sans quoi lui il ne sait pas trop à quoi correspond le binaire sous-jacent.
Si tu ne manipules que des octets, les choix seront plutôt entre :
-tuC
ou-tu1
pour la base 10,-tdC
ou-td1
pour la même en nombre signé,-toC
ou-to1
ou-b
pour la base 8,-txC
ou-tx1
pour la base 16.Bon, le manuel dit que
-p
c'est le « postscript continuous hexdump style » ou « plain hexdump styple » hum. Et-c
pour indiquet le nombre d'octets affichets par ligne, au lieu de 16 par défaut.Pour supprimer le compteur (je suppose que c'est ce que fait le style continue à la postscript), il faut utiliser
-An
Pour afficher des octets aussi en hexa aussi, j'utilise
-tx1
Par défaut il travaille sur deux octets :-x
ou-h
ou-tx2
en hexa,-o
ou-B
ou-to2
en octal par défaut. Et quand on prend par paire l'ordre est un peu différent…Par contre on ne sait pas agir sur le groupement, sauf avec l'implémentation GNU qui prévoit une option
-w
entre autres. Je pense que ce n'est pas grave vu que tu AWK après dessus ; sinon un pipe supplémentaire comme dans l'exemple pour virer les blancs.OD et HexDump ne font pas l'inverse… Mais comme tu fais déjà du traitement avec AWK, peut-être utiliser sa faction
chr
(etord
dans l'autre sens ?) Je sais, c'est pas du jeu :-)“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: xxd
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 5.
Petites notes sympas, vu que ce ne sont pas des fonctions natives (en tout cas pas requis par POSIX donc propre à l'implémentation si présente) : https://www.gnu.org/software/gawk/manual/html_node/Ordinal-Functions.html et https://helpmanual.io/man3/ordchr-am/
C'est la première fois que j'entends parler du besoin de faire l'opération inverse dans un script ; du coup je suis allé regarder le source. Je ne suis pas sûr d'avoir compris ce que tu tentes de faire : pour du rechercher-remplacer il n'est pas besoin de passer par ce détour …à moins que ce ne soit des caractères trop particuliers ? (auquel cas méfiance…) S'il s'agit par contre de changer l'encodage, il n'y a pas de mal à faire appel à iconv dont c'est le boulot (et qui donc prend en compte un certain nombre d'autres paramètres.)
En fait, quand il y a plusieurs solutions possibles j'aime plutôt permettre au script de s'adapter en conséquence (il y a de grande chance que l'un des deux outils soit installé, et si c'est pas le cas on fait avec) :
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: xxd
Posté par karchnu . Évalué à 6. Dernière modification le 25 janvier 2022 à 19:03.
Très bien, affûtons notre unix-fu.
Traduction de
xxd -p -c 1
En premier, il nous faut une traduction d'une entrée quelconque en une colonne hexa. Tu l'as pratiquement donnée avec
od
, mais il manque de mettre les valeurs en colonne.Traduction de
xxd -p -r
Maintenant, (presque) l'inverse avec
tr
,bc
(etdc
),od
etawk
. « Presque » car l'entrée n'est pas sur une seule colonne, puisque je regroupe des caractères pour traiter l'UTF-8. Je mets tous les caractères d'une ligne sur une seule ligne. L'entrée peut ressembler à ceci :Et là, on aimerait bien passer tout ça à
awk
pour qu'il traduise ça en caractères affichables via sa fonctionprintf
. Mais il lui faut un nombre en base 10 et je sais pas traduire l'hexa facilement avecawk
(hors version GNU), donc on va passer par quelques étapes supplémentaires.Première chose à faire, remettre tout ça en une seule colonne :
tr " " "\n"
.Ensuite, on veut passer l'entrée à
bc
(et par conséquent àdc
) pour qu'il convertisse l'hexadécimal en décimal. Attention,bc
est sensible à la casse, donc il faut mettre l'hexadécimal en majuscules :Maintenant la conversion avec
bc
:Et enfin, on fait la traduction
décimal -> caractères UTF-8
avecawk
et sa fonctionprintf
.Et donc la fonction complète qui passe de l'hexadécimal à la sortie finale :
Je ne sais pas trop quoi penser du résultat. Je l'ai testé et ça semble fonctionner, mais est-ce suffisamment « simple » ? Est-ce qu'on aurait pas plus simple encore ?
[^] # Re: xxd
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 5. Dernière modification le 25 janvier 2022 à 19:57.
Dans cet enchainement :
…tu peux combiner les deux en une opération
…et le test est concluant :
Bien vu pour printf. Le "truc" est juste de lui passer une chaîne déjà en hexa …en forçant la chaîne de caractères à être lu comme un nombre hexa…
Vérification…
Tu étais donc sur la bonne voie ; j'y aurais pas pensé à ce détour tout seul.
[edit] Du coup, on peut combiner
from_hex_to_decimal | from_dec
pour la route :D“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: xxd
Posté par karchnu . Évalué à 4.
Alors, oui, c'est parfaitement valide. En revanche, c'est un poil moins lisible.
Je verrai plutôt
tr " " "\n"
dans une fonction avec un nom explicite, pour pouvoir enchaîner des fonctions avec un nom lisible par un humain, quelque-chose commeto_single_column | uppercase
.Je n'ai aucun mérite. C'est l'implémentation de
chr
sur mon système.:D
Malheureusement, cette astuce ne fonctionne pas sur OpenBSD. Je suppose que la gestion de l'hexadécimal est une extension GNU…
[^] # Re: xxd
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 4. Dernière modification le 25 janvier 2022 à 22:00.
J'ai fait le test sur un Mac et cet outil là ne semble pas être une implémentation GNU
Le manpage ne dit pas quelle implémentation c'est non plus, mais de mémoire c'est nawk comme sur d'autres BSD. Je vérifierai sur un autre poste où j'en ai d'autres (mawk et nawk entre autres) ce qu'il en est du comportement par rapport aux hexa. Et surtout voir ce qui est attendu au niveau de la norme…
Peut-être qu'il faut lui forcer la main avec
strtonum()
?Sinon, la façon un peu bourrin de faire la conversion ressemblerait à (non testé) :
Pendant que j'écrivais je viens de me rappeler qu'on va parfois chercher loin ce qui est à portée de main… L'expansion arithmétique d'un shell POSIX connait l'hexa en entrée mais retourne tout en décimal (test suivant fait avec Bash, Zsh, Dash pour m'en assurer) :
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: xxd
Posté par karchnu . Évalué à 3.
Extension GNU.
Ne fonctionne pas.
Je viens de tester avec
/bin/sh
sur OpenBSD. Ça fonctionne. Et je ne vais quand même pas l'utiliser :bc
etdc
font ça très bien, ils sont même plutôt fait pour et sont efficaces. En plus, ça se gère naturellement dans un script shell, c'est un simple filtre.[^] # Re: xxd
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 3.
Il faut résister à la tentation de faire des fonctions pour dix à quinze caractères, sauf si la fonction est vraiment réutilisée plusieurs fois… En groupant, ce n'est pas moins lisible, je trouve, et si en prime c'est commenté (juste par "to single column And to upper case" ou un truc du genre) c'est meilleur.
C'est d'ailleurs parce-que
tr
est plus simple et plus lisible sur ce coup que je n'ai pas poussé…“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: xxd
Posté par karchnu . Évalué à 3.
Pourquoi résister à la tentation de faire des fonctions d'une ligne ? Je trouve ça tellement plus lisible plutôt que d'essayer de comprendre ce que fait chaque appel. C'est également moins cryptique pour ceux qui ne font pas d'unix tous les jours, ils peuvent même apprendre en lisant simplement les noms des fonctions.
Aussi, deux appels à
tr
au lieu d'un c'est pas grave si ça améliore la lisibilité : une fonction ne fait qu'une chose. J'optimise uniquement quand c'est nécessaire et que ça ne nuit pas à la lisibilité. Je défie quiconque de me justifier devoir supprimer un appel àtr
parce que c'est trop coûteux niveau perfs pour lire un document de 20 lignes.:D
Peu importe si ça fonctionne mieux avec les accents, on travaille sur de l'hexa.
;)
Du coup,
tr
étant l'outil le plus simple, il est prioritaire.Ça ne fonctionne pas sur OpenBSD. Nous n'avons pas la même implémentation de
awk
.# Votre avis m'intéresse
Posté par karchnu . Évalué à 8. Dernière modification le 24 janvier 2022 à 16:21.
Salut à ceux qui votent négativement sur cette dépêche. N'hésitez pas à dire pourquoi. Est-ce que la dépêche ne rentre pas dans le cadre du site ? Est-ce que vous avez un problème technique avec ce que je propose ? Est-ce que la dépêche est mal écrite ? Exprimez-vous.
[^] # Un sage a dit
Posté par tisaac (Mastodon) . Évalué à 6. Dernière modification le 24 janvier 2022 à 17:34.
Un sage a dit:
Pour vivre heureux, n'essaie pas de comprendre les votes pertinent et surtout inutile sur LinuxFR.
Après, on n'est pas obligé d'être sage ;-)
Surtout, ne pas tout prendre au sérieux !
[^] # Re: Un sage a dit
Posté par karchnu . Évalué à 5. Dernière modification le 24 janvier 2022 à 17:44.
Je suis trop soucieux de bien faire, et j'ai peur de simplement avoir raté quelque-chose d'important. Par exemple un logiciel qui ferait déjà exactement ce que je fais avec
get-tracks.sh
, rendant mon travail inutile.C'est possible que les votes négatifs ne soient pas rationnels, ça ne serait pas la première fois que ça m'arrive sur linuxfr. J'ai encore des souvenirs du premier commentaire de l'article sur mon service netlib.re… mais sans demander, je peux pas savoir. Et je suis curieux.
:-)
[^] # Re: Un sage a dit
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 7.
Un certain nombre de votes, négatifs ou positifs ne sont pas rationnels, je vois ça sur les liens (c'est ce qu'il y a de plus facile à voir). Rationnels dans le sens : la pertinence ou l'inutilité ne sont pas forcément liées à la thématique de LinuxFr.
Il est possible, et j'avouerais que je suis dans ce cas-là (mais j'ai voté pour la publication de la dépêche), que certains et certaines se demandent finalement l'intérêt de la manip, ce qui est susceptible d'engendrer des votes inutiles.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
# YouTube ?
Posté par O'neam Anne . Évalué à 3.
Le format du fichier ressemble fortement aux descriptions YouTube pour les vidéos contenant un album de musique entier.
Est-ce que c'est ça le cas d'utilisation typique de get-tracks.sh ? Télécharger une de ces vidéos, extraire la bande sonore, et re-découper en fichiers l'album ?
LinuxFr, parfois c'est bien de la MERDE : https://linuxfr.org/users/c2462250/journaux/ecriture-inclusive-feministes-et-wikipedia#comment-1793140
[^] # Re: YouTube ?
Posté par karchnu . Évalué à 3. Dernière modification le 24 janvier 2022 à 20:03.
J'ai des CD en un fichier audio, et
get-tracks.sh
m'aide à les découper. Le format du fichier texte a été choisi car très répandu, et oui c'est ce qu'on retrouve, entre autres, dans la gestion des marqueurs de temps chez certaines plateformes comme Youtube.L'obtention à la fois du fichier audio et des marqueurs de temps ne sont pas mon affaire. Je n'encourage pas cet usage qui est illégal (sauf si l'album, ou le contenu d'une manière générale, est publié en libre). Cependant, oui, ça fonctionnerait.
[^] # Re: YouTube ?
Posté par O'neam Anne . Évalué à 2.
Par curiosité, comment est-ce que tu t'es retrouvé à avoir des CD rippés sous la forme d'un unique fichier audio ? C'est inhabituel !
LinuxFr, parfois c'est bien de la MERDE : https://linuxfr.org/users/c2462250/journaux/ecriture-inclusive-feministes-et-wikipedia#comment-1793140
[^] # Re: YouTube ?
Posté par karchnu . Évalué à 4. Dernière modification le 25 janvier 2022 à 00:13.
Vieux rip, je ne sais plus quel outil j'avais utilisé. Mes débuts avec Linux, il y a 15 ans. Et quelques trucs trouvés sur le net entre temps, que j'ai depuis trop longtemps pour me souvenir d'où ça vient.
[^] # Re: YouTube ?
Posté par dtrystram . Évalué à 4.
De mon côté, il y a presque 25 ans, je rippais mes vinyls via la carte son de l'ampli de ma chaine, en gros fichier wav, et du coup en un seul morceau (enfin 2, car 2 faces !), et il existait une application (gramofile) en mode texte/console, laquelle application repérait (pas très bien d'ailleurs) les instants silencieux pour découper en morceaux, et il fallait moultes réglages pour que cela marche (entre pas assez de morceaux, pas assez découpés donc, ou trop de morceaux trop découpés… ). Ici ce script est probablement plus efficace !
[^] # Re: YouTube ?
Posté par dtrystram . Évalué à 3.
Et gramofile compile toujours sur une debian 10 ordinaire
[^] # Re: Découper les plages dans une longue séquence audio numérisée
Posté par Stéphane Ascoët (site web personnel) . Évalué à 2.
J'ai résolu ce problème vers 2002 avec Audacity grâce à un cours-pas-à-pas publié par Framasoft(qui m'a fait découvrir cet outil du même coup, ce qui a pas mal changé ma vie)
# Suite aux différents commentaires.
Posté par karchnu . Évalué à 8.
Voici la liste des changements apportés au script depuis la publication :
xxd
, remplacé par des appels àtr
,awk
,bc
</dev/null
a été déplacé d'un appel àffmpeg
à bien plus haut dans la pile d'exécution, dans le blocwhile read X; do ... done
où le problème apparaît (pour rappel : cette construction de code implique qu'un sous-shell peut lire ce qui doit être en entrée duwhile read
à sa place)Certains de ces changements étaient prévus, d'autres font suite à des commentaires pertinents.
N'ayant plus de dépendance à
xxd
, une nouvelle sortie voit le jour.Reste à faire
[^] # Re: Suite aux différents commentaires.
Posté par karchnu . Évalué à 10.
Aux nouvelles :
FFOPTS
qui permet de passer des options àffmpeg
(notamment quand il y a effectivement besoin de ré-encoder)Maintenant qu'il n'y a plus de ré-encodage par défaut et que le script n'utilise plus que des outils POSIX, je considère l'application stable. Je la sors donc en v1.0.
Merci à ceux qui ont participé ! N'hésitez pas si vous avez d'autres suggestions.
# Définition de « piste »
Posté par idlusen . Évalué à 1. Dernière modification le 26 février 2022 à 16:05.
Script intéressant, mais je suis un peu déçu, à la lecture du titre j’ai cru à de la séparation de source automatique ;-)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.