Search code examples
windowsaudiovideoffmpeg

ffmpeg to normalize loudness of a video


I wanted to know if there was a way for me to normalised the sound from a video to EBU R128 standard.

Current I am trying to do the 2 step bypass but I am unsure where I am going wrong.

these are the command I did:

ffmpeg -i D:\Person\Documents\Projects\IngestQC\ABN_.mxf -af loudnorm=I=-23:dual_mono=true:TP=-2:LRA=7:print_format=summary -f null -

The result is this:

"
[Parsed_loudnorm_0 @ 000002107bee2dc0]
Input Integrated:    -17.4 LUFS
Input True Peak:      +0.0 dBTP
Input LRA:             8.4 LU
Input Threshold:     -27.9 LUFS

Output Integrated:   -22.9 LUFS
Output True Peak:     -4.2 dBTP
Output LRA:            6.4 LU
Output Threshold:    -33.2 LUFS

Normalization Type:   Dynamic
Target Offset:        -0.1 LU
"

After that, I am doing this

ffmpeg -i D:\Person\Documents\Projects\IngestQC\abn.mxf -c:v copy -c:a pcm_s24le -ac 2 -af loudnorm=I=-23:TP=-2:LRA=7:measured_I=-17.4:measured_TP=0:measured_LRA=8.4:measured_thresh=-27.9:offset=-0.1:linear=true:print_format=summary -ar 48000 D:\Person\Documents\Projects\IngestQC\abn_done.mxf

However, when testing this against eFF to see if it is EBU R128 compliant (-23), it says that it's not compliant.

eFF says its value was:

Channel Group Information
Number of Groups: 2
Channel Group Layout: Mono_Mono
Channel Group Name: MonoOne
Loudness Specification: EBU R128
Loudness Units: LUFS
Program Loudness Target: -23.0 LUFS
Program Loudness: -26.0 LUFS
Loudness Range: 6
PPM Scale: BBC
PPM Threshold: 8.00
Max PPM: 6.62
True Peak Threshold: -3.00 dBTP
Maximum True Peak: -5.00 dBTP
Attenuation required for file to meet target: 3.0
Channel Group Name: MonoTwo
Loudness Specification: EBU R128
Loudness Units: LUFS
Program Loudness Target: -23.0 LUFS
Program Loudness: -26.0 LUFS
Loudness Range: 6
PPM Scale: BBC
PPM Threshold: 8.00
Max PPM: 6.62
True Peak Threshold: -3.00 dBTP
Maximum True Peak: -5.00 dBTP
Attenuation required for file to meet target: 3.0
1

I am not sure what i am doing wrong

I want to know if there is a way to get it to give the correct audio loudness while keeping it the same format of mxf


Solution

  • Found the answer:

    First I need to run

    ffmpeg -i 03.mxf -c:v copy -c:a pcm_s24le -af loudnorm=I=-23:TP=-2:LRA=7:print_format=json -f null -
    

    Then Followed by this, making sure to add the correct info

    ffmpeg -i 03.mxf -c:v copy -c:a pcm_s24le -af loudnorm=I=-23:TP=-3:LRA=7:measured_I=-20.40:measured_LRA=8.40:measured_TP=0.02:measured_thresh=-30.86:offset=-0.12:linear=true:print_format=summary -ar 48k newTest1.mxf
    

    Lastly

    ffmpeg -i newTest1.mxf -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a copy ACnewTest1.mxf