视频网站上经常刷出一些快节奏的视频,实际上是把一个视频里声音高于某个值的片段提取出来并拼成一个视频(举个例子,美食博主切菜的片段基本上是一连串刀碰到砧板上发出声音的镜头),如果是用正常方法,需要人工看频谱识别所有高音量的片段,剪切并选取这些片段合成一个视频,如果片段太多会超级麻烦,我想有没有一种方法(可以是软件的操作方法或者是python代码(c++也可以的))可以达到这个效果。
输入一个视频
输出按照音量大小选取高音量片段合成后的视频
视频网站上经常刷出一些快节奏的视频,实际上是把一个视频里声音高于某个值的片段提取出来并拼成一个视频(举个例子,美食博主切菜的片段基本上是一连串刀碰到砧板上发出声音的镜头),如果是用正常方法,需要人工看频谱识别所有高音量的片段,剪切并选取这些片段合成一个视频,如果片段太多会超级麻烦,我想有没有一种方法(可以是软件的操作方法或者是python代码(c++也可以的))可以达到这个效果。
输入一个视频
输出按照音量大小选取高音量片段合成后的视频
望采纳
下面是一个简单的 python 代码示例,可以用来按照音量大小自动选取视频中的高音量片段并合成一个新的视频文件:
import moviepy.editor as mpy
# 读取视频文件
video = mpy.VideoFileClip("input.mp4")
# 计算每一帧的音量
volumes = video.audio.volumex()
# 找到音量最大的 N 个片段
N = 10
max_volumes = sorted(volumes, reverse=True)[:N]
# 选取音量最大的片段,并合成一个新的视频文件
high_volume_clips = [video.subclip(t, t+1) for t in max_volumes]
final_clip = mpy.concatenate_videoclips(high_volume_clips)
final_clip.write_videofile("output.mp4")
在这段代码中,我们首先读取了一个视频文件,然后通过 volumex()
方法计算每一帧的音量。接着,我们找到音量最大的 N 个片段,并将它们合成一个新的视频文件。