Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#7465 closed defect (invalid)

MP3 24-bit (fmt:s32p) is displayed in the log, but the transcoded file is not

Reported by: Samuel Owned by:
Priority: normal Component: undetermined
Version: git-master Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:
Transcoding FLAC 24-bit stream to MP3 display a weird logging message for the output:
"Stream #0:0, 0, 1/48000: Audio: mp3 (libmp3lame), 48000 Hz, stereo, s32p (24 bit), 320 kb/s"
But the output file is not, as expected by the standard AFAIK.

How to reproduce:

ffmpeg started on 2018-10-01 at 14:53:26
Report written to "ffmpeg-20181001-145326.log"
Command line:
ffmpeg.exe -report -y -i "F:\\_DEVELOPPEMENT_TOOLS\\!MEDIA_TEST_FILES\\AUDIO\\FLAC\\DOUBLE\\surround88-24b-6ch.flac" -vn -dn -f mp3 -b:a 320000 NUL
ffmpeg version N-91977-ge33b28cc79 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 8.2.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-avisynth --enable-fontconfig --enable-gnutls --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libilbc --enable-libkvazaar --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libxml2 --enable-libzimg --enable-opengl --enable-pthreads --disable-w32threads --disable-dxva2 --disable-debug --pkg-config-flags=--static --extra-ldflags=-static --extra-cflags='-mtune=generic -mfpmath=sse -msse' --cpu=i686 --optflags='-O2 -finline-fun  libavutil      56. 19.101 / 56. 19.101
  libavcodec     58. 30.100 / 58. 30.100
  libavformat    58. 18.101 / 58. 18.101
  libavdevice    58.  4.103 / 58.  4.103
  libavfilter     7. 32.100 /  7. 32.100
  libswscale      5.  2.100 /  5.  2.100
  libswresample   3.  2.100 /  3.  2.100
  libpostproc    55.  2.100 / 55.  2.100
Splitting the commandline.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Reading option '-i' ... matched as input url with argument 'F:\_DEVELOPPEMENT_TOOLS\!MEDIA_TEST_FILES\AUDIO\FLAC\DOUBLE\surround88-24b-6ch.flac'.
Reading option '-vn' ... matched as option 'vn' (disable video) with argument '1'.
Reading option '-dn' ... matched as option 'dn' (disable data) with argument '1'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'mp3'.
Reading option '-b:a' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '320000'.
Reading option 'NUL' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url F:\_DEVELOPPEMENT_TOOLS\!MEDIA_TEST_FILES\AUDIO\FLAC\DOUBLE\surround88-24b-6ch.flac.
Successfully parsed a group of options.
Opening an input file: F:\_DEVELOPPEMENT_TOOLS\!MEDIA_TEST_FILES\AUDIO\FLAC\DOUBLE\surround88-24b-6ch.flac.
[NULL @ 08021580] Opening 'F:\_DEVELOPPEMENT_TOOLS\!MEDIA_TEST_FILES\AUDIO\FLAC\DOUBLE\surround88-24b-6ch.flac' for reading
[file @ 080221c0] Setting default whitelist 'file,crypto'
[flac @ 08021580] Format flac probed with size=2048 and score=100
[flac @ 08021580] Before avformat_find_stream_info() pos: 8438 bytes read:32768 seeks:0 nb_streams:1
[flac @ 08021580] All info found
[flac @ 08021580] After avformat_find_stream_info() pos: 10486 bytes read:32768 seeks:0 frames:1
Input #0, flac, from 'F:\_DEVELOPPEMENT_TOOLS\!MEDIA_TEST_FILES\AUDIO\FLAC\DOUBLE\surround88-24b-6ch.flac':
  Duration: 00:00:56.34, start: 0.000000, bitrate: 999 kb/s
    Stream #0:0, 1, 1/88200: Audio: flac, 88200 Hz, 5.1, s32 (24 bit)
Successfully opened the file.
Parsing a group of options: output url NUL.
Applying option vn (disable video) with argument 1.
Applying option dn (disable data) with argument 1.
Applying option f (force format) with argument mp3.
Applying option b:a (video bitrate (please use -b:v)) with argument 320000.
Successfully parsed a group of options.
Opening an output file: NUL.
[file @ 08068a80] Setting default whitelist 'file,crypto'
Successfully opened the file.
detected 1 logical cores
Stream mapping:
  Stream #0:0 -> #0:0 (flac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
