Python快速将ppt制作成配音视频课件的操作方法

目录
  • 一、引言
  • 二、ppt视频课件制作过程
    • 2.1、将ppt保存为一张张图像
    • 2.2、按页录音
    • 2.3、编写代码进行合成
  • 三、效果
  • 四、小结

一、引言

老猿从来没有录播个视频课件,但最近有要求在一周内必须录制一个视频课件,为此花了3天时间准备ppt,花了一个小时录播了一个20多分钟的课件。

由于第一次干这个活,讲课时情绪还是有点紧张,导致录播的语音出现了各种重复、不该有的间断、两页切换时课件讲解过快、部分词语发音不准等问题,导致效果一团糟。

为了解决这些问题,又使用剪辑软件进行了剪辑,光剪辑就花了2天时间,结果效果还是不好,最后想到了一个办法,就是废掉原录播材料,将ppt导出成图像,然后逐页录音,再使用合成软件将图像和音频逐一匹配,再进行制作。花了40多分钟逐页录音并试听,最后花了半天时间制作和输出,终于赶上最后的截止时间前上交了视频。如果最开始就用这个方法,可以节省大部分时间。

基于上述过程,老猿又想到最后这个处理过程完全不需要使用合成软件,而是使用Moviepy是否更好呢?今天付诸行动,发现使用Moviepy进行合成比图形操作界面的合成软件效果更好,完美地解决了音频和ppt材料的协同问题。下面就详细介绍一下这个过程,供ppt视频课件制作生手提供一个可以高效制作视频的方法。

二、ppt视频课件制作过程

2.1、将ppt保存为一张张图像

打开ppt,选择:文件 --> 另存为,保存类型选择为PNG或jpg,如图:

然后点击保存,出现:

选择“每张幻灯片”。
这样就可以将每页ppt导出成图片了,如:

相关图片会输出到一个单独的目录,以“幻灯片XX.png”等形式逐页输出保存。

2.2、按页录音

对照ppt每页的内容,将该页讲解的语音使用手机录音软件等方式录制成一个个音频文件,下面是老猿录制的音频文件目录:

注意,在以上录音时,第18页和20页录制成了2段,这种方式处理和其他页面不一样,是不适合用程序来处理的,除非对此针对性的改造。

2.3、编写代码进行合成

代码的说明与注释,不单独进行补充说明,完整代码如下:

from  moviepy.editor import *
import os,traceback

def isdigit(c):
    return c>='0' and c<='9'

def getPattern(patternString):
    """
    :param patternString: 含有模式串的字符串,模式串仿C语言整型输出格式,类似于:%d、%02d等
    :return: 返回将patternString拆分成三段的一个列表,三个元素分别是:模式串前面的字符串、模式串(含百分号、数字和d)、模式串后面的字符串,如果没有找到模式串则返回None
    """
    patternIndex = patternString.index("%")
    if patternIndex<0:
        print("模式字符串中未发现模式匹配符:%")
        return None
    matched = False
    for patternEnd in range(patternIndex+1,len(patternString)):
        if patternString[patternEnd]in'dD':
            matched = True
            break
        else:
            if  not isdigit(patternString[patternEnd]):
                print("模式字符串中的模式存在非数字")
                return None
    if matched: return [patternString[:patternIndex],patternString[patternIndex:patternEnd+1],patternString[patternEnd+1:]]
    else:
        print("模式字符串中的模式不是字母d结尾")
        return None

def composePPTImgsAndSounds(imgFilePattern,soundFilePattern,startSeq=1,endSeq=None):
    """
    :param imgFilePattern: 图像文件模式,要求图像文件中必须含文件序号,序号采用%d、%02d/%03d的方式来识别
    :param soundFilePattern:音频文件格式,要求文件中必须含文件序号,序号采用%d、%02d/%03d的方式来识别
    :param startSeq:文件序列号其实值,一般为0或1
    :param endSeq:文件序列号结束值,可以不填
    :return:生成的视频
    """
    if endSeq is None:endSeq=9999999  #当对应序号找不到文件时结束
    patterns = getPattern(imgFilePattern)
    if patterns is None:
        print('图像文件名不符合模式格式要求')
        return None
    else:
        imgPrefix,imgPattern,imgPostfix = patterns
    patterns = getPattern(soundFilePattern)
    if patterns is None:
        print('音频文件名不符合模式格式要求')
        return None
    else:
        soundPrefix, soundPattern, soundPostfix = patterns
    clips = []
    try:
        for seq in range(startSeq,endSeq):
            imgFName = f"{imgPrefix}{seq:{imgPattern[1:]}}{imgPostfix}"
            soundFName = f"{soundPrefix}{seq:{soundPattern[1:]}}{soundPostfix}"

            if os.path.exists(soundFName) and os.path.exists(imgFName):
                soundClip = AudioFileClip(soundFName)
                imgClip = ImageClip(imgFName).set_duration(soundClip.duration).set_fps(2).set_audio(soundClip)
                clips.append(imgClip)
            else:
                if seq:
                    print(f"音视和图像文件加载结束,最后一个文件的序号为{seq}")
                    break
                else:
                    print(f"图像文件{imgClip}或音频文件{soundClip}不存在")
                    return None

    except Exception as e:
        print(f"加载音频和图像文件失败:\n{e}\n{traceback.format_exc()}")
        return None

    print("输出视频文件....")
    clip = concatenate_videoclips(clips,'compose')
    clip.write_videofile(r"C:\temp\ppt.mp4",threads=8)
    print("视频文件已经生成")
    return clip

