¿Cómo cambio la profundidad de bits en FFmpeg?


14

Necesito FFmpeg para tomar una fuente de audio y volver a codificarla en FLAC de 16 bits.

¿Cómo forzo una salida FLAC de 16 bits?

./ffmpeg -i http://7359.live.streamtheworld.com:80/CONTINENTALAAC_SC -vn -ac 1 -ar 16000 -acodec flac -map 0 -f segment -segment_list /flac/out.list -segment_time 00:00:12.00 /flac/out%03d.flac
ffmpeg version N-49622-g127ff88 Copyright (c) 2000-2013 the FFmpeg developers
  built on Feb  6 2013 05:11:38 with gcc 4.6 (Debian 4.6.3-1)
  configuration: --prefix=/root/ffmpeg-static/32bit --arch=x86_32 --extra-cflags='-m32 -I/root/ffmpeg-static/32bit/include -static' --extra-ldflags='-m32 -L/root/ffmpeg-static/32bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
  libavutil      52. 17.101 / 52. 17.101
  libavcodec     54. 91.100 / 54. 91.100
  libavformat    54. 61.104 / 54. 61.104
  libavdevice    54.  3.103 / 54.  3.103
  libavfilter     3. 35.101 /  3. 35.101
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
[aac @ 0xa163680] max_analyze_duration 5000000 reached at 5015510 microseconds
[aac @ 0xa163680] Estimating duration from bitrate, this may be inaccurate
Input #0, aac, from 'http://7359.live.streamtheworld.com:80/CONTINENTALAAC_SC':
  Duration: 150:52:44.61, bitrate: 29 kb/s
    Stream #0:0: Audio: aac, 44100 Hz, stereo, fltp, 29 kb/s
[flac @ 0xa16ee40] encoding as 24 bits-per-sample
Output #0, segment, to '/flac/out%03d.flac':
  Metadata:
    encoder         : Lavf54.61.104
    Stream #0:0: Audio: flac, 16000 Hz, mono, s32, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (aac -> flac)
Press [q] to stop, [?] for help
size=N/A time=00:00:19.22 bitrate=N/A    
video:0kB audio:647kB subtitle:0 global headers:0kB muxing overhead -100.003322%

Respuestas:


25

Por defecto, el codificador FFmpeg FLAC toma la profundidad de bits del original. La profundidad de bits se puede cambiar con la sample_fmtopción, p. Ej.

ffmpeg -i … -c:a flac -sample_fmt s16 output.flac

Tenga en cuenta que no todos los codificadores admiten todos los formatos.

Para obtener una lista de todos los formatos de muestra compatibles, ejecute:

ffmpeg -sample_fmts

Consulte el capítulo Opciones de audio en la documentación de la línea de comandos de FFmpeg.


Esto genera una salida con una profundidad de bits de 4 para mí, incluso cuando especifico s16(profundidad de bits 16). Comando completo:ffmpeg -i newwave.wav -c:a adpcm_ima_qt -sample_fmt s16 -ar 22500 newwave.aiff
xjcl

@xjcl El códec que está utilizando solo admite 4 bits.
slhck

¿Cuál es la diferencia entre eg s16ys16p
theonlygusti

Esto no funciona para mi. Obtengo "El formato de muestra especificado s16 no es válido o no es compatible"
Arete

@Arete Asegúrese de estar ejecutando una versión reciente de ffmpeg y de que esté utilizando el flaccodificador con un archivo de salida FLAC. El formato de muestra debe ser compatible con el codificador elegido.
slhck
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.