¿Qué comando debo usar para convertir un mp3archivo wavcuya tasa de bits es variable? O mejor ¿Cómo podría saber si esa fuente de audio es fixedla tasa de bits o variable?
No creo que el formato de archivo WAV sea compatible con velocidades de bits variables. Dado que todos los decodificadores de MP3 deben ser compatibles con los estándares, debe poder convertir cualquier archivo MP3 en un WAV de tasa de bits fija, aunque sus resultados variarán dependiendo de la calidad del MP3 de origen y la tasa de bits fija elegida para el WAV creado. La mayoría del software de reproducción de MP3 proporciona una forma de ver las propiedades del archivo que se está reproduciendo, por lo que puede usar uno para ver qué tipo de archivos fuente está tratando.
Martineau
¿Y qué hay del comando? ¿Que recomiendas?
Soham Dasgupta
Por favor lea la respuesta de martineau nuevamente. Corrija algunos errores. En particular, no puede establecer la tasa de bits para archivos WAV codificados por PCM.
slhck
Respuestas:
36
Puede obtener información sobre la tasa de bits de sus archivos de entrada mediante el ffprobe song.mp3comando. 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.wavpor 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 -encodersopción para obtener una lista completa de ellos) y / o elija una frecuencia de muestreo más baja ( -ar 22050usaría 22.05 kHz por ejemplo).
Si codifica audio PCM en un contenedor WAV, no puede establecer la tasa de bits. Eso no tiene sentido. PCM es un formato sin comprimir: no puede decirle que use más o menos bits por segundo. La única forma de ajustar el tamaño es usar un tamaño de muestra diferente (ver -sample_fmtsopción). -ar 128ksignifica que la frecuencia de muestreo será de 128,000 Hz, en lugar de la habitual de 44,1 o 48 kHz.
slhck
12
Probablemente sea mejor hacerlo 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 ..
naught101
@ naught101 tenía razón, de hecho es mejor dejar ffpmegelegir la tasa de bits de muestreo correcta de acuerdo con los song.mp3datos de entrada. De esta manera, el wavarchivo 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`
loretoparisi
1
Es bastante seguro suponer que el propósito del autor de la pregunta es grabar los archivos WAV resultantes en un CD de audio. La única frecuencia adecuada para eso es 44100 Hz, por lo que -ar 44100es imprescindible incluso si ffmpeg usará automáticamente un códec de 16 bits adecuado.
Mikhail T.
3
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 noiseal 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
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:
fuente
-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 lossong.mp3
datos de entrada. De esta manera, elwav
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
:En este punto, considere su plataforma que elegir entre
big-endian
,little-endian
, el elegir el bitrate: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 de128 kb/s
, el códecs16p
, el muestreo en44100 Hz
, por lo que elegimos en consecuencia: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):y, por supuesto, puede verificar el mapa de bits:
fuente
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
fuente