企业营销网站模板,wordpress多文件传递变量,合肥百度竞价推广代理公司,重庆网络安全公司文章目录 ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整获取音频长度pydub获取音频长度获取时长精确到秒格式设定 mutagen获取音频长度 调整音量视频音量调整注意事项 ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整 老王媳妇说上次那个pip挺好… 文章目录 ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整获取音频长度pydub获取音频长度获取时长精确到秒格式设定 mutagen获取音频长度 调整音量视频音量调整注意事项 ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整 老王媳妇说上次那个pip挺好用的就是长度这个有点迷茫 那就测下吧
获取音频长度
使用 pydub 和 mutagen 库都可以获取MP3文件的长度。
pydub获取音频长度
获取时长
from pydub.utils import mediainfodef get_duration(filename):info mediainfo(filename)duration info[duration]return durationfilename yourfile.mp3
print(get_duration(filename))精确到秒
from pydub.utils import mediainfodef get_duration(filename):info mediainfo(filename)duration round(float(info[duration]))return durationfilename yourfile.mp3
print(get_duration(filename))格式设定
如果你需要将获取的时长转换为 “03:03” 这样的格式, 可以首先将时长转换为整数(秒数), 然后通过除法和取余运算获取分钟和秒, 然后将这些值格式化为字符串。这是一个示例:
def get_duration(filename):info mediainfo(filename)duration int(float(info[duration])) # change to intminutes, seconds divmod(duration, 60) # get minutes and secondsreturn {:02d}:{:02d}.format(minutes, seconds) # format as stringfilename yourfile.mp3
print(get_duration(filename))这个函数将返回一个字符串比如 “03:03”。
mutagen获取音频长度
如果你想使用的是mutagen库可以这样做
from mutagen.mp3 import MP3def get_duration(filename):audio MP3(filename)duration audio.info.lengthreturn durationfilename yourfile.mp3
print(get_duration(filename))同样如果需要精确到秒级格式化如上pydub的处理操作即可
调整音量
老王媳妇说这小视频挺好的就是声音有点大 安排 使用pydub直接调整mp3音量 以下是一个可以用于调整mp3音量的函数使用pydub库:
from pydub import AudioSegmentdef adjust_audio_db(input_file, output_file, db):song AudioSegment.from_mp3(input_file)adjusted_song song dbadjusted_song.export(output_file, formatmp3)# 使用函数:
adjust_audio_db(input.mp3, output.mp3, -10)在这个函数中input_file和output_file是输入和输出音频文件的路径db是想要增加或减少的分贝数。首先函数加载输入文件然后调整音量最后导出修改后的音频到output_file。注意db可以是负数如果你想降低音量。
请确保已经正确安装了pydub和ffmpeg因为pydub需要ffmpeg进行音频编解码。 设定音量为随机值 如果你想让音量设定为一个随机值你可以通过引入Python的random库来实现这一点。这里是如何修改上面的函数以便音量增减设置为一个随机值
from pydub import AudioSegment
import randomdef adjust_audio_random_db(input_file, output_file, min_db, max_db):song AudioSegment.from_mp3(input_file)# 生成一个介于min_db和max_db之间的随机分贝值db_change random.randint(min_db, max_db)adjusted_song song db_changeadjusted_song.export(output_file, formatmp3)# 使用函数:
adjust_audio_random_db(input.mp3, output.mp3, -5, 5)在这个修改版函数中min_db和max_db定义了可能的分贝变化范围。random.randint(min_db, max_db)会生成一个在这个范围内的随机整数这个值可以是正的增加音量或负的减少音量。然后这个随机生成的分贝值被用来调整音频的音量。
记住使用随机分贝变化时要谨慎选择min_db和max_db的值以确保音量的变化在可接受的范围内不会对听者造成不适。
老王媳妇你搞错了 我对对先试试水么马上安排
视频音量调整 调整原视频中的音频信号db随机到-30到-20之间 你可以使用moviepy库中的AudioClip的fx函数来改变音频信号的db。volumex函数可以用于改变音频的音量参数是音量的倍数比如0.5表示降低一半的音量。
volumex函数的参数是一个对数尺度所以如果你想把db调整到-30到-20之间你需要把这个范围转换成线性尺度。对数尺度和线性尺度的转换公式是 value_in_linear_scale 10^(value_in_db_scale/20)。
这个转换是因为人耳对声音的感知是对数的。例如如果一个声音的音量是另一个的两倍我们感觉到的并不是两倍的响而是稍微大一点。因此在对数尺度上增加10db大约意味着将音量加倍。
以下是一个如何用moviepy调整音频db的示例
from moviepy.editor import VideoFileClip
import numpy as np# 打开视频
clip VideoFileClip(video.mp4)# 生成-30到-20之间的随机数
db np.random.uniform(-30, -20)# 转换到线性尺度
linear 10 ** (db / 20)# 调整音频
clip clip.fx(vfx.volumex, linear)# 输出到文件
clip.write_videofile(output.mp4)这段代码首先打开输入视频然后生成-30到-20之间的随机db值并把这个值转换成线性尺度。然后用vfx.volumex函数调整音频的音量。最后将视频输出到文件。 提取函数 你可以使用moviepy库中的AudioClip的fx函数来改变音频信号的db。volumex函数可以用于改变音频的音量参数是音量的倍数比如0.5表示降低一半的音量。
volumex函数的参数是一个对数尺度所以如果你想把db调整到-30到-20之间你需要把这个范围转换成线性尺度。对数尺度和线性尺度的转换公式是 value_in_linear_scale 10^(value_in_db_scale/20)。
这个转换是因为人耳对声音的感知是对数的。例如如果一个声音的音量是另一个的两倍我们感觉到的并不是两倍的响而是稍微大一点。因此在对数尺度上增加10db大约意味着将音量加倍。
以下是一个如何用moviepy调整音频db的示例
from moviepy.editor import VideoFileClip
import numpy as np# 打开视频
clip VideoFileClip(video.mp4)# 生成-30到-20之间的随机数
db np.random.uniform(-30, -20)# 转换到线性尺度
linear 10 ** (db / 20)# 调整音频
clip clip.fx(vfx.volumex, linear)# 输出到文件
clip.write_videofile(output.mp4)这段代码首先打开输入视频然后生成-30到-20之间的随机db值并把这个值转换成线性尺度。然后用vfx.volumex函数调整音频的音量。最后将视频输出到文件。
注意事项
长度也测了声音也小了老王媳妇终于学会丝滑混剪短视频了。
继续pip
pip install pydub mutagen moviepy