FFMPEG: Convertissez les fichiers m4a en mp3 sans perte d’information / qualité importante. Débit binaire automatisé

43

J'ai une charge de fichiers audio (environ 1 000) que je souhaite convertir de m4a en mp3 pour pouvoir les lire sur un lecteur de CD doté d'un port USB.

J'ai essayé de faire quelque chose de simple comme: ffmpeg -i FILE.m4a FILE.mp3mais cela semble réduire le débit à une valeur très faible, ce qui n'est pas ce que je veux.

De même, je ne veux pas convertir en utilisant un débit constant, tel que 320k, car certains des fichiers que je convertis ont une taille de 320k m4a et d'autres sont d'une qualité aussi médiocre que 96k m4a.

Il semble inutile de forcer 320 Ko, car certains fichiers seront plusieurs fois plus volumineux que nécessaire. De la même façon, cela n'a aucun sens de détruire tous mes fichiers 320k en les convertissant en quelque chose de beaucoup inférieur à 96k. (Pour le moment, les fichiers sont convertis à environ 50k.)

Est-ce que quelqu'un sait comment je peux faire ça? Ce que je veux vraiment faire, c'est demander à ffmpeg de convertir tous les fichiers m4a d'un répertoire en mp3 tout en conservant au mieux la qualité audio actuelle. (Bien sûr, la conversion de formats de fichiers avec perte en fichiers avec perte risque de causer des pertes supplémentaires.)

Merci de votre aide. Si cela n’est pas possible, existe-t-il une sorte de script capable de détecter la qualité requise lorsqu’il convertit les fichiers individuellement?

PS: Je travaille sur un Mac intel, mais j'ai aussi une boîte Ubuntu.

utilisateur3728501
la source

Réponses:

49

VBR

Vous pouvez utiliser cette -qscale:aoption ffmpegpour créer une sortie MP3 à débit binaire variable (VBR). De FFmpeg Wiki: Encodage audio mp3 VBR (débit binaire variable) :

Contrôle de la qualité avec -qscale:a(ou l'alias -q:a). Les valeurs sont spécifiques à l'encodeur. Par conséquent, pour libmp3lame, la plage est comprise entre 0 et 9, une valeur inférieure correspondant à une qualité supérieure. 0-3 donnera normalement des résultats transparents, 4 (par défaut) devrait être proche de la transparence perceptuelle et 6 produit généralement une qualité "acceptable". L'option -qscale:aest associée à l' -Voption de l'outil d'interface de ligne de commande lame autonome.

Vous devrez expérimenter pour voir quelle valeur est acceptable pour vous. Voir également Hydrogen Audio: Paramètres recommandés du codeur LAME .

Encodage de plusieurs fichiers

Vous pouvez utiliser un Bash "for loop" pour encoder tous les fichiers d'un répertoire:

$ mkdir newfiles
$ for f in *.m4a; do ffmpeg -i "$f" -codec:v copy -codec:a libmp3lame -q:a 2 newfiles/"${f%.m4a}.mp3"; done

Obtenir ffmpeg

Il est recommandé d'utiliser une version récente de ffmpegsi possible. Voir la page de téléchargement de FFmpeg pour des liens vers des versions pour OS X, Linux et Windows. Vous pouvez également suivre un guide pour compiler FFmpeg .

llogan
la source
1
Ok merci, les commandes ont fonctionné, mais je ne pense pas que cela fait ce que je voulais. J'ai défini -q: a 0, ce qui correspond à ce que j'attendais pour obtenir des m4a de qualité supérieure (produire des fichiers volumineux avec des taux de vbr plus élevés), mais les fichiers de qualité inférieure sont encore en train d'être convertis en fichiers volumineux, avec des fichiers vbr d'environ 250-260. kb / s. Je m'attendais à ce que les fichiers d'environ 96k au format m4a soient convertis en un débit similaire avec le même encodeur en mode vbr. Je suppose que je n'ai pas bien compris comment fonctionne le mode de codage vbr?
user3728501
19

utilisez FFmpeg (il y a aussi beaucoup de versions d'interface graphique)

  1. MP3 est déjà abandonné (en 2017), codec obsolète. Internet est déjà passé en AAC ( codec plus efficace et de qualité):

    ffmpeg -i filenameee.m4a -acodec copy output.aac
    
  2. Toutefois, si vous souhaitez toujours utiliser le format MP3 (car il est toujours pris en charge par plusieurs périphériques):

    ffmpeg -i filenameee.m4a -acodec libmp3lame -ab 256k output.mp3
    
T.Todua
la source
4
Puisque la question concerne la qualité, il sera peut-être avantageux de convertir
256 Ko
3

Cela a fonctionné pour moi:

ffmpeg -i testing.m4v -b:a 192K -vn testing.mp3
utilisateur205987
la source
1

En utilisant les réponses existantes comme base, j'ai écrit un script bash qui devrait faire exactement ce que la question demande sur une machine Ubuntu (testée le 16.04). Vous aurez besoin d'installer avprobece qui est dans le libav-toolspaquet. Vous pouvez installer avprobeavec la commande suivante

sudo apt-get install libav-tools

REMARQUE: Il serait sage de sauvegarder tout dossier dans lequel vous exécutez ce script et de faire de votre mieux pour lire et comprendre ce qu'il fait avant de l' exécuter.

Je n'ai pas testé très rigoureusement, donc YMMV.

#!/bin/bash

mkdir "mp3s"
for f in *.m4a;
do
    bitrate=$(avprobe "${f}" 2> >(grep bitrate) | sed 's/^.*bitrate://g' | sed 's/[^0-9]*//g')
    bitrate="${bitrate}K"
    new_filename=$(echo "${f}" | sed 's/.m4a$/.mp3/g')
    ffmpeg -y -i "${f}" -acodec libmp3lame -ab "${bitrate}" "mp3s/${new_filename}"
done
Jbowman
la source
0

Si vous travaillez à 48 kHz et au moins 24 bits dans le fichier d'entrée (à partir d'un éditeur de fichier i.ex.), le fichier à -q:a 020 kHz ne sera reproduit que sur un fichier aussi volumineux que le flac ... Mais un son de qualité médiocre, à moins de réduire le bruit à partir de hautes fréquences (sifflement) par des éditeurs audio de dithering ou de réduction de nez, créés lors de conversions, qui seront reproduits, puis utiliseront un fichier de données en tant que HF inaudible, mais coûteux.

Kaiser Lima
la source