composePPTImgsAndSounds(r'F:\bak\pr\大H\十百千\视频制作\5G在线计费动态授权机制介绍3.9\幻灯片%d.PNG',r'C:\temp\录音文件\p%d.m4a')

如果不了解Moviepy的,请参考《 Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载》的导览式介绍。

三、效果

使用该方式制作的视频,比图形界面合成软件制作的视频效果更流畅、大小更小、制作时间也更短,大小大概是图形界面视频合成软件的不到十分之一,视频输出时间是图形界面合成软件手工输出的四分之一,还省了手工去进行合成剪辑的过程(非熟练人员一般需要1-2个小时),老猿20分钟的视频课,含录音、试听及部分重录时间,整个制作过程不到70分钟(不含代码编写时间),是不是特别好用?

不过注意,老猿上面的案例处理到第18页时就认为课件完结了,要将整个课件处理完,需要合并18页和20页的音频输出到其他音频文件类似的音频文件中。

四、小结

本文介绍了一种ppt视频课件快速制作的方法,通过将ppt输出成一张张图片,然后逐页配音,最后使用Moviepy将其合成输出,课件制作又快又好。由于采用了分页录音的方式,对于讲解不好的地方很快就可以更换,因此比期望一次性录播然后剪辑的效果要好很多,同时输出的视频文件小、输出快。

