¿Qué comando debo usar para convertir un mp3
archivo wav
cuya tasa de bits es variable? O mejor ¿Cómo podría saber si esa fuente de audio es fixed
la tasa de bits o variable
?
¿Qué comando debo usar para convertir un mp3
archivo wav
cuya tasa de bits es variable? O mejor ¿Cómo podría saber si esa fuente de audio es fixed
la tasa de bits o variable
?
Respuestas:
Puede obtener información sobre la tasa de bits de sus archivos de entrada mediante el ffprobe song.mp3
comando. Sin embargo, esto solo le indica la tasa de bits del primer fotograma. El VBR en archivos MP3 generalmente se implementa simplemente cambiando la tasa de bits para cada cuadro, por lo que no se puede determinar si se está utilizando simplemente leyendo el encabezado del primer cuadro. Usualmente uso algún otro software de reproducción de archivos de audio para determinar si se está utilizando VBR, ya que muchos lo mostrarán (Foobar2000 lo hace, por ejemplo).
Cuando utiliza códecs de salida con pérdida (como MPEG-1 Layer III o AAC), ffmpeg elige una tasa de bits predeterminada para la secuencia de salida, o una tasa de bits variable. Depende del codificador en sí.
Para códecs sin pérdidas, no puede establecer una tasa de bits variable, ya que cada muestra toma un número predefinido de bits. ffmpeg -i song.mp3 song.wav
por lo tanto, obtendrá un archivo WAV codificado por PCM con una frecuencia de muestreo de 44,100 Hz y 16 bits por muestra. Esto resulta en aproximadamente 1411 kBit / s para todo el contenedor, probablemente mucho, mucho más grande que el archivo de entrada MP3.
Si desea un tamaño de archivo más pequeño para el archivo WAV codificado por PCM, configure un formato de muestra con menos profundidad de bits (consulte la -encoders
opción para obtener una lista completa de ellos) y / o elija una frecuencia de muestreo más baja ( -ar 22050
usaría 22.05 kHz por ejemplo).
Aquí hay un ejemplo de hacer ambas cosas:
ffmpeg -i song.mp3 -acodec pcm_u8 -ar 22050 song.wav
-sample_fmts
opción). -ar 128k
significa que la frecuencia de muestreo será de 128,000 Hz, en lugar de la habitual de 44,1 o 48 kHz.
ffmpeg -i song.mp3 song.wav
, ya que eso elegirá la tasa de bits adecuada (que probablemente sea 44.1khz). Si está convirtiendo a wav, probablemente no quiera perder más información ..
ffpmeg
elegir la tasa de bits de muestreo correcta de acuerdo con los song.mp3
datos de entrada. De esta manera, el wav
archivo de mapa de bits de salida tendrá la mejor tasa de bits. Esto significa por cierto que el tamaño del archivo será excelente, pero con el sobreajuste de los datos: `Stream # 0: 0: Audio: mp3, 44100 Hz, estéreo, s16p, 128 kb / s`
-ar 44100
es imprescindible incluso si ffmpeg usará automáticamente un códec de 16 bits adecuado.
Según el comentario de @ naught101, seguiría este proceso para detectar lo mejor 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
En este punto, considere su plataforma que elegir entre big-endian
, little-endian
, el elegir el bitrate:
$ 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
Podemos ver que este archivo de audio es un mp3
(esto no es obvio, a pesar de la extensión del archivo de entrada, solo verifique los bytes) tiene una tasa de bits de 128 kb/s
, el códec s16p
, el muestreo en 44100 Hz
, por lo que elegimos en consecuencia:
$ 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 está en Mac, puede verificar el audio si no tiene white noise
al principio / final (cuando el audio original mp3 no tiene audio durante algunos ms / seg):
$ afplay sample.wav
y, por supuesto, puede verificar el mapa de bits:
$ 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
Use ffmpeg para convertir los medios, primero verifique las especificaciones del archivo usando ffprobe. usa este comando
ffmpeg -i kimberly.wav -acodec pcm_s16le -ar 16000 -ac 1 song.wav
dónde
-pcm_s16le is codec 16 bit conversion
-ar is sampling rate (16000samples/sec)
-ac no of audio channel