音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

Python快速将ppt制作成配音视频课件的操作方法
日期:2021-09-08 14:46:49   来源:脚本之家

一、引言

老猿从来没有录播个视频课件,但最近有要求在一周内必须录制一个视频课件,为此花了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配音视频课件的资料请关注其它相关文章!

    您感兴趣的教程

    在docker中安装mysql详解

    本篇文章主要介绍了在docker中安装mysql详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编...

    详解 安装 docker mysql

    win10中文输入法仅在桌面显示怎么办?

    win10中文输入法仅在桌面显示怎么办?

    win10系统使用搜狗,QQ输入法只有在显示桌面的时候才出来,在使用其他程序输入框里面却只能输入字母数字,win10中...

    win10 中文输入法

    一分钟掌握linux系统目录结构

    这篇文章主要介绍了linux系统目录结构,通过结构图和多张表格了解linux系统目录结构,感兴趣的小伙伴们可以参考一...

    结构 目录 系统 linux

    PHP程序员玩转Linux系列 Linux和Windows安装

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,Linux和Windows安装nginx教程,具有一定的参考价值,感兴趣...

    玩转 程序员 安装 系列 PHP

    win10怎么安装杜比音效Doby V4.1 win10安装杜

    第四代杜比®家庭影院®技术包含了一整套协同工作的技术,让PC 发出清晰的环绕声同时第四代杜比家庭影院技术...

    win10杜比音效

    纯CSS实现iOS风格打开关闭选择框功能

    这篇文章主要介绍了纯CSS实现iOS风格打开关闭选择框,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作...

    css ios c

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的

    Win7给电脑C盘扩容的办法大家知道吗?当系统分区C盘空间不足时,就需要给它扩容了,如果不管,C盘没有足够的空间...

    Win7 C盘 扩容

    百度推广竞品词的投放策略

    SEM是基于关键词搜索的营销活动。作为推广人员,我们所做的工作,就是打理成千上万的关键词,关注它们的质量度...

    百度推广 竞品词

    Visual Studio Code(vscode) git的使用教程

    这篇文章主要介绍了详解Visual Studio Code(vscode) git的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    教程 Studio Visual Code git

    七牛云储存创始人分享七牛的创立故事与

    这篇文章主要介绍了七牛云储存创始人分享七牛的创立故事与对Go语言的应用,七牛选用Go语言这门新兴的编程语言进行...

    七牛 Go语言

    Win10预览版Mobile 10547即将发布 9月19日上午

    微软副总裁Gabriel Aul的Twitter透露了 Win10 Mobile预览版10536即将发布,他表示该版本已进入内部慢速版阶段,发布时间目...

    Win10 预览版

    HTML标签meta总结,HTML5 head meta 属性整理

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析HTML代码,更好地将移动web前端页面表现出来...

    移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家...

    移动端 html5 长按

    HTML常用meta大全(推荐)

    这篇文章主要介绍了HTML常用meta大全(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    cdr怎么把图片转换成位图? cdr图片转换为位图的教程

    cdr怎么把图片转换成位图? cdr图片转换为

    cdr怎么把图片转换成位图?cdr中插入的图片想要转换成位图,该怎么转换呢?下面我们就来看看cdr图片转换为位图的...

    cdr 图片 位图

    win10系统怎么录屏?win10系统自带录屏详细教程

    win10系统怎么录屏?win10系统自带录屏详细

    当我们是使用win10系统的时候,想要录制电脑上的画面,这时候有人会想到下个第三方软件,其实可以用电脑上的自带...

    win10 系统自带录屏 详细教程

    + 更多教程 +
    ASP编程JSP编程PHP编程.NET编程python编程