以上就是Python快速将ppt制作成配音视频课件的操作方法的详细内容,更多关于python ppt配音视频课件的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python实现对PPT文件进行截图操作的方法

    本文实例讲述了Python实现对PPT文件进行截图操作的方法.分享给大家供大家参考.具体分析如下: 下面的代码可以为powerpoint文件ppt进行截图,可以指定要截取的幻灯片页面,需要本机安装了powerpoint,可以指定截图的大小分辨率 import os import comtypes.client def export_presentation(path_to_ppt, path_to_folder): if not (os.path.isfile(path_to_ppt) and

  • python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)

    复制代码 代码如下: #-*- coding:utf-8 -*- from win32com.client import Dispatch import time def start_office_application(app_name): # 在这里获取到app后,其它的操作和通过VBA操作办公软件类似 app = Dispatch(app_name) app.Visible = True time.sleep(0.5) app.Quit() if __name__ == '__main__

  • 基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)

    1.CSV (1)写csv文件 import csv def writecsv(path,data): with open(path, "w") as f: writer = csv.writer(f) for rowData in data: print("rowData=", rowData) writer.writerow(rowData) path = r"E:\\Python\\py17\\automatictext\\000001.csv&qu

  • python实现向ppt文件里插入新幻灯片页面的方法

    本文实例讲述了python实现向ppt文件里插入新幻灯片页面的方法.分享给大家供大家参考.具体实现方法如下: # -*- coding: UTF-8 -*- import win32com.client import win32com.client.dynamic import os #我的示例(Template)文档名为 BugCurve.pptx def PowerPoint(): ppt = os.path.join(os.getcwd(), "BugCurve.pptx") A

  • python生成ppt的方法

    本文主要介绍如何通过python生成ppt文件,以及借助ppt模板来生成ppt 环境 python 3 python-pptx 安装 pip3 install python-pptx 将文字输出到ppt 效果图 代码 from pptx import Presentation # 创建幻灯片 ------ prs = Presentation() title_slide_layout = prs.slide_layouts[0] slide = prs.slides.add_slide(titl

  • Python快速将ppt制作成配音视频课件的操作方法

    目录 一.引言 二.ppt视频课件制作过程 2.1.将ppt保存为一张张图像 2.2.按页录音 2.3.编写代码进行合成 三.效果 四.小结 一.引言 老猿从来没有录播个视频课件,但最近有要求在一周内必须录制一个视频课件,为此花了3天时间准备ppt,花了一个小时录播了一个20多分钟的课件. 由于第一次干这个活,讲课时情绪还是有点紧张,导致录播的语音出现了各种重复.不该有的间断.两页切换时课件讲解过快.部分词语发音不准等问题,导致效果一团糟. 为了解决这些问题,又使用剪辑软件进行了剪辑,光剪辑就花

  • python 批量将PPT导出成图片集的案例

    导读 需要使用python做一个将很多个不规则PPT导出成用文件夹归纳好的图片集,所以就需要使用comtypes调用本机电脑上的ppt软件,批量打开另存为多张图片 采坑 公司电脑使用comtypes完美导出图片,系统win10 回家后使用自己的电脑就报错,系统也是win10,最后没办法放弃comtypes采用win32com,最终成功 源代码 """ 该工具函数的功能:批量将PPT导出成图片 """ import comtypes.client

  • 基于Python实现合并多张图片转成mp4视频

    目录 前言 一.需要调入的模块 1.imageio模块 2.Image 模块 二.实现合并多张图片转成 mp4 视频 三.优化改进一下 总结 前言 随着现代科技飞速发展和人们提升视觉上体验,利用图片生成视频的方法,确实为工作或者提升生活体验感做了很多成功案例: 1.简单的幻灯片演示,如展示旅游照片.产品展示等: 2.改编图片动画,如口红试色.时尚大片中的效果: 3.制作日记式的视频内容,将一段长时间内的照片串在一起,如婚礼纪实.Baby成长记录等: 4.制作信息图表,如将各种数据图表整合在一起以

  • 使用Python快速制作可视化报表的方法

    我们可以试用可视化包--Pyechart. Echarts是百度开源的一个数据可视化JS库,主要用于数据可视化. pyecharts是一个用于生成Echarts图标的类库.实际就是Echarts与Python的对接. 安装 pyecharts兼容Python2和Python3.执行代码: pip install pyecharts(快捷键Windows+R--输入cmd) 初级图表 1.柱状图/条形图 from pyecharts import Bar attr=["衬衫","

  • 基于Python制作B站视频下载小工具

    目录 1. 原理简介 2. 网页分析 3. 视频爬取 4. 存入本地 5. GUI工具制作 1. 原理简介 原理很简单,就是获取视频资源的源地址,然后爬取视频的二进制内容,再写入到本地即可. 2. 网页分析 打开该网页,然后F12进入开发者模式,接着点开网络—>全部,因为视频资源一般比较大,我这里根据大小进行了从大到小的排序,找到了第一条这些可能和视频源地址有关. 然后,我们复制找到的这条里的url部分不变的部分,回到元素中ctrl+F搜索,找到了可能和视频源地址有关的节点. 果然,我们复制这部

  • Python快速从视频中提取视频帧的方法详解

    目录 1.抽取视频帧 2.多线程方法 3.整体代码 补充 Python快速提取视频帧(多线程) 今天介绍一种从视频中抽取视频帧的方法,由于单线程抽取视频帧速度较慢,因此这里我们增加了多线程的方法. 1.抽取视频帧 抽取视频帧主要使用了 Opencv 模块. 其中: camera = cv2.Videocapture( ) ,函数主要是通过调用笔记本内置摄像头读取视频帧: res, image = camera.read( ) 函数主要是按帧读取视频,返回值 “res” 是布尔型,成功读取返回 T

  • Python获取航线信息并且制作成图的讲解

    获取航线信息并且制作成图 航线信息 航线信息查询网站 本次实例使用的航班号为 CES5496 查询后在network中可以寻找到如下内容https://zh.flightaware.com/ajax/ignoreall/trackpoll.rvt?token=c35ca45ecbca57cd1ea443d1c65c36426ea06630de026ffd737977e4a40a26ead614b3f2ddde9907453c214a859f7965-dd1320656957446e66d5342

  • python 实现提取PPT中所有的文字

    我就废话不多说了,大家还是直接看代码吧~ # 导入pptx包 from pptx import Presentation prs = Presentation(path_to_presentation) text_runs = [] for slide in prs.slides: for shape in slide.shapes: if not shape.has_text_frame: continue for paragraph in shape.text_frame.paragraph

  • Python快速优雅的批量修改Word文档样式

    需求描述 手上现有若干份财务分析报告的Word文档,如下: 每一份Word文档中的内容如下: 为了方便后续审阅,需要将所有文档中所有含有资金的语句标红加粗,如图所示 步骤分析和前置知识 为了解决这个需求简单复习一下相关知识.Word文档一般而言由文档(document) - 段落(paragraph) - 文字块(run) 三级结构组成: 从需求反馈中可以看出,本质上我们需要做的就是对所有含有资金的文字块Run进行样式调整 因此,本需求的逻辑如下: 1.创建一个空文件夹(用于存放修改后的财务报告

  • 如何利用Python快速绘制海报级别地图详解

    目录 1 简介 2 利用prettymaps快速制作海报级地图 2.1 prettymaps的几种使用方式 2.1.1 圆形模式 2.1.2 圆角矩形模式 2.1.3 添加文字内容 总结 1 简介 基于Python中诸如matplotlib等功能丰富.自由度极高的绘图库,我们可以完成各种极富艺术感的可视化作品,关于这一点我在系列文章在模仿中精进数据可视化中已经带大家学习过很多案例了. 而今天我要给大家介绍的这个Python库prettymaps非常的有趣,基于它,我们只需要简单的代码就可以对地球

随机推荐