FFmpeg sample_fmt en realidad no cambia la profundidad de bits + faltan formatos de muestra compatibles

FFmpeg sample_fmt en realidad no cambia la profundidad de bits + faltan formatos de muestra compatibles

Descargo de responsabilidad: soy un principiante en todo esto, esta pregunta puede ser estúpida

Estoy intentando cambiar la profundidad de bits de un archivo mp3 de 32 a 16 y también cambiar la tasa de bits.

Este es mi comando: ffmpeg -i input.mp3 -sample_fmt s16p -vsync 2 -b:a 256k output2.mp3 la tasa de bits cambia correctamente pero la profundidad de bits no.

Estos son los resultados.

Fichero de entrada: ffprobe -i input.mp3

Duration: 00:04:40.08, start: 0.025056, bitrate: 323 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 320 kb/s

Archivo de salida: ffprobe -i output.mp3

Duration: 00:04:40.08, start: 0.025056, bitrate: 283 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 256 kb/s

O de otra manera esto es lo que me da el codec multimedia de VLC: Información de medios actual

Podemos ver fltp que creo que después de una búsqueda en Google significa 32 bits.

Ahora esto está usandos16ppero si lo intentos16Obtengo lo siguiente:

[libmp3lame @ 000001645fdcaec0] Specified sample format s16 is not supported by the libmp3lame encoder
[libmp3lame @ 000001645fdcaec0] Supported sample formats:
[libmp3lame @ 000001645fdcaec0]   s32p
[libmp3lame @ 000001645fdcaec0]   fltp
[libmp3lame @ 000001645fdcaec0]   s16p

Interesante, porque si escribo ffmpeg -sample_fmtsme sale esto:

name   depth
u8        8
s16      16
s32      32
flt      32
dbl      64
u8p       8
s16p     16
s32p     32
fltp     32
dblp     64
s64      64
s64p     64

¿Lo que parece significar que s16 debería funcionar, no? ¿Me estoy perdiendo algo por completo aquí? ¿Qué está pasando?

Respuesta1

Los datos comprimidos en un archivo MP3 están codificados para que no tengan ningún formato de almacenamiento inherente ni profundidad de bits. Se Supported sample formatsrefiere a los formatos de muestra que el codificador acepta para su procesamiento.

El formato de muestra que se muestra para salida.mp3 es lo que emite el decodificador. De forma predeterminada, ffmpeg utiliza el decodificador mp3float que genera muestras de punto flotante de precisión simple. Para obtener un entero de 16 bits, fuerce el decodificador de punto fijo de mp3,

ffmpeg -c:a mp3 -i output.mp3

(ffprobe no admite especificaciones de decodificador personalizadas)

información relacionada