[英]Python 3.7 - Moviepy trim the audio to the length of the video
所以我有 7 个.mp3
音频文件连接在一起
audioFiles = [a for a in glob.glob(audioPath + "**/*.mp3", recursive=True)]
audios = []
for audio in audioFiles:
audios.append(AudioFileClip(audio))
audioClip = concatenate_audioclips([audio for audio in audios])
和 14 个.mp4
文件连接在一起
files = [f for f in glob.glob(path + "**/*.mp4", recursive=True)]
clips = []
for file in files:
clips.append(VideoFileClip(file))
finalClip = concatenate_videoclips([clip for clip in clips])
渲染视频看起来:
finalClip.audio = audioClip
finalClip.write_videofile("my_concatenation.mp4")
但这些拼接在一起的视频文件只需要 10 分钟即可观看。
该程序将视频剪辑延长了 20 分钟。 所以视频是音频+视频的 30 分钟,视频需要 10 分钟,所以从那时起,最后一帧将显示最后 20 分钟。
如何告诉程序不要拉伸视频?
@McSinyx moviepy 基本上是 ffmpeg 的包装,停止向人们建议使用其他软件而不是实际回答问题。 (写在这里是因为新帐户,直到 50rep 才能发表评论)
您的问题的答案是您想使用“CompositeVideoClip”而不是“concatenate_videoclips”。 Concatenate 将它们逐个添加,因此将播放剪辑 1,然后播放剪辑 2 等。另一方面,复合将它们放置在同一“轨道”上,因此它们将同时播放。 要拆分它们,您需要添加持续时间和开始时间。 把它想象成一个普通的视频编辑软件,你有不同的轨道,你可以在同时播放的两个不同轨道上添加视频和音频。 下面的例子
video = CompositeVideoClip([clip1,clip2,audio1]
在以下链接上阅读有关此内容的更多信息,如果对您有帮助,请不要忘记选择答案:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.