[graph_0_in_0_0 @ 08067280] Setting 'time_base' to value '1/88200'
[graph_0_in_0_0 @ 08067280] Setting 'sample_rate' to value '88200'
[graph_0_in_0_0 @ 08067280] Setting 'sample_fmt' to value 's32'
[graph_0_in_0_0 @ 08067280] Setting 'channel_layout' to value '0x3f'
[graph_0_in_0_0 @ 08067280] tb:1/88200 samplefmt:s32 samplerate:88200 chlayout:0x3f
[format_out_0_0 @ 08067f80] Setting 'sample_fmts' to value 's32p|fltp|s16p'
[format_out_0_0 @ 08067f80] Setting 'sample_rates' to value '44100|48000|32000|22050|24000|16000|11025|12000|8000'
[format_out_0_0 @ 08067f80] Setting 'channel_layouts' to value '0x4|0x3'
[format_out_0_0 @ 08067f80] auto-inserting filter 'auto_resampler_0' between the filter 'Parsed_anull_0' and the filter 'format_out_0_0'
[AVFilterGraph @ 08067080] query_formats: 4 queried, 6 merged, 3 already done, 0 delayed
[auto_resampler_0 @ 080c4b80] picking s32p out of 3 ref:s32
[auto_resampler_0 @ 080c4b80] [SWR @ 080c5000] Using fltp internally between filters
[auto_resampler_0 @ 080c4b80] [SWR @ 080c5000] Matrix coefficients:
[auto_resampler_0 @ 080c4b80] [SWR @ 080c5000] FL: FL:0.414214 FR:0.000000 FC:0.292893 LFE:0.000000 BL:0.292893 BR:0.000000 
[auto_resampler_0 @ 080c4b80] [SWR @ 080c5000] FR: FL:0.000000 FR:0.414214 FC:0.292893 LFE:0.000000 BL:0.000000 BR:0.292893 
[auto_resampler_0 @ 080c4b80] ch:6 chl:5.1 fmt:s32 r:88200Hz -> ch:2 chl:stereo fmt:s32p r:48000Hz
Output #0, mp3, to 'NUL':
  Metadata:
    TSSE            : Lavf58.18.101
    Stream #0:0, 0, 1/48000: Audio: mp3 (libmp3lame), 48000 Hz, stereo, s32p (24 bit), 320 kb/s
    Metadata:
      encoder         : Lavc58.30.100 libmp3lame
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
size=      91kB time=2.28 bitrate= 326.8kbits/s speed=4.53x    
size=     182kB time=4.61 bitrate= 323.3kbits/s speed=4.57x    
size=     256kB time=6.79 bitrate= 308.7kbits/s speed=4.49x    
size=     256kB time=8.98 bitrate= 233.6kbits/s speed=4.44x    
size=     256kB time=11.33 bitrate= 185.1kbits/s speed=4.49x    
size=     512kB time=13.61 bitrate= 308.2kbits/s speed= 4.5x    
size=     512kB time=15.98 bitrate= 262.4kbits/s speed=4.53x    
size=     512kB time=18.17 bitrate= 230.8kbits/s speed=4.51x    
size=     768kB time=20.59 bitrate= 305.5kbits/s speed=4.54x    
size=     768kB time=22.44 bitrate= 280.4kbits/s speed=4.45x    
size=     768kB time=23.78 bitrate= 264.5kbits/s speed=4.28x    
size=     768kB time=25.42 bitrate= 247.5kbits/s speed=4.19x    
size=    1024kB time=26.81 bitrate= 312.9kbits/s speed=4.08x    
size=    1024kB time=28.49 bitrate= 294.5kbits/s speed=4.01x    
size=    1024kB time=30.62 bitrate= 273.9kbits/s speed=4.03x    
size=    1024kB time=32.02 bitrate= 262.0kbits/s speed=3.95x    
size=    1280kB time=33.86 bitrate= 309.6kbits/s speed=3.93x    
size=    1280kB time=36.19 bitrate= 289.7kbits/s speed=3.97x    
size=    1280kB time=38.59 bitrate= 271.7kbits/s speed=4.01x    
size=    1536kB time=40.73 bitrate= 308.9kbits/s speed=4.02x    
[NULL @ 08033000] dropping low score -59 frame header from offset 35 to 6415
size=    1536kB time=42.91 bitrate= 293.2kbits/s speed=4.04x    
size=    1536kB time=44.18 bitrate= 284.8kbits/s speed=3.97x    
size=    1792kB time=46.13 bitrate= 318.2kbits/s speed=3.96x    
size=    1792kB time=48.48 bitrate= 302.8kbits/s speed=3.99x    
size=    1792kB time=50.50 bitrate= 290.7kbits/s speed=3.99x    
size=    2048kB time=52.44 bitrate= 319.9kbits/s speed=3.99x    
size=    2048kB time=54.53 bitrate= 307.7kbits/s speed=3.99x    
[out_0_0 @ 08067580] EOF on sink link out_0_0:default.
No more output streams to write to, finishing.
[libmp3lame @ 08024980] Trying to remove 436 more samples than there are in the queue
size=    2203kB time=56.35 bitrate= 320.3kbits/s speed=   4x    
video:0kB audio:2202kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.044567%
Input file #0 (F:\_DEVELOPPEMENT_TOOLS\!MEDIA_TEST_FILES\AUDIO\FLAC\DOUBLE\surround88-24b-6ch.flac):
  Input stream #0:0 (audio): 1214 packets read (7032652 bytes); 1214 frames decoded (4969531 samples); 
  Total: 1214 packets (7032652 bytes) demuxed
