【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实现图文成片功能
相关文章:
【Python音视频技术】用moviepy实现图文成片功能
今天上班的时候看到有人群里问 图文成片怎么实现。 临时给我提供一点写作的灵感,趁着下班写一篇。这里用到 python的moviepy库, 之前文章介绍过。 大体思路:假定有4张图片,每张图片将在视频中展示2秒钟,并且图片会按照…...
【Linux】权限的理解之权限掩码(umask)
目录 前言 一、利用八进制数值表示文件或目录的权限属性 二、系统默认的权限掩码和权限掩码的作用原理 三、分析权限掩码改变文件或目录的权限属性 前言 权限掩码是由4个数字组合而成的,默认的第一位数字是0;后三位数字分别由八进制位数字组成。权限…...
UVa1466/LA4849 String Phone
UVa1466/LA4849 String Phone 题目链接题意分析AC 代码 题目链接 本题是2010年icpc亚洲区域赛大田赛区的G题 题意 平面网格上有n(n≤3000)个单元格,各代表一个重要的建筑物。为了保证建筑物的安全,警察署给每个建筑物派了一名警察…...
使用Word表格数据快速创建图表
实例需求:Word的表格如下所示,标题行有合并单元格。 现在需要根据上述表格数据,在Word中创建如下柱图。如果数据在Excel之中,那么创建这个图并不复杂,但是Word中就没用那么简单了,虽然Word中可以插入图表&a…...
JAVA面试题大全(十三)
1、Mybatis 中 #{}和 ${}的区别是什么? 在 MyBatis 中,#{} 和 ${} 是两种用于参数绑定的方式,它们之间的主要区别在于数据处理的方式和 SQL 注入的风险。 #{}:预编译处理 #{} 用于预编译处理,MyBatis 会为其生成 Prep…...
搜维尔科技:第九届元宇宙数字人设计大赛入围作品名单
随着第九届元宇宙数字人设计大赛渐近尾声,各院校提交的数字人作品已陆续完成评分统计汇总工作!现将入围名单公布,请入围团队尽可能到场参加大赛颁奖典礼,具体获奖名次将在颁奖典礼中现场公布! 颁奖典礼时间、地点&…...
SMB工具横向移动
一. SMB工具介绍和使用 1.介绍 2013年的Defcon上,就引入了smbexec,后续 smbexec 被 Impacket 进一步完善了。在Impacket中支持明文认证,NTLM认证,Aeskey认证等方式! 2. 使用方法 命令: smbexec.exe 用户…...
cesuim
new Cesium.Color(255,255,0,1), //颜色 Math.PI/2color: Cesium.Color.fromCssColorString("#f40"), //16进制颜色初始化地球 import * as Cesium from "cesium";import { onMounted } from "vue"; onMounted(() > {Cesium.Ion.defaultAcc…...
2023、2024国赛web复现wp
2023 Unzip 类型:任意文件上传漏洞 主要知识点:软链接 随便上传一个一句话木马文件,得到一串php代码 根据代码上传zip文件发现进入后还是此页面 代码审计: <?php error_reporting(0); highlight_file(__FILE__);$finfo fin…...
day34 贪心算法 455.分发饼干 376. 摆动序列
贪心算法理论基础 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 贪心一般解题步骤(贪心无套路): 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 455.分发饼干 …...
养老院管理系统基于springboot的养老院管理系统java项目
文章目录 养老院管理系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目源码(9.9¥带走) 养老院管理系统 一、项目演示 养老院管理系统 二、项目介绍 基于springboot的养老院管理系统 角色:超级…...
跳台阶扩展问题
题目链接 f(1) 1f(2) 1 1 2f(3) 1 2 1 4f(4) 1 2 4 1 8 所以 f(n) 2 n − 1 ^{n-1} n−1 import java.util.Scanner;public class Solution {public int jumpFloorII(int target) {return 1 << (target - 1);} }...
超清高帧,成像升级 | SWIR短波红外相机500万像素992芯片
博图光电5MP短波红外相机,搭载了索尼IMX992 SenSWIR传感器,支持5.2MP分辨率,适合探测波长在400nm-1700nm波段的可见光和短波红外光,有效面积和透光率得到提升,内置TEC制冷片,实现了像素尺寸和图像均匀性方面…...
攻击渗透思考题
1. windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文 在Windows操作系统中,登录时输入的明文密码不会以明文形式存储在系统中。相反,Windows使用一种称为“…...
Flutter 中的 Opacity 小部件:全面指南
Flutter 中的 Opacity 小部件:全面指南 在Flutter中,动画和视觉效果是提升用户体验的重要手段。Opacity小部件允许你改变子组件的透明度,从而实现淡入、淡出或其它透明度相关的动画效果。本文将提供Opacity的全面指南,帮助你了解…...
【介绍下如何在SQL中添加数据】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...
【Linux学习】深入了解Linux中进程状态及其转换
文章目录 进程状态进程排队进程的状态(运行,阻塞,挂起)进程的七个状态 孤儿进程 进程状态 进程 task_struct 可执行程序 进程不是一 直在运行的,可能在等待软硬件资源,比如scanf后,程序停止运…...
【Python设计模式11】建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,它将一个复杂对象的构建过程分离出来,使得同样的构建过程可以创建不同的表示。建造者模式通过使用多个简单的对象一步一步构建成一个复杂的对象。 建造者模式的结构 建造者模式…...
coredump文件生成配置
1.打开coredump文件生成开关 查看开关是否打开:ulimit -a 如果core file size 为0,则为关闭。 执行:ulimit -c 10240 将其coredump文件大小设置。 2.coredump文件保存位置: /proc/sys/kernel/core_pattern文件可以控制core文…...
jmeter线程组(下篇)
线程组 线程组作为JMeter测试计划的核心组件之一,对于模拟并发用户的行为至关重要。线程组元件是整个测试计划的入口,所有的取样器和控制器必须放置在线程组下。 可以将线程组视为一个虚拟用户池,其中每个线程可被理解为一个虚拟用户&#x…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
