重庆有那些制作网站的公司,平台戚里带崇墉,南宁站建好就够用,长沙做一个网站多少钱今天上班的时候看到有人群里问 图文成片怎么实现。 临时给我提供一点写作的灵感#xff0c;趁着下班写一篇。这里用到 python的moviepy库#xff0c; 之前文章介绍过。
大体思路#xff1a;假定有4张图片#xff0c;每张图片将在视频中展示2秒钟#xff0c;并且图片会按照…今天上班的时候看到有人群里问 图文成片怎么实现。 临时给我提供一点写作的灵感趁着下班写一篇。这里用到 python的moviepy库 之前文章介绍过。
大体思路假定有4张图片每张图片将在视频中展示2秒钟并且图片会按照顺序循环播放直到音频结束。
from moviepy.efrom moviepy.editor import ImageClip, AudioFileClip, concatenate_videoclips, CompositeVideoClip
from moviepy.audio.fx.all import audio_loop
from PIL import Image
import osdef resize_images(image_files, desired_size):resized_images []for image_file in image_files:# 打开一张图片文件with Image.open(image_file) as img:# 调整图片大小到目标尺寸img img.resize(desired_size, Image.ANTIALIAS)# 将调整后的图片保存到临时文件temp_file ftemp_{os.path.basename(image_file)}img.save(temp_file)resized_images.append(temp_file)return resized_imagesdef create_video_from_images(image_files, audio_file, output_file, fps24, desired_size(1280, 720)):# 将图片调整到目标尺寸resized_images resize_images(image_files, desired_size)# 加载音频文件audio AudioFileClip(audio_file)# 设置图片展示时长为2秒image_duration 2# 创建单独的图片剪辑并设置展示时长clips [ImageClip(img).set_duration(image_duration).set_fps(fps) for img in resized_images]# 将所有图片剪辑拼接成循环播放的一个视频剪辑video_clip concatenate_videoclips(clips, methodcompose).loop(durationaudio.duration)# 给视频剪辑设置音频final_video video_clip.set_audio(audio)# 将结果写入输出文件final_video.write_videofile(output_file, codeclibx264, audio_codecaac, fpsfps)# 清理临时文件for temp_file in resized_images:os.remove(temp_file)# demo
image_files [image1.jpg, image2.jpg, image3.jpg, image4.jpg] # 图片文件列表
audio_file background_music.mp3 # 音频文件
output_file output_video.mp4 # 输出视频文件create_video_from_images(image_files, audio_file, output_file)ditor import ImageClip, AudioFileClip, concatenate_videoclips, CompositeVideoClip
from moviepy.audio.fx.all import audio_loop
from PIL import Image
import osdef resize_images(image_files, desired_size):resized_images []for image_file in image_files:# 打开一张图片文件with Image.open(image_file) as img:# 调整图片大小到目标尺寸img img.resize(desired_size, Image.ANTIALIAS)# 将调整后的图片保存到临时文件temp_file ftemp_{os.path.basename(image_file)}img.save(temp_file)resized_images.append(temp_file)return resized_imagesdef create_video_from_images(image_files, audio_file, output_file, fps24, desired_size(1280, 720)):# 将图片调整到目标尺寸resized_images resize_images(image_files, desired_size)# 加载音频文件audio AudioFileClip(audio_file)# 设置图片展示时长为2秒image_duration 2# 创建单独的图片剪辑并设置展示时长clips [ImageClip(img).set_duration(image_duration).set_fps(fps) for img in resized_images]# 将所有图片剪辑拼接成循环播放的一个视频剪辑video_clip concatenate_videoclips(clips, methodcompose).loop(durationaudio.duration)# 给视频剪辑设置音频final_video video_clip.set_audio(audio)# 将结果写入输出文件final_video.write_videofile(output_file, codeclibx264, audio_codecaac, fpsfps)# 清理临时文件for temp_file in resized_images:os.remove(temp_file)# demo
image_files [image1.jpg, image2.jpg, image3.jpg, image4.jpg] # 图片文件列表
audio_file background_music.mp3 # 音频文件
output_file output_video.mp4 # 输出视频文件create_video_from_images(image_files, audio_file, output_file)这里的图片素材采用腾讯智影生成 音频采用suno生成。最后的效果
相关文章
【Python音视频技术】玩AI视频创作引发写Python音视频技术系列文章1—视频添加字幕
【Python音视频技术】Python音视频技术系列文章2—视频提取音频转换文字
【Python音视频技术】Python音视频技术系列文章3—音频转换文字技术方案
原文链接【Python音视频技术】用moviepy实现图文成片功能