Output file #0 (NUL):
  Output stream #0:0 (audio): 2348 frames encoded (2704507 samples); 2349 packets muxed (2255040 bytes); 
  Total: 2349 packets (2255040 bytes) muxed
1214 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0804e740] Statistics: 1 seeks, 10 writeouts
[AVIOContext @ 0802a500] Statistics: 7041090 bytes read, 0 seeks

Change History (8)

comment:1 by Cigaes, 6 years ago

But the output file is not, as expected by the standard AFAIK.

Can you clarify what it means? What do you find incorrect in the output file, and with what tool do you experience an issue?

comment:2 by Samuel, 6 years ago

I think that MP3 could only be 16-bit.

FFmpeg real output is different of what was said in the log when transcoding.
The output file analyszed by FFmpeg is the following:

ffmpeg started on 2018-10-01 at 15:19:31
Report written to "ffmpeg-20181001-151931.log"
Command line:
ffmpeg -report -i MP3Test.mp3
ffmpeg version N-91977-ge33b28cc79 Copyright (c) 2000-2018 the FFmpeg developers

built with gcc 8.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-avisynth --enable-fontconfig --enable-gnutls --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libilbc --enable-libkvazaar --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libxml2 --enable-libzimg --enable-opengl --enable-pthreads --disable-w32threads --disable-dxva2 --disable-debug --pkg-config-flags=--static --extra-ldflags=-static --extra-cflags='-mtune=generic -mfpmath=sse -msse' --cpu=i686 --optflags='-O2 -finline-fun libavutil 56. 19.101 / 56. 19.101
libavcodec 58. 30.100 / 58. 30.100
libavformat 58. 18.101 / 58. 18.101
libavdevice 58. 4.103 / 58. 4.103
libavfilter 7. 32.100 / 7. 32.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100

Splitting the commandline.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Reading option '-i' ... matched as input url with argument 'MP3Test.mp3'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url MP3Test.mp3.
Successfully parsed a group of options.
Opening an input file: MP3Test.mp3.
[NULL @ 08021080] Opening 'MP3Test.mp3' for reading
[file @ 08021c00] Setting default whitelist 'file,crypto'
[mp3 @ 08021080] Format mp3 probed with size=8192 and score=51
id3v2 ver:4 flags:00 len:35
[mp3 @ 08021080] pad 576 965
[mp3 @ 08021080] Skipping 0 bytes of junk at 1005.
[mp3 @ 08021080] Before avformat_find_stream_info() pos: 1005 bytes read:32768 seeks:0 nb_streams:1
[mp3 @ 08021080] demuxer injecting skip 1105 / discard 0
[mp3float @ 08035f80] skip 1105 / discard 0 samples due to side data
[mp3float @ 08035f80] skip 1105/1152 samples
[mp3 @ 08021080] All info found
[mp3 @ 08021080] After avformat_find_stream_info() pos: 49133 bytes read:65536 seeks:0 frames:50
Input #0, mp3, from 'MP3Test.mp3':

Metadata:

encoder : Lavf58.18.101

Duration: 00:00:56.38, start: 0.023021, bitrate: 320 kb/s

Stream #0:0, 50, 1/14112000: Audio: mp3, 48000 Hz, stereo, fltp, 320 kb/s
Metadata:

encoder : Lavc58.30

Successfully opened the file.
At least one output file must be specified
[AVIOContext @ 08029e80] Statistics: 65536 bytes read, 0 seeks

comment:3 by Samuel, 6 years ago

Saying it encode with format s32p but the real output is fltp one.

comment:4 by Samuel, 6 years ago

FFmpeg seem incoherent to me, but if i'm wrong feel free to close that issue.
Thanks.

comment:5 by Cigaes, 6 years ago

MP3 “is” neither 16 nor 32 bits because MP3 does not store samples, it stores rounded Fourier coefficients.

The output of FFmpeg tells you that libmp3lame will accept 32 bits samples and encode them to MP3, and later that the decoder will produce floating point samples. This is not a really useful information for a lossy codec.

comment:6 by Samuel, 6 years ago

Oh i see, thank you very much for having taked the time to explain me +1

comment:7 by Samuel, 6 years ago

Resolution: invalid
Status: newclosed

comment:8 by Carl Eugen Hoyos, 6 years ago

Component: avformatundetermined
Keywords: MP3 24-bit removed
Priority: minornormal
Type: enhancementdefect
Note: See TracTickets for help on using tickets.