Opened 4 months ago

#7046 new defect

Cannot select channel layout when loudnorm filter is used

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

Description

Using a loudnorm and an aresample filter in a chain results in:

Cannot select channel layout for the link between filters Parsed_aresample_1 and format_out_0_1.
Error reinitializing filters''

I would expect FFmpeg to use the input channel layout for output like it usually does.

A simple example command to test this:

%ffmpeg -y -i test.mp4 -filter:a loudnorm,aresample=44100 -c:v copy -c:a aac out.mp4                                                [1] 
ffmpeg version N-45155-gb6652f510-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2018 the FFmpeg developers                                                                                          
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516                                                 
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg     
  libavutil      56.  7.101 / 56.  7.101            
  libavcodec     58. 12.102 / 58. 12.102            
  libavformat    58.  9.100 / 58.  9.100            
  libavdevice    58.  2.100 / 58.  2.100            
  libavfilter     7. 12.100 /  7. 12.100            
  libswscale      5.  0.101 /  5.  0.101            
  libswresample   3.  0.101 /  3.  0.101            
  libpostproc    55.  0.100 / 55.  0.100            
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'norm-test-enc.mp4':                                             
  Metadata:                                         
    major_brand     : isom                          
    minor_version   : 512                           
    compatible_brands: isomiso2avc1mp41             
    encoder         : Lavf57.83.100                 
  Duration: 00:02:00.02, start: 0.000000, bitrate: 1217 kb/s                                             
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 1079 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)                                                                           
    Metadata:                                       
      handler_name    : VideoHandler                
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)    
    Metadata:                                       
      handler_name    : SoundHandler                
Stream mapping:                                     
  Stream #0:0 -> #0:0 (copy)                        
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))                                                     
Press [q] to stop, [?] for help                     
[Parsed_aresample_1 @ 0x5a86040] Cannot select channel layout for the link between filters Parsed_aresample_1 and format_out_0_1.                                                                                  
Error reinitializing filters!                       
Failed to inject frame into filter network: Invalid argument                                             
Error while processing the decoded data for stream #0:1                                                  
Conversion failed!

The same command works if I set a fixed channel layout:

ffmpeg -i in.mp4 -filter:a loudnorm,aresample=44100 -c:v copy -c:a aac -ac 2 out.mp4

Setting no fixed channel layout but removing the loadnorm filter works fine as well:

ffmpeg -i in.mp4 -filter:a aresample=44100 -c:v copy -c:a aac out.mp4

Change History (0)

Note: See TracTickets for help on using tickets.