Comment modifier la profondeur de bits dans FFmpeg?

14

J'ai besoin de FFmpeg pour saisir un flux audio et le recoder en FLAC 16 bits.

Comment forcer une sortie FLAC 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%
xulen
la source

Réponses:

25

Par défaut, l'encodeur FFmpeg FLAC prend la profondeur de bits de l'original. La profondeur de bits peut être modifiée avec l' sample_fmtoption, par ex.

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

Notez que tous les formats ne sont pas pris en charge par tous les encodeurs.

Pour obtenir la liste de tous les exemples de formats pris en charge, exécutez:

ffmpeg -sample_fmts

Voir le chapitre Options audio dans la documentation de la ligne de commande FFmpeg.

slhck
la source
Cela génère une sortie avec une profondeur de bits de 4 pour moi, même lorsque je le spécifie s16(profondeur de bits 16). Commande complète:ffmpeg -i newwave.wav -c:a adpcm_ima_qt -sample_fmt s16 -ar 22500 newwave.aiff
xjcl
@xjcl Le codec que vous utilisez ne prend en charge que 4 bits.
slhck
Quelle est la différence entre par exemple s16ets16p
theonlygusti
Cela ne fonctionne pas pour moi. J'obtiens "Le format d'échantillon spécifié s16 n'est pas valide ou n'est pas pris en charge"
Arete
@Arete Veuillez vous assurer que vous utilisez une version récente de ffmpeg et que vous utilisez bien l' flacencodeur avec un fichier de sortie FLAC. Le format d'échantillon doit être compatible avec l'encodeur choisi.
slhck