濮阳杆衣贸易有限公司

主頁 > 知識庫 > Python快速將ppt制作成配音視頻課件的操作方法

Python快速將ppt制作成配音視頻課件的操作方法

熱門標(biāo)簽:洪澤縣地圖標(biāo)注 梅州外呼業(yè)務(wù)系統(tǒng) 老人電話機(jī)器人 北京電信外呼系統(tǒng)靠譜嗎 百度地圖標(biāo)注位置怎么修改 高德地圖標(biāo)注是免費(fèi)的嗎 地圖標(biāo)注視頻廣告 無錫客服外呼系統(tǒng)一般多少錢 大連crm外呼系統(tǒng)

一、引言

老猿從來沒有錄播個(gè)視頻課件,但最近有要求在一周內(nèi)必須錄制一個(gè)視頻課件,為此花了3天時(shí)間準(zhǔn)備ppt,花了一個(gè)小時(shí)錄播了一個(gè)20多分鐘的課件。

由于第一次干這個(gè)活,講課時(shí)情緒還是有點(diǎn)緊張,導(dǎo)致錄播的語音出現(xiàn)了各種重復(fù)、不該有的間斷、兩頁切換時(shí)課件講解過快、部分詞語發(fā)音不準(zhǔn)等問題,導(dǎo)致效果一團(tuán)糟。

為了解決這些問題,又使用剪輯軟件進(jìn)行了剪輯,光剪輯就花了2天時(shí)間,結(jié)果效果還是不好,最后想到了一個(gè)辦法,就是廢掉原錄播材料,將ppt導(dǎo)出成圖像,然后逐頁錄音,再使用合成軟件將圖像和音頻逐一匹配,再進(jìn)行制作?;?0多分鐘逐頁錄音并試聽,最后花了半天時(shí)間制作和輸出,終于趕上最后的截止時(shí)間前上交了視頻。如果最開始就用這個(gè)方法,可以節(jié)省大部分時(shí)間。

基于上述過程,老猿又想到最后這個(gè)處理過程完全不需要使用合成軟件,而是使用Moviepy是否更好呢?今天付諸行動(dòng),發(fā)現(xiàn)使用Moviepy進(jìn)行合成比圖形操作界面的合成軟件效果更好,完美地解決了音頻和ppt材料的協(xié)同問題。下面就詳細(xì)介紹一下這個(gè)過程,供ppt視頻課件制作生手提供一個(gè)可以高效制作視頻的方法。

二、ppt視頻課件制作過程

 2.1、將ppt保存為一張張圖像

打開ppt,選擇:文件 --> 另存為,保存類型選擇為PNG或jpg,如圖:

然后點(diǎn)擊保存,出現(xiàn):

選擇“每張幻燈片”。
這樣就可以將每頁ppt導(dǎo)出成圖片了,如:

相關(guān)圖片會輸出到一個(gè)單獨(dú)的目錄,以“幻燈片XX.png”等形式逐頁輸出保存。

2.2、按頁錄音

對照ppt每頁的內(nèi)容,將該頁講解的語音使用手機(jī)錄音軟件等方式錄制成一個(gè)個(gè)音頻文件,下面是老猿錄制的音頻文件目錄:

注意,在以上錄音時(shí),第18頁和20頁錄制成了2段,這種方式處理和其他頁面不一樣,是不適合用程序來處理的,除非對此針對性的改造。

2.3、編寫代碼進(jìn)行合成

