Python MoviePy将PPT转为视频_ppt转mp4 win32com python-程序员宅基地

技术标签: python  

工作中遇到了需要将PPT转换成视频的情况,查询了资料,发现python的moviepy库比较好用

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
from win32com.client import Dispatch, gencache
from time import sleep
from shutil import rmtree
from re import findall
from os.path import join,splitext,dirname
from moviepy.editor import ImageSequenceClip


def ppt2mp4(ppt_fn):
    picture_dir = splitext(ppt_fn)[0]


    powerpoint = Dispatch("PowerPoint.Application")
    powerpoint.Visible = True
	#将PPT拆分为一张张图片
    ppt1 = powerpoint.Presentations.Open(ppt_fn)
    gencache.EnsureDispatch('PowerPoint.Application')
    ppt1.SaveAs(f"{picture_dir}.jpg",17)
    ppt1.Close()

    if not powerpoint.Presentations:
        powerpoint.Quit()

    pictures = [
        join(picture_dir,fn)
        for fn in os.listdir(picture_dir)
        if fn.endswith(".jpg")
    ]

    pictures.sort(key=lambda fn:int(findall(r'\d+',fn)[-1]))

    #设置视频时长为60秒
    num = len(pictures)
    durations = [float(str(60/num)[:4])] * num

    (ImageSequenceClip(pictures,durations=durations).write_videofile(rf'{splitext(ppt_fn)[0]}_video.mp4',codec='libx264',fps=24))
    # clip = ImageSequenceClip(pictures,durations=durations,fps=24)
    # clip.write_videofile("test.mp4")
    rmtree(picture_dir)

if __name__ == '__main__':
    ppt2mp4(“PPT路径”)

批量处理后发现有一些视频生成之后无法播放,目前还不确定是什么原因,待处理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40812877/article/details/110630873

智能推荐

关于保护模式_保护模式 ds-程序员宅基地

文章浏览阅读1.5k次。 可能是汇编和组成原理都没有学透吧!@那个保护模式的确不太好理解.什么是保护模式 自从1969年推出第一个微处理器以来,Intel处理器就在不断地更新换代,从8086、8088、80286,到80386、80486、奔腾、奔腾Ⅱ、奔腾4等,其体系结构也在不断变化。80386以后,提供了一些新的功能,弥补了8086的一些缺陷。这其中包括内存保护、多任务及使用640KB以上的内存等,并仍然_保护模式 ds

idea Debug启动项目半天没反应,但使用run可正常启动,解决方法整理_idea debug运行米反应-程序员宅基地

文章浏览阅读3.5k次,点赞5次,收藏2次。使用idea Debug启动项目10分钟都没启动好项目,但使用run可正常启动,解决方法如下:1、现象:idea debug启动后,卡在如下界面上。2、解决办法如下:经排查,发现是某个方式打了断点,把该断点去掉即可。控制台也有相应的提示。使用ctrl + shift + F8 可打开断点管理界面,把断点全部放开后,则debug启动项目正常,待Debug启动成功后再打上断点。断点管理界面如下,把所有断点的勾选去掉。..._idea debug运行米反应

Excel数据分析—散点图/气泡图_散点图数据实例-程序员宅基地

文章浏览阅读5.2k次。Excel数据分析小技巧,让你快速了解并掌握散点图/气泡图~更有免费实战案例数据供你练习!!!_散点图数据实例

Linux系统中一些目录和文件的详细解释(参照RHEL5.4)-程序员宅基地

文章浏览阅读87次。Linux有四种基本文件系统类型:--普通文件:如文本文件、C语言源代码、shell脚本等,可以用cat、less、more、vi等来察看内容,用mv来改名;--目录文件:包括文件名、子目录名及其指针,可以用ls列出目录文件;--链接文件:是指向一索引节点的那些目录条目,用ls来查看时,链接文件的标志用l开头,而文件后以"->"指向所链接的文件;--特殊文件:如磁盘、终..._linux 5.4.0版本ip地址文件夹

微信小程序:排行榜页面模板_小程序 排行榜素材-程序员宅基地

文章浏览阅读2.9k次,点赞6次,收藏37次。在开发一款背单词的微信小程序时,为了加强用户的体验感,刺激用户积极学习,小程序中需要有的模块。通过打卡天数来排名,让用户有攀比学习的心里。_小程序 排行榜素材

