0

I am trying to use ffmpeg to determine the overall media volume. I use only one pass :

ffmpeg -i C:\Users\User\Desktop\test.mp4 -af loudnorm=I=-23:tp=-1:LRA=15:print_format=json -f null -

Out:

C:\Users\User\Desktop\ffmpeg-4.2.1-win64-static\bin>ffmpeg -i C:\Users\User\Desktop\test.mp4  -af loudnorm=I=-23:tp=-1:LRA=15:print_format=json -f null -
ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 9.1.1 (GCC) 20190807
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Users\User\Desktop\test.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2019-01-31T07:52:41.000000Z
    encoder         : Lavf57.57.100
  Duration: 00:00:11.00, start: 0.000000, bitrate: 10459 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x576 [SAR 16:15 DAR 4:3], 8918 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      creation_time   : 2019-01-31T07:52:41.000000Z
      handler_name    : VideoHandler
      timecode        : 00:00:00:00
    Stream #0:1(und): Audio: pcm_s16be (twos / 0x736F7774), 48000 Hz, stereo, s16, 1536 kb/s (default)
    Metadata:
      creation_time   : 2019-01-31T07:52:41.000000Z
      handler_name    : SoundHandler
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
    Metadata:
      creation_time   : 2019-01-31T07:52:41.000000Z
      handler_name    : TimeCodeHandler
      timecode        : 00:00:00:00
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> wrapped_avframe (native))
  Stream #0:1 -> #0:1 (pcm_s16be (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, null, to 'pipe:':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.29.100
    Stream #0:0(und): Video: wrapped_avframe, yuv420p, 720x576 [SAR 16:15 DAR 4:3], q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc (default)
    Metadata:
      creation_time   : 2019-01-31T07:52:41.000000Z
      handler_name    : VideoHandler
      timecode        : 00:00:00:00
      encoder         : Lavc58.54.100 wrapped_avframe
    Stream #0:1(und): Audio: pcm_s16le, 192000 Hz, stereo, s16, 6144 kb/s (default)
    Metadata:
      creation_time   : 2019-01-31T07:52:41.000000Z
      handler_name    : SoundHandler
      encoder         : Lavc58.54.100 pcm_s16le
[null @ 00000191eeeb7740] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 274 >= 274
frame=  275 fps=0.0 q=-0.0 Lsize=N/A time=00:00:11.04 bitrate=N/A speed=15.8x
video:144kB audio:8250kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[Parsed_loudnorm_0 @ 00000191eee03500]
{
        "input_i" : "-22.39",
        "input_tp" : "-11.87",
        "input_lra" : "5.20",
        "input_thresh" : "-32.54",
        "output_i" : "-21.67",
        "output_tp" : "-10.61",
        "output_lra" : "4.90",
        "output_thresh" : "-31.82",
        "normalization_type" : "dynamic",
        "target_offset" : "-1.33"
}

On short media (less than 30 seconds), the results of ffmpeg begin to differ significantly from similar checks in Adobe Premier Pro or Orban. When checking this file in Orban. When checking this file in Adobe Premier Pro.

Why it happens? And what data is more accurate in this case?

0

The loudnorm filter gives accurate results for the 20-second reference samples included in EBU Loudness test set. Compare against the meters in other apps.

  • Hi Gyan, thanks for your answer. I downloaded the reference signals and on the first three signals (-20, -26, -40) everything is really normal, but in the seq-3341-1-16bit.wav file I came across the following discrepancy in the results. link – Victor Dutov Feb 17 at 8:28
  • As per EBU Tech 3341, the expected response for sample 1 is M, S, I = −23.0 ±0.1 LUFS so loudnorm is within tolerance. – Gyan Feb 17 at 11:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.