当前位置: 首页 > news >正文

【Python音视频技术】用moviepy实现图文成片功能

今天上班的时候看到有人群里问 图文成片怎么实现。 临时给我提供一点写作的灵感,趁着下班写一篇。这里用到 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 = f"temp_{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, fps=24, 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, method="compose").loop(duration=audio.duration)# 给视频剪辑设置音频final_video = video_clip.set_audio(audio)# 将结果写入输出文件final_video.write_videofile(output_file, codec="libx264", audio_codec="aac", fps=fps)# 清理临时文件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 = f"temp_{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, fps=24, 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, method="compose").loop(duration=audio.duration)# 给视频剪辑设置音频final_video = video_clip.set_audio(audio)# 将结果写入输出文件final_video.write_videofile(output_file, codec="libx264", audio_codec="aac", fps=fps)# 清理临时文件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实现图文成片功能

http://www.lryc.cn/news/356292.html

相关文章:

  • 【Linux】权限的理解之权限掩码(umask)
  • UVa1466/LA4849 String Phone
  • 使用Word表格数据快速创建图表
  • JAVA面试题大全(十三)
  • 搜维尔科技:第九届元宇宙数字人设计大赛入围作品名单
  • SMB工具横向移动
  • cesuim
  • 2023、2024国赛web复现wp
  • day34 贪心算法 455.分发饼干 376. 摆动序列
  • 养老院管理系统基于springboot的养老院管理系统java项目
  • 跳台阶扩展问题
  • 超清高帧,成像升级 | SWIR短波红外相机500万像素992芯片
  • 攻击渗透思考题
  • Flutter 中的 Opacity 小部件:全面指南
  • 【介绍下如何在SQL中添加数据】
  • 【Linux学习】深入了解Linux中进程状态及其转换
  • 【Python设计模式11】建造者模式
  • coredump文件生成配置
  • jmeter线程组(下篇)
  • Stable Diffusion【写实模型】:逼真,逼真,超级逼真的国产超写实摄影大模型万享XL
  • Android 13 配置默认DN
  • 系统开发与运行知识
  • 算法训练 | 二叉树Part1 | 递归遍历、迭代遍历、统一迭代
  • AcWing 2568:树链剖分 ← 线段树+DFS
  • PCIe协议之-DLLP详解
  • Jmeter+prometheus+grafana性能测试
  • Hololens 2 新建自定义按钮
  • 景源畅信:抖音小店新手小白如何做好运营?
  • 力扣 42. 接雨水 python AC
  • The 2022 ICPC Asia Nanjing Regional Contest - External D