element组件MessageBox 弹框使用和upload上传文件踩坑记录_element upload给出弹窗提示后上传有问题-程序员宅基地

文章浏览阅读1.6k次。1、MessageBox 弹框在做项目的过程中遇到了这样一种情况文字需要换行处理。但是删除一般都用这个,非常的方便且契合,但是对于提示的内容,我试了在字符串里添加 \n 和 \r\n 都没有换行的效果,本来想换一个方法实现,但是不知道为啥,忽然那股觉得一定有解决方法的劲儿又上来了,果然,被我找到了解决方法,感谢这篇博客呀~【element-ui】messageBox弹窗提示消息换行问题..._element upload给出弹窗提示后上传有问题

随便推点

Python中requests库中post与get的区别_python request与get区别-程序员宅基地

文章浏览阅读2.7k次。Django中post与get的区别记录下Django中post与get的区别1.post是取页面中提交的值2.get是从数据库中取值_python request与get区别

c语言课程设计-药店管理系统_c语言药店管理系统设计报告-程序员宅基地

文章浏览阅读6k次,点赞28次,收藏151次。这个东东第一次才开始写的时候,脑子都是懵的,把我的方法和解决办法写出来,希望可以对你有一点帮助。逻辑方面可以先想想,我需要这个系统实现什么功能,就药店管理系统来讲,这个我觉得增删改查是必须的,再加一个补货提醒,剩下的就是什么几家药店一起搞,这样用户知道库存和药店位置可以做出最优选择。然后搞了两个端口进行,一个用户端,一个工作人员端口,这样的话显示菜单不同,功能也可以分开实现。(这里可以写三个文本,一个存药店信息,一个存药品信息,一个存所有的用户和工作人员的ID和密码)。代码实现按照运行显示顺序排列代_c语言药店管理系统设计报告

高精度3D点云配准利器:ct_icp-程序员宅基地

文章浏览阅读243次,点赞5次,收藏3次。高精度3D点云配准利器:ct_icp项目地址:https://gitcode.com/jedeschaud/ct_icp项目简介ct_icp 是一个开源的C++库,专注于CT(Computed Tomography)扫描数据和3D点云之间的高精度配准。该项目由Jedéschaud开发并维护,旨在提供一种高效、精确的方法,用于医学影像处理、工业检测等领域中的三维重建和数据分析。技术解析ct...

Javascript 身份证号转字符串为什么不对_身份证号转字符串出现问题-程序员宅基地

文章浏览阅读652次。问题描述从数据库(Mongodb)中取的身份证号是lang类型,需要转换成字符串类型。拿到这个需求的时候没有多想,上来就是toString,+'',类似:var idCardNo = 110105199805241789;var idString = idCardNo + '';// 或者 var idString = idCardNo.toString();console.log(idString,typeof(idString));// 110105199805241800 string_身份证号转字符串出现问题

Metric Learning——度量学习_度量学习的作用-程序员宅基地

文章浏览阅读1.3w次,点赞8次,收藏37次。看到一篇知乎大神Flood Sung发表在CVPR2018上的paper,介绍了一种基于metric的模式识别方法,创新之处在于它不同于常用的matric-based方法,使用人为定义的度量,像简单的欧式距离、马氏距离,而是采用了用神经网络去训练这个度量,模型虽然简单,但是效果却很显著。1、度量(Metric)先说一下关于度量这个概念:在数学中,一个度量(或距离函数)是一个定义集合中元素之间距离的..._度量学习的作用

易懂的Bresenham 布雷森汉姆算法画圆的原理与Python编程实现教程_中点bresenham算法画圆python算法-程序员宅基地

文章浏览阅读3.9k次,点赞5次,收藏38次。Bresenham 布雷森汉姆算法画圆的原理与编程实现教程注意:Bresenham的圆算法只是中点画圆算法的优化版本。区别在于Bresenham的算法只使用整数算术,而中点画圆法仍需要浮点数。所以我先介绍中点画圆法。中点画圆法看下面这个图,这就是一个像素一个像素的画出来的。我们平常的圆也是一个像素一个像素的画出来的,你可以试试在“画图”这个软件里面画一个圆然后放大很多倍,你会发现就是一些像素..._中点bresenham算法画圆python算法

推荐文章

热门文章

相关标签