import random
import time
from moviepy.audio.AudioClip import CompositeAudioClip
from moviepy.config import change_settings
from moviepy.editor import VideoFileClip, AudioFileClip, clips_array
from moviepy.video.VideoClip import TextClip, ColorClip
from moviepy.video.compositing.CompositeVideoClip import CompositeVideoClip
# change_settings({"IMAGEMAGICK_BINARY": r"D:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe"})
# 加载网络视频
video_url = ""
video_clip = VideoFileClip(video_url, audio=True)
start = random.randint(0, int(video_clip.duration - 15))
cropped_video = video_clip.subclip(start, start + 15)
cropped_video.write_videofile('qiniu_video_test.mp4', codec="libx264", audio_codec="aac", threads=6)
# 加载视频和背景音乐
video_path = r'./video_test.mp4' # 输入视频文件路径
bgm_path = r'./xuanni.m4a' # 背景音乐文件路径
video_clip = VideoFileClip(video_path, audio=True)
bgm_clip = AudioFileClip(bgm_path)
# # video_clip裁剪一半
# video_clip = video_clip.subclip(0, video_clip.duration / 2)
# video_clip.write_videofile('video_test_half.mp4', codec="libx264", audio_codec="aac", threads=6)
# exit()
# random随机裁剪15s片段
start = random.randint(0, int(video_clip.duration - 15))
cropped_video = video_clip.subclip(start, start + 15)
# cropped_video = video_clip.subclip(10, 30)
# 裁剪背景音乐,使其与视频长度匹配,并调整音量
# 同样使用random随机裁剪
bgm_clip = bgm_clip.subclip(random.randint(0, int(bgm_clip.duration - 15)), random.randint(15, int(bgm_clip.duration)))
bgm_clip = bgm_clip.volumex(2) # 调整音量
# 将背景音乐与原视频的音频混合在一起
video_with_bgm = cropped_video.set_audio(CompositeAudioClip([cropped_video.audio, bgm_clip]))
# 设置混合后音频的持续时间,以确保与视频持续时间相匹配
video_with_bgm = video_with_bgm.set_duration(cropped_video.duration)
# 调整视频大小为竖屏
target_width = 1080
target_height = 1920
# 创建一个背景视频,大小为1080x1920,创建黑色背景
background_color = (0, 0, 0)
background_clip = ColorClip(size=(target_width, target_height), color=background_color)
# 将视频放置在背景视频中间
video_with_bgm = video_with_bgm.set_position('center')
# 将视频和背景视频合并
video_with_background = CompositeVideoClip([background_clip, video_with_bgm])
video_with_background.duration = video_with_bgm.duration
# 创建字幕
text = "这是我的字幕" # 要添加的字幕文本
fontsize = 100 # 字幕字体大小
font_color = 'white' # 字幕字体颜色
# bg_color = 'black' # 字幕背景颜色(可选)
duration = video_with_background.duration # 字幕持续时间,与视频长度相同
# 创建 TextClip 对象来生成字幕
subtitle = TextClip(text, fontsize=fontsize, color=font_color, size=video_clip.size, font=r"../font/OPPOSans-R.ttf")
subtitle = subtitle.set_duration(duration)
# 计算视频长宽
w, h = video_clip.size
# 设置字幕的位置 为视频中间偏上
# subtitle = subtitle.set_position(((w - subtitle.w) / 2, (h - subtitle.h) / 4))
subtitle = subtitle.set_position(("center", "top")) # 设置字幕的位置
# subtitle = subtitle.set_position((45, 150)) # 设置字幕的位置
# 将字幕添加到视频
video_with_subtitle = CompositeVideoClip([video_with_background, subtitle])
video_with_subtitle.duration = video_with_background.duration
# 导出最终视频
output_path = 'output_video.mp4' # 输出视频文件路径
video_with_subtitle.write_videofile(output_path, codec="libx264", audio_codec="aac", threads=6)
暂无评论