web-dev-qa-db-fra.com

Comment convertir un mp3 à haut débit en taux inférieur à l'aide de ffmpeg dans android

Nous voulons convertir le fichier mp3 320kbps en mp3 128kbps donc actuellement nous utilisons la commande ffmpeg ci-dessous mais cela ne fonctionne pas.

ffmpeg -i input.mp3 -codec:a libmp3lame -qscale:a 5 output.mp3

Résultat: - le débit binaire de sortie identique à l'entrée mp3.

Et nous suivons la directive d'encodage FFmpeg pour cela voici le lien: - https://trac.ffmpeg.org/wiki/Encode/MP

veuillez donc suggérer une solution.

11
Android Team

J'ai essayé votre commande affichée (testée sur Windows/ligne de commande):

ffmpeg -i input.mp3 -codec:a libmp3lame -qscale:a 5 output.mp3

Résultat : Cela fonctionne pour moi. Cependant, le -qscale:a 5 fait FFmpeg décider d'un débit binaire moyen pour vous. Avec un fichier MP3 (320k), je l'ai obtenu en donnant une conversion proche de 134kbps . C'est ( attendu puisque:

lame option   Average kbit/s  Bitrate range kbit/s    ffmpeg option
   -V 5             130           120-150                -q:a 5

Solution :
Au lieu de faire en sorte que les trames mp3 internes contiennent différents débits binaires (qui varient pour s'adapter à l'audio perçu "actuel", par exemple: pensez aux parties "silencieuses" en utilisant un taux de bits/octets inférieur par rapport aux parties audio "occupées"), il suffit donc de définir un débit constant de 128 kbps Comme vous le souhaitez.

Je le mettrais juste à constant 128kbps manuellement et explicitement avec:

ffmpeg -i input.mp3 -codec:a libmp3lame -b:a 128k output.mp3
10
VC.One

J'utilise ce shellscript afin de ne pas visiter cette page stackoverflow encore et encore :)

#!/bin/bash
[[ ! -n $1 ]] && { 
    echo "Usage: mp3convert <input.mp3> <output.mp3> <bitrate:56/96/128/256> <channels> <samplerate>"
    exit 0
}
set -x # print next command
ffmpeg -i "$1" -codec:a libmp3lame -b:a "$3"k -ac "$4" -ar $5 "$2"
5
coderofsalvation