logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 07-05-2020 21:37:01

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Convertir une liste de fichiers audio en FLAC

Un petit script que je viens de me bricoler :

#!/bin/sh
set -o errexit

###
# Convert the list of audio files given as arguments to this script to FLAC
# ffmpeg is used for the conversion
###

for source_file in "$@"; do
  target_file="${source_file%.*}.flac"
  # -map a → only keep audio tracks
  ffmpeg -i "$source_file" \
    -map a \
    "$target_file"
done

exit 0


(script amélioré grâce à vos suggestions)

Je l’utilise avec find et xargs pour paralléliser le traitement de grandes quantités de fichiers audio, en utilisant des appels similaires à celui-ci :

find . -name \*.m4a -print0 | xargs -0 -n15 -P8 ffmpeg2flac

Dernière modification par vv222 (15-05-2020 18:22:11)


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

En ligne

#2 07-05-2020 22:29:19

Anonyme
Invité

Re : Convertir une liste de fichiers audio en FLAC

J'ai les même à la maison big_smile

#3 08-05-2020 09:01:27

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Convertir une liste de fichiers audio en FLAC

Hello
dans quel cas utiliser ce script vu que le format flac est le meilleur pour restituer tout le son sans compression?
Si tu par d'une source avec certaines fréquence tronqué cela n'a pas d’intérêt , a par augmenter la taille du fichier
Un conseil , utilise un analyseur de spectre avant d'utiliser ton script ( spek)

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#4 08-05-2020 10:34:08

Anonyme
Invité

Re : Convertir une liste de fichiers audio en FLAC

Il est sûr qu'un fichier détruit le sera toujours, mais le script de vv222 à toute son utilité dans le côté pratique.

Je met le script dans ~/.config/caja et je retrouve celui-ci dans le menu contextuel.
Tu peux ainsi sélectionner 2 ou 3 fichiers dans un dossier plein de fichiers audio.
Rien n'empêche de changer le format de sortie (en mp3 par exemple )et là, c'est l'autoradio de ma femme qui sera content.
Un mp4 sur youtube aussi, direct en mp3 avec ce script.
etc ...

J'y aurais mis un dossier de sortie dans le dossier même de traitement pour ma part.
On n'a pas de visuel, c'est pas top sur de gros fichiers.
Que se passe t'il si le fichier de sortie existe déjà dans le dossier ?

Dernière modification par Anonyme (08-05-2020 10:54:17)

#5 08-05-2020 15:46:30

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Convertir une liste de fichiers audio en FLAC

Croutons a écrit :

dans quel cas utiliser ce script vu que le format flac est le meilleur pour restituer tout le son sans compression?



Bien sûr, je ne l’utilise que sur des sources compressées sans perte, comme du ALAC ou Monkey’s Audio.

---

Anonyme a écrit :

J'y aurais mis un dossier de sortie dans le dossier même de traitement pour ma part.


Avec mes méthodes de travail, ça m’arrange que ce soit placé au même endroit que les fichiers d’origine, qui sont en fait souvent des liens symboliques vers les vrais fichiers sources.

Anonyme a écrit :

On n'a pas de visuel, c'est pas top sur de gros fichiers.


Bah c’est même pire : j’ai bien la sortie de ffmpeg (j’utilise le script en console) mais comme je parallélise le lancement via find + xargs tous les journaux en sortie se mélangent wink
En fait j’utilise l’activité processeur (via mon Conky) pour savoir si l’opération est toujours en cours, que je surveille du coin de l’œil pendant que je fais autre chose.

Anonyme a écrit :

Que se passe t'il si le fichier de sortie existe déjà dans le dossier ?


Je pense que ça me demande de confirmer son remplacement, ce qui va avoir des effets rigolos si jamais j’ai lancé plusieurs instances du script via xargs.
Mais avec mes méthodes habituelles ce n’est pas une situation qui peut arriver.


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

En ligne

#6 08-05-2020 16:04:30

Anonyme
Invité

Re : Convertir une liste de fichiers audio en FLAC

@vv222

J'ai testé, ça fait l'impasse wink

ffmpeg -i "$source_file" -y "$target_file"

#7 08-05-2020 16:15:34

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Convertir une liste de fichiers audio en FLAC

Bien vu pour le `-y`, c’est aussi ce que j’utilise dans des cas où je souhaite remplacer les cibles sans interaction, comme dans cette section de Makefile dont le rôle est de convertir une animation .gif en divers formats plus adaptés au Web.

(et poster ça me fait réaliser un souci de ce Makefile, va falloir retourner travailler…)

Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

