Quelle commande dois-je utiliser pour convertir un mp3fichier wavdont le débit est variable. Ou mieux comment pourrais-je savoir si cette source audio est fixedbitrate ou variable?
Je ne pense pas que le format de fichier WAV supporte des débits binaires variables. Étant donné que tous les décodeurs MP3 doivent le prendre en charge pour être conforme aux normes, vous devriez pouvoir convertir n'importe quel fichier MP3 en WAV à débit fixe, bien que vos résultats varient en fonction de la qualité du MP3 source et du débit fixe choisi pour le WAV. établi. La plupart des logiciels de lecture MP3 offrent un moyen d'afficher les propriétés du fichier en cours de lecture, vous pouvez donc en utiliser un pour voir quel type de fichiers source vous avez affaire.
martineau
Et qu'en est-il de la commande? Que recommandez-vous?
Soham Dasgupta
Veuillez relire la réponse de Martineau. J'ai corrigé quelques erreurs. En particulier, vous ne pouvez pas définir le débit binaire pour les fichiers WAV codés PCM.
slhck
Réponses:
36
Vous pouvez obtenir des informations sur le débit binaire de vos fichiers d'entrée en utilisant la ffprobe song.mp3commande. Cependant, cela vous indique uniquement le débit binaire de la première image. Le VBR dans les fichiers MP3 est généralement implémenté simplement en changeant le débit binaire pour chaque image, donc il n'est pas possible de déterminer s'il est utilisé en lisant simplement l'en-tête de la première image. J'utilise habituellement un autre logiciel de lecture de fichiers audio pour déterminer si le VBR est utilisé, comme beaucoup l'afficheront (Foobar2000 le fait par exemple).
Lorsque vous utilisez des codecs de sortie avec perte (tels que MPEG-1 Layer III ou AAC), ffmpeg choisit un débit binaire par défaut pour le flux de sortie, ou un débit binaire variable. Cela dépend de l'encodeur lui-même.
Pour les codecs sans perte, vous ne pouvez pas définir un débit binaire variable, car chaque échantillon prend un nombre prédéfini de bits. ffmpeg -i song.mp3 song.wavvous obtiendrez donc un fichier WAV encodé PCM avec une fréquence d'échantillonnage de 44 100 Hz et 16 bits par échantillon. Cela se traduit par environ 1411 kBit / s pour l'ensemble du conteneur, probablement beaucoup, beaucoup plus gros que le fichier d'entrée MP3.
Si vous souhaitez une taille de fichier plus petite pour le fichier WAV codé PCM, définissez un format d'échantillonnage avec moins de profondeur de bits (voir l' -encodersoption pour une liste complète d'entre eux) et / ou choisissez une fréquence d'échantillonnage inférieure ( -ar 22050utiliserait 22,05 kHz par exemple).
Si vous encodez de l'audio PCM dans un conteneur WAV, vous ne pouvez pas définir le débit binaire. Ça n'a pas de sens. PCM est un format non compressé - vous ne pouvez pas lui dire d'utiliser plus ou moins de bits par seconde. La seule façon d'ajuster la taille est d'utiliser une taille d'échantillon différente (voir -sample_fmtsoption). -ar 128ksignifie que la fréquence d'échantillonnage sera de 128 000 Hz, au lieu des 44,1 ou 48 kHz habituels.
slhck
12
Vous feriez probablement mieux de le faire ffmpeg -i song.mp3 song.wav, car cela choisira le débit approprié (qui est probablement de 44,1 kHz). Si vous vous convertissez en wav, vous ne voulez probablement pas perdre plus d'informations.
naught101
@ naught101 avait raison, en fait il vaut mieux laisser ffpmegchoisir le bon bitrate d'échantillonnage en fonction song.mp3des données d'entrée. De cette façon, le wavfichier bitmap de sortie aura le meilleur débit binaire. Cela signifie que la taille du fichier sera grande, mais avec sur-ajustement des données: `Stream # 0: 0: Audio: mp3, 44100 Hz, stéréo, s16p, 128 kb / s '
loretoparisi
1
Il est assez sûr de supposer que le but du demandeur est de graver les fichiers WAV résultants sur un CD audio. La seule fréquence appropriée pour cela est 44100 Hz, c'est donc -ar 44100un must même si ffmpeg utilise automatiquement un codec 16 bits approprié.
Mikhail T.
3
Selon le commentaire de @ naught101, je suivrais ce processus pour détecter le meilleur acodec:
$ ffmpeg -formats | grep PCM
DE f32be PCM 32-bit floating-point big-endian
DE f32le PCM 32-bit floating-point little-endian
DE f64be PCM 64-bit floating-point big-endian
DE f64le PCM 64-bit floating-point little-endian
DE s16be PCM signed 16-bit big-endian
DE s16le PCM signed 16-bit little-endian
DE s24be PCM signed 24-bit big-endian
DE s24le PCM signed 24-bit little-endian
DE s32be PCM signed 32-bit big-endian
DE s32le PCM signed 32-bit little-endian
DE u16be PCM unsigned 16-bit big-endian
DE u16le PCM unsigned 16-bit little-endian
DE u24be PCM unsigned 24-bit big-endian
DE u24le PCM unsigned 24-bit little-endian
DE u32be PCM unsigned 32-bit big-endian
DE u32le PCM unsigned 32-bit little-endian
À ce stade, pensez à votre plate - forme pour choisir entre big-endian, little-endianle bitrate choisir:
$ ffmpeg -i sample.mp3
[mp3 @ 0x7fb33180da00] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'sample.mp3':
Metadata:
title : Saturday
artist : Winterwood
album : Love In The Heart
track : 2/15
TPA : 1/1
encoded_by : iTunes 11.0.1
genre : Country & Folk
date : 1997
Duration: 00:04:27.76, start: 0.000000, bitrate: 128 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
Nous pouvons voir que ce fichier audio est un mp3(ce n'est pas évident, malgré l'extension du fichier d'entrée, vérifiez simplement les octets) a un débit binaire 128 kb/s, le codec était s16p, échantillonnant à 44100 Hz, alors nous choisissons en conséquence:
$ ffmpeg -i sample.mp3 -acodec pcm_s16le -ar 44100 sample.wav
Input #0, mp3, from 'sample.mp3':
Metadata:
title : Saturday
artist : Winterwood
album : Love In The Heart
track : 2/15
TPA : 1/1
encoded_by : iTunes 11.0.1
genre : Country & Folk
date : 1997
Duration: 00:04:27.76, start: 0.000000, bitrate: 128 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
File 'sample.wav' already exists. Overwrite ? [y/N] y
Output #0, wav, to 'sample.wav':
Metadata:
INAM : Saturday
IART : Winterwood
IPRD : Love In The Heart
IPRT : 2/15
TPA : 1/1
ITCH : iTunes 11.0.1
IGNR : Country & Folk
ICRD : 1997
ISFT : Lavf56.4.101
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
Metadata:
encoder : Lavc56.1.100 pcm_s16le
Stream mapping:
Stream #0:0 -> #0:0 (mp3 (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
size= 46125kB time=00:04:27.75 bitrate=1411.2kbits/s
video:0kB audio:46125kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000457%
Si vous êtes sur mac, vous pouvez vérifier l'audio s'il n'y en a pas white noiseau début / à la fin (lorsque l'audio original mp3 n'a pas d'audio pendant quelques msec / sec):
$ afplay sample.wav
et bien sûr, vous pouvez vérifier le bitmap:
$ ffmpeg -i sample.wav
Input #0, wav, from 'sample.wav':
Metadata:
artist : Winterwood
date : 1997
genre : Country & Folk
title : Saturday
album : Love In The Heart
track : 2/15
encoder : Lavf56.4.101
encoded_by : iTunes 11.0.1
Duration: 00:04:27.76, bitrate: 1411 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s
Utilisez ffmpeg pour convertir le média, vérifiez d'abord les spécifications du fichier à l'aide de ffprobe. utilisez cette commande
ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav
où
-pcm_s16le is codec 16 bit conversion
-ar is sampling rate (16000samples/sec)
-ac no of audio channel
Réponses:
Vous pouvez obtenir des informations sur le débit binaire de vos fichiers d'entrée en utilisant la
ffprobe song.mp3
commande. Cependant, cela vous indique uniquement le débit binaire de la première image. Le VBR dans les fichiers MP3 est généralement implémenté simplement en changeant le débit binaire pour chaque image, donc il n'est pas possible de déterminer s'il est utilisé en lisant simplement l'en-tête de la première image. J'utilise habituellement un autre logiciel de lecture de fichiers audio pour déterminer si le VBR est utilisé, comme beaucoup l'afficheront (Foobar2000 le fait par exemple).Lorsque vous utilisez des codecs de sortie avec perte (tels que MPEG-1 Layer III ou AAC), ffmpeg choisit un débit binaire par défaut pour le flux de sortie, ou un débit binaire variable. Cela dépend de l'encodeur lui-même.
Pour les codecs sans perte, vous ne pouvez pas définir un débit binaire variable, car chaque échantillon prend un nombre prédéfini de bits.
ffmpeg -i song.mp3 song.wav
vous obtiendrez donc un fichier WAV encodé PCM avec une fréquence d'échantillonnage de 44 100 Hz et 16 bits par échantillon. Cela se traduit par environ 1411 kBit / s pour l'ensemble du conteneur, probablement beaucoup, beaucoup plus gros que le fichier d'entrée MP3.Si vous souhaitez une taille de fichier plus petite pour le fichier WAV codé PCM, définissez un format d'échantillonnage avec moins de profondeur de bits (voir l'
-encoders
option pour une liste complète d'entre eux) et / ou choisissez une fréquence d'échantillonnage inférieure (-ar 22050
utiliserait 22,05 kHz par exemple).Voici un exemple de réalisation des deux:
la source
-sample_fmts
option).-ar 128k
signifie que la fréquence d'échantillonnage sera de 128 000 Hz, au lieu des 44,1 ou 48 kHz habituels.ffmpeg -i song.mp3 song.wav
, car cela choisira le débit approprié (qui est probablement de 44,1 kHz). Si vous vous convertissez en wav, vous ne voulez probablement pas perdre plus d'informations.ffpmeg
choisir le bon bitrate d'échantillonnage en fonctionsong.mp3
des données d'entrée. De cette façon, lewav
fichier bitmap de sortie aura le meilleur débit binaire. Cela signifie que la taille du fichier sera grande, mais avec sur-ajustement des données: `Stream # 0: 0: Audio: mp3, 44100 Hz, stéréo, s16p, 128 kb / s '-ar 44100
un must même si ffmpeg utilise automatiquement un codec 16 bits approprié.Selon le commentaire de @ naught101, je suivrais ce processus pour détecter le meilleur
acodec
:À ce stade, pensez à votre plate - forme pour choisir entre
big-endian
,little-endian
le bitrate choisir:Nous pouvons voir que ce fichier audio est un
mp3
(ce n'est pas évident, malgré l'extension du fichier d'entrée, vérifiez simplement les octets) a un débit binaire128 kb/s
, le codec étaits16p
, échantillonnant à44100 Hz
, alors nous choisissons en conséquence:Si vous êtes sur mac, vous pouvez vérifier l'audio s'il n'y en a pas
white noise
au début / à la fin (lorsque l'audio original mp3 n'a pas d'audio pendant quelques msec / sec):et bien sûr, vous pouvez vérifier le bitmap:
la source
Utilisez ffmpeg pour convertir le média, vérifiez d'abord les spécifications du fichier à l'aide de ffprobe. utilisez cette commande
ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav
où
-pcm_s16le is codec 16 bit conversion -ar is sampling rate (16000samples/sec) -ac no of audio channel
la source