[FFmpeg-user] Audio automatically resampled to 8bit from 24bit when using concat and lavfi nullsrc

morgan holly morganh at mac.com
Sat Apr 9 18:22:19 EEST 2022


this is part question and part warning. When I run the cmd below FFMPEG automatically knocks my 24bit source audio down to 8bits(!). I was able to change that by adding 'aformat=sample_fmts=s32' into the filterchain for the anullsrc inputs.

The warning is: make sure you check your output quality if you use lavfi slugs with your audio. 24->8bits, yikes.

The question is: Can I specify the format of the nullsource when using lavfi. Seems dangerous that it defaults to fmt:u8. Am I doing something wrong?

Here is the spot in the log where it reports the bit depth change (log level 48):
[format_out_0_0 @ 0x134709b60] auto-inserting filter 'auto_resampler_1' between the filter 'Parsed_concat_0' and the filter 'format_out_0_0'
[AVFilterGraph @ 0x1347084b0] query_formats: 9 queried, 18 merged, 6 already done, 0 delayed
[auto_resampler_0 @ 0x134606c70] [SWR @ 0x118008000] Using fltp internally between filters
[auto_resampler_0 @ 0x134606c70] [SWR @ 0x118008000] Treating 1 channels (FL) as mono
[auto_resampler_0 @ 0x134606c70] [SWR @ 0x118008000] Matrix coefficients:
[auto_resampler_0 @ 0x134606c70] [SWR @ 0x118008000] FC: FC:1.000000 
[auto_resampler_0 @ 0x134606c70] ch:1 chl:1 channels (FL) fmt:s32 r:48000Hz -> ch:1 chl:mono fmt:u8 r:48000Hz

Here is the ffmpeg cmd (16bit wav output):
ffmpeg -loglevel 48 -y -f lavfi -t 1.724 -i anullsrc=channel_layout=mono:sample_rate=48000 -ss 120 -t 30.327979 -i /tmp/2ch.mov -f lavfi -t 1.724 -i anullsrc=channel_layout=mono:sample_rate=48000 -filter_complex "[0:a:0][1:a:0][2:a:0]concat=n=3:v=0:a=1[sf1_out]" -map [sf1_out] /tmp/noisetest.wav

Here is the cmd line output:
ffmpeg version 4.4.1 Copyright (c) 2000-2021 the FFmpeg developers
  built with Apple clang version 13.1.6 (clang-1316.0.21.2)
  configuration: 
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
Input #0, lavfi, from 'anullsrc=channel_layout=mono:sample_rate=48000':
  Duration: N/A, start: 0.000000, bitrate: 384 kb/s
  Stream #0:0: Audio: pcm_u8, 48000 Hz, mono, u8, 384 kb/s
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/2ch.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2016-07-11T16:36:32.000000Z
    com.apple.quicktime.player.movie.audio.gain: 1.000000
    com.apple.quicktime.player.movie.audio.treble: 0.000000
    com.apple.quicktime.player.movie.audio.bass: 0.000000
    com.apple.quicktime.player.movie.audio.balance: 0.000000
    com.apple.quicktime.player.movie.audio.pitchshift: 0.000000
    com.apple.quicktime.player.movie.audio.mute: 
    com.apple.quicktime.player.version: 7.6.6 (7.6.6)
    com.apple.quicktime.version: 7.7.3 (2890.9) 0x7738000 (Mac OS X, 10.10.5, 14F1605)
    timecode        : 00:00:00:00
  Duration: 00:52:43.08, start: 0.000000, bitrate: 2304 kb/s
  Stream #1:0(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (FL), s32 (24 bit), 1152 kb/s (default)
    Metadata:
      creation_time   : 2016-07-11T16:36:32.000000Z
      handler_name    : Apple Sound Media Handler
      vendor_id       : [0][0][0][0]
  Stream #1:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (FR), s32 (24 bit), 1152 kb/s (default)
    Metadata:
      creation_time   : 2016-07-11T16:36:32.000000Z
      handler_name    : Apple Sound Media Handler
      vendor_id       : [0][0][0][0]
  Stream #1:2(eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2016-07-11T16:36:32.000000Z
      handler_name    : Time Code Media Handler
      reel_name       : TEST
      timecode        : 00:00:00:00
Input #2, lavfi, from 'anullsrc=channel_layout=mono:sample_rate=48000':
  Duration: N/A, start: 0.000000, bitrate: 384 kb/s
  Stream #2:0: Audio: pcm_u8, 48000 Hz, mono, u8, 384 kb/s
Stream mapping:
  Stream #0:0 (pcm_u8) -> concat:in0:a0
  Stream #1:0 (pcm_s24le) -> concat:in1:a0
  Stream #2:0 (pcm_u8) -> concat:in2:a0
  concat -> Stream #0:0 (pcm_s16le)
Press [q] to stop, [?] for help
Output #0, wav, to '/tmp/noisetest.wav':
  Metadata:
    ISFT            : Lavf58.76.100
  Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, mono, s16, 768 kb/s (default)
    Metadata:
      encoder         : Lavc58.134.100 pcm_s16le


Thanks!


More information about the ffmpeg-user mailing list