generated from thinkode/modelRepository
32 lines
889 B
Python
32 lines
889 B
Python
from dataclasses import dataclass
|
|
|
|
from moviepy.audio.fx.MultiplyVolume import MultiplyVolume
|
|
from moviepy.Clip import Clip
|
|
from moviepy.decorators import audio_video_effect
|
|
from moviepy.Effect import Effect
|
|
|
|
|
|
@dataclass
|
|
class AudioNormalize(Effect):
|
|
"""Return a clip whose volume is normalized to 0db.
|
|
|
|
Return an audio (or video) clip whose audio volume is normalized
|
|
so that the maximum volume is at 0db, the maximum achievable volume.
|
|
|
|
Examples
|
|
--------
|
|
|
|
>>> from moviepy import *
|
|
>>> videoclip = VideoFileClip('myvideo.mp4').with_effects([afx.AudioNormalize()])
|
|
|
|
"""
|
|
|
|
@audio_video_effect
|
|
def apply(self, clip: Clip) -> Clip:
|
|
"""Apply the effect to the clip."""
|
|
max_volume = clip.max_volume()
|
|
if max_volume == 0:
|
|
return clip
|
|
else:
|
|
return clip.with_effects([MultiplyVolume(1 / max_volume)])
|