代碼的說明與注釋,不單獨(dú)進(jìn)行補(bǔ)充說明,完整代碼如下:

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拆分成三段的一個(gè)列表,三個(gè)元素分別是:模式串前面的字符串、模式串(含百分號、數(shù)字和d)、模式串后面的字符串,如果沒有找到模式串則返回None
    """
    patternIndex = patternString.index("%")
    if patternIndex0:
        print("模式字符串中未發(fā)現(xiàn)模式匹配符:%")
        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("模式字符串中的模式存在非數(shù)字")
                return None
    if matched: return [patternString[:patternIndex],patternString[patternIndex:patternEnd+1],patternString[patternEnd+1:]]
    else:
        print("模式字符串中的模式不是字母d結(jié)尾")
        return None

def composePPTImgsAndSounds(imgFilePattern,soundFilePattern,startSeq=1,endSeq=None):
    """
    :param imgFilePattern: 圖像文件模式,要求圖像文件中必須含文件序號,序號采用%d、%02d/%03d的方式來識別
    :param soundFilePattern:音頻文件格式,要求文件中必須含文件序號,序號采用%d、%02d/%03d的方式來識別
    :param startSeq:文件序列號其實(shí)值,一般為0或1
    :param endSeq:文件序列號結(jié)束值,可以不填
    :return:生成的視頻
    """
    if endSeq is None:endSeq=9999999  #當(dāng)對應(yīng)序號找不到文件時(shí)結(jié)束
    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"音視和圖像文件加載結(jié)束,最后一個(gè)文件的序號為{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("視頻文件已經(jīng)生成")
    return clip


composePPTImgsAndSounds(r'F:\bak\pr\大H\十百千\視頻制作\5G在線計(jì)費(fèi)動(dòng)態(tài)授權(quán)機(jī)制介紹3.9\幻燈片%d.PNG',r'C:\temp\錄音文件\p%d.m4a')

如果不了解Moviepy的,請參考《 Python音視頻剪輯庫MoviePy1.0.3中文教程導(dǎo)覽及可執(zhí)行工具下載》的導(dǎo)覽式介紹。

三、效果

使用該方式制作的視頻,比圖形界面合成軟件制作的視頻效果更流暢、大小更小、制作時(shí)間也更短,大小大概是圖形界面視頻合成軟件的不到十分之一,視頻輸出時(shí)間是圖形界面合成軟件手工輸出的四分之一,還省了手工去進(jìn)行合成剪輯的過程(非熟練人員一般需要1-2個(gè)小時(shí)),老猿20分鐘的視頻課,含錄音、試聽及部分重錄時(shí)間,整個(gè)制作過程不到70分鐘(不含代碼編寫時(shí)間),是不是特別好用?

不過注意,老猿上面的案例處理到第18頁時(shí)就認(rèn)為課件完結(jié)了,要將整個(gè)課件處理完,需要合并18頁和20頁的音頻輸出到其他音頻文件類似的音頻文件中。

四、小結(jié)

本文介紹了一種ppt視頻課件快速制作的方法,通過將ppt輸出成一張張圖片,然后逐頁配音,最后使用Moviepy將其合成輸出,課件制作又快又好。由于采用了分頁錄音的方式,對于講解不好的地方很快就可以更換,因此比期望一次性錄播然后剪輯的效果要好很多,同時(shí)輸出的視頻文件小、輸出快。

以上就是Python快速將ppt制作成配音視頻課件的操作方法的詳細(xì)內(nèi)容,更多關(guān)于python ppt配音視頻課件的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 基于python實(shí)現(xiàn)自動(dòng)化辦公學(xué)習(xí)筆記(CSV、word、Excel、PPT)
  • python生成ppt的方法
  • python實(shí)現(xiàn)向ppt文件里插入新幻燈片頁面的方法
  • Python實(shí)現(xiàn)對PPT文件進(jìn)行截圖操作的方法
  • python啟動(dòng)辦公軟件進(jìn)程(word、excel、ppt、以及wps的et、wps、wpp)

標(biāo)簽:怒江 泉州 洛陽 安慶 岳陽 吉林 長春 清遠(yuǎn)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python快速將ppt制作成配音視頻課件的操作方法》,本文關(guān)鍵詞  Python,快速,將,ppt,制,作成,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python快速將ppt制作成配音視頻課件的操作方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python快速將ppt制作成配音視頻課件的操作方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    平陆县| 石嘴山市| 富源县| 新龙县| 阿勒泰市| 历史| 西丰县| 泊头市| 买车| 西安市| 勐海县| 仪征市| 沛县| 安仁县| 衢州市| 洛川县| 滁州市| 湘潭县| 宜君县| 长丰县| 龙海市| 隆安县| 伊通| 涞水县| 昭苏县| 平安县| 买车| 镇巴县| 新蔡县| 崇义县| 依兰县| 图木舒克市| 高雄市| 保靖县| 鄂伦春自治旗| 会同县| 湘阴县| 乌兰县| 积石山| 濮阳县| 渭南市|