Giter VIP home page Giter VIP logo

Comments (5)

slhck avatar slhck commented on August 17, 2024

I think there are two issues at play here:

  1. An apparently broken algorithm that is not fixed upstream (which seems to be worked on in some fork of FFmpeg, so it seems like that should be merged back into FFmpeg itself).

  2. Usage notes that would help prevent issues from an end-user perspective.

What are you suggesting specifically? If "Going higher (> -14 LUFS) than source LUFS is forcing dynamic processing" (per the comment thread) then there could be a warning that dynamic mode is being used.

There is a warning already affecting the loudness range:

if (
self.media_file.ffmpeg_normalize.loudness_range_target
< self.loudness_statistics["ebu"]["input_lra"]
and not will_use_dynamic_mode
):
_logger.warning(
f"Input file had loudness range of {self.loudness_statistics['ebu']['input_lra']}. "
f"This is larger than the loudness range target ({self.media_file.ffmpeg_normalize.loudness_range_target}). "
"Normalization will revert to dynamic mode. Choose a higher target loudness range if you want linear normalization. "
"Alternatively, use the --keep-loudness-range-target or --keep-lra-above-loudness-range-target option to keep the target loudness range from "
"the input."
)
will_use_dynamic_mode = True

Are you suggesting something akin to this?

from ffmpeg-normalize.

milahu avatar milahu commented on August 17, 2024

What are you suggesting specifically?

"show warning when using non-default target level"

if cli_args.target_level < -23:
    print(f"warning: using non-default target level {cli_args.target_level}. this can produce volume glitches. please verify the result.")

from ffmpeg-normalize.

slhck avatar slhck commented on August 17, 2024

I find this a bit too drastical. In your original issue you talked about increasing the target beyond the input loudness. I can imagine adding a warning for that.

from ffmpeg-normalize.

slhck avatar slhck commented on August 17, 2024

I did some checks on some files and it seems like the filter does not always revert to dynamic mode when the target is higher than the existing target. Instead, I'll parse the second pass loudnorm output and check if it shows that dynamic mode was used, compare that with the user's intent (i.e., if they wanted linear mode), and if there's a mismatch, print a warning.

from ffmpeg-normalize.

slhck avatar slhck commented on August 17, 2024

Fixed in v1.28.0, see #256

from ffmpeg-normalize.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.