Comment puis-je convertir .flac en .mp3 avec ffmpeg, en conservant toutes les métadonnées (c'est-à-dire en convertissant les commentaires Vorbis dans les fichiers .flac en métadonnées ID3v2 de .mp3)?
Comment puis-je convertir .flac en .mp3 avec ffmpeg, en conservant toutes les métadonnées (c'est-à-dire en convertissant les commentaires Vorbis dans les fichiers .flac en métadonnées ID3v2 de .mp3)?
Réponses:
La commande suivante conserve une qualité élevée sur .mp3 (320 kbps) et les métadonnées du fichier .flac sont converties au format ID3v2, qui peut être inclus dans les fichiers .mp3:
ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
ffmpeg
3.2 copie automatiquement les métadonnées dans ID3v2 à partir de FLAC sans avoir besoin de spécifier -map_metadata 0 -id3v2_version 3
, bien qu'il ne copie pas dans les balises ID3v1. J'utilise un outil séparé pour cela.
Réponse parfaite ci-dessus. Je l'utilise avec find pour ajouter tous les fichiers FLAC d'un sous-arbre à iTunes avec cette commande
find . -name "*.flac" -exec ffmpeg -i {} -ab 160k -map_metadata 0 -id3v2_version 3 {}.mp3 \;
Pour ajouter automatiquement les fichiers résultants à iTunes, obtenez le répertoire d'importation iTunes avec
find ~/Music/ -name "Automatically Add*"
résultat par exemple
/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized
Puis exécutez par exemple
find . -name "*.mp3" -exec mv {} "/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized/" \;
Pour ajouter automatiquement toutes les pistes converties à iTunes.
Si vous souhaitez gagner un peu d'espace, essayez la recommandation de hydrogenaud.io :
Très haute qualité: HiFi, maison ou écoute calme, avec la meilleure taille du fichier
-V0 (~245 kbps)
,-V1 (~225 kbps)
,-V2 (~190 kbps)
ou-V3 (~175 kbps)
sont recommandés. Ces paramètres VBR produiront normalement des résultats transparents. Des différences audibles entre ces préréglages peuvent exister, mais sont rares.
Source: http://wiki.hydrogenaud.io/index.php?title=LAME
Si vous souhaitez utiliser cette option dans ffmpeg, vous devez utiliser l' -q:a 0
alias.
Contrôlez la qualité avec
-qscale:a
(ou l'alias-q:a
). Les valeurs sont spécifiques à l'encodeur, donc pour libmp3lame, la plage est comprise entre 0 et 9 où une valeur inférieure est une qualité supérieure. 0-3 produira normalement des résultats transparents, 4 (par défaut) devrait être proche de la transparence perceptuelle et 6 produira une qualité "acceptable". L'option-qscale:a
est mappée à l'-V
option dans l'outil d'interface de ligne de commande lame autonome.
Source: https://trac.ffmpeg.org/wiki/Encode/MP3
Si vous souhaitez également des balises méta ID3v1, vous devez ajouter le -write_id3v1 1
paramètre.
Ma commande finale est donc:
ffmpeg.exe -y -i input.flac -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 -write_id3v1 1 output.mp3
Je testais la commande suivante pour convertir le infile.flac
fichier en outfile.mp3
:
ffmpeg -i infile.flac -q:a 0 outfile.mp3
Depuis Ubuntu 16.04, la commande ci-dessus semble copier (surtout? Toutes?) Les métadonnées.
-q:a 0
dit ffmpeg
d'utiliser le VBR de la plus haute qualité.
Cependant, ffmpeg
j'ai transcodé la pochette de mon album de jpeg
à png
, ce qui a augmenté la taille de la pochette.
Stream mapping:
Stream #0:1 -> #0:0 (mjpeg (native) -> png (native))
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
(Je suppose que la conversion ci-dessus a du sens étant donné son ffmpeg
fonctionnement .)
Après quelques recherches, j'ai trouvé l' -c:v copy
option, qui spécifie que le flux vidéo doit être copié plutôt que transcodé. La commande complète est:
ffmpeg -i infile.flac -c:v copy -q:a 0 outfile.mp3
La commande ci-dessus entraîne:
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
Pour convertir récursivement en mp3 tous les fichiers flac dans des dossiers imbriqués, j'ai utilisé cette commande:
find '~/Music/' -iname '*.flac' -exec bash -c 'D=$(dirname "{}"); B=$(basename "{}"); mkdir "$D/mp3/"; ffmpeg -i "{}" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/${B%.*}.mp3"' \;
Il créera un dossier nommé "mp3" à l'intérieur de celui contenant les fichiers flac et, à l'intérieur du dossier mp3, il enregistrera les fichiers mp3 relatifs avec un débit binaire de 320 kbps, sans conserver l'ancienne extension de fichier dans le nom.
$file
comme "$file"
.
:r
semble être un zsh
modificateur, qui ne fonctionne pas bash
. Dans Bash, vous pouvez remplacer "${file:r}.mp3"
par "${file%.flac}.mp3"
.
${file%.*}
Je sais que cela n'a pas été demandé, mais étant donné que l'une des raisons pour lesquelles cela est fait (du moins c'est ce que je voulais faire) est que la musique puisse être importée dans Apple iTunes qui ne prend pas en charge FLAC. Dans ce cas, il est plus judicieux de convertir FLAC au format sans perte d'Apple, m4a. J'ai utilisé cette commande pour convertir tous les fichiers du dossier actuel, tout en conservant des tailles de fichier similaires.
find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;
Ce script flac2mp3.sh utilise ffmpeg
pour convertir une arborescence de dossiers de fichiers FLAC en une autre arborescence de dossiers de fichiers MP3. La pochette est incluse, lorsqu'elle est présente. Vous pouvez définir une CORES
variable pour créer des travaux d'arrière-plan afin de convertir plusieurs fichiers à la fois.
ffmpeg
des questions sur l'utilisation de cli à Super User . Stack Overflow est uniquement pour les questions impliquant la programmation. De plus, FLAC ne prend officiellement en charge que les commentaires Vorbis , donc je suppose que vous voulez convertir en ID3v2 au lieu de "garder".