En ligne

#8 15-05-2020 08:29:46

Anonyme
Invité

Re : Convertir une liste de fichiers audio en FLAC

@vv222


bonjour,

je te propose de mettre deux options dans ta commande en plus.

ffmpeg -i "$file" -map a -c:a flac -sample_fmt s16 -y "$output"



-map a -c:a flac


Ne passer à la moulinette que l'audio présent. Ton script est transparent mais si je met un visuel, parfois ça gueule. (mp3, ogg avec images incorporées)

-sample_fmt s16


Tout mettre en 16 bits, pourquoi pas ( ffmpeg le rappel en warning sur le visuel)

#9 15-05-2020 18:19:54

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Convertir une liste de fichiers audio en FLAC

Ah, merci pour le `-map a`, je ne le connaissais pas et me prends régulièrement la tête à devoir ajouter des `-map 0:0`.

Pour le `-sample_fmt s16`, est-ce que tu peux détailler un peu plus son utilité ?
Je sais que certains fichiers audio sont en 16-bit, et que d’autre, plus gros, en 24-bit (avec probablement une plus haute fidélité). J’imagine qu’il existe d’autres valeurs. Mais je suis curieux de connaître l’intérêt de forcer l’utilisation du mode 16-bit.

Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

En ligne

#10 15-05-2020 19:57:46

Anonyme
Invité

Re : Convertir une liste de fichiers audio en FLAC

@vv222

Comme tu as pu le voir, je viens de reprendre ton script pour le passer en script nautilus avec une sélection au détail.
Comme certains ont des différences, je préfère les mettre au même niveau. Je les remet en wav pour en faire un cd audio.
J'aime bien aussi joindre mes compiles en fondu enchainé. 16 et 24 mélangés est impossible, donc mieux vaut le faire avant.
Je sais pas si j'ai bien expliqué ma façon de faire tongue

J'ai mis aussi une option pour balancer tous les flacs encodés (et non les autres) en vrac dans un dossier, ça m'évite de les mélanger avec ceux qui était déjà en flac ou les autres formats (non traité par une condition).

if [ "$filesubtype" = flac ]; then


ON FAIT RIEN, C'EST DEJA UN FLAC



Donc le 24 bits ne sera pas écrasé pour un 16 bits.

J'ai mis une condition aussi, sans audio.
Imagine la gueule des cover.jpg, des log etc ... qui peuvent être dans tes dossiers, avec une extensions flac, une fois passés à la moulinette . big_smile lol
Tu les retrouvera dans ton dossier, comme tu ne sélectionnes pas que les fichiers audios.
Cette condition, je pense que tu peux l'insérer dans ton script :

EDIT : Apparement l'option `-map a` évite la conversion des fichiers jpg, png etc


https://debian-facile.org/viewtopic.php?id=27290



#!/bin/bash

scr="$HOME/Scripts/conversion"  
mate-terminal -x bash -c "$scr; exec $SHELL"
 





#!/bin/bash

IFS='
'

for file in $CAJA_SCRIPT_SELECTED_FILE_PATHS
do

DIR=$(xdg-user-dir DESKTOP)
CONVERT_FILE=$DIR/FLACS
[ -d "$CONVERT_FILE" ] || mkdir "$CONVERT_FILE"



filesubtype=$(ffprobe "$file" 2>&1 | awk  '/Audio:/ { print $4 }' | tr -d ',')
filetype=$(ffprobe "$file" 2>&1 | awk  '/Audio:/ { print $3 }' | tr -d ':' | wc -l)

echo "Proceed..."

## CONDITION:
## UN SEUL STREAM AUDIO ET QUE CELUI-CI NE SOIT PAS AU FORMAT FLAC.
if [ "$filetype" -eq "1" ] && [ "$filesubtype" != flac ]; then
      output="${file%.*}.flac"
      ffmpeg -i "$file" -map a -c:a flac -sample_fmt s16 -y "$output"
      mv "$output" "$CONVERT_FILE"  

fi

## SI C'EST DÉJÀ UN FLAC.
if [ "$filesubtype" = flac ]; then
notify-send "Flac détecté ... suivant"  -t 1000
sleep 2

fi

## FICHIERS SANS AUDIO.
if [ "$filetype" -eq "0" ]; then
notify-send "Fichier invalide"  -t 1000
sleep 2

fi  

done
notify-send --urgency=low -i lollypop "Terminée"
 

Dernière modification par Anonyme (16-05-2020 07:50:53)

Pied de page des forums