Python 빠 른 속도 로 ppt 를 더빙 영상 과제 로 만 드 는 방법

머리말
유인원 은 동 영상 수업 을 녹화 한 적 이 없 지만 최근 에는 일주일 안에 동 영상 수업 을 녹화 해 야 한 다 는 요구 가 있어 3 일 동안 ppt 를 준비 하고 20 여 분 의 수업 을 한 시간 동안 녹화 했다.
처음 이 일 을 했 기 때문에 강의 할 때 정서 가 약간 긴장 되 었 기 때문에 녹화 방송 하 는 음성 에 각종 중복,있어 서 는 안 될 중단,두 페이지 전환 할 때 수업 내용 의 설명 이 너무 빠 르 고 일부 단어의 발음 이 정확 하지 않다 는 등 문제 가 발생 하여 효과 가 엉망 이 되 었 다.
이러한 문 제 를 해결 하기 위해 편집 소프트웨어 를 사용 하여 편집 을 했 습 니 다.편집 만 2 일이 걸 렸 지만 효과 가 좋 지 않 았 습 니 다.마지막 으로 원 녹화 자 료 를 없 애고 ppt 를 이미지 로 내 보 낸 다음 에 한 페이지 씩 녹음 한 다음 에 합성 소프트웨어 를 사용 하여 이미지 와 오디 오 를 하나씩 일치 시 킨 다음 에 제작 하 는 방법 이 생각 났 습 니 다.40 여분 동안 한 페이지 씩 녹음 해 듣 고 마지막 에 반나절 동안 제작 과 출력 을 하 다가 마지막 마감 시간 을 맞 춰 영상 을 제출 했다.처음부터 이 방법 을 사용 하면 대부분의 시간 을 절약 할 수 있다.
상기 과정 을 바탕 으로 원숭이 는 마지막 으로 이 처리 과정 이 합성 소프트웨어 를 사용 하지 않 고 Moviepy 를 사용 하 는 것 이 좋 지 않 을 까?라 고 생각 했다.오늘 행동 에 옮 겨 보 니 Moviepy 를 사용 하여 합성 하 는 것 이 그래 픽 조작 인터페이스 의 합성 소프트웨어 보다 효과 가 좋 고 오디 오 와 ppt 재료 의 협동 문 제 를 완벽 하 게 해결 한 것 으로 나 타 났 다.다음은 이 과정 을 상세 하 게 소개 하여 ppt 영상 과제 제작 초보 자 에 게 효율 적 인 영상 제작 방법 을 제공 합 니 다.
2.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"           :
{e}
{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 에 대해 잘 모 르 시 면《파 이 썬 사 운 드 비디오 편집 라 이브 러 리 MoviePy 1.0.3 중국어 튜 토리 얼 가이드 및 실행 가능 한 도구 다운로드》의 안내 식 소 개 를 참고 하 세 요.
효과
이 방식 으로 제 작 된 영상 은 그래 픽 인터페이스 합성 소프트웨어 로 제 작 된 영상 보다 효과 가 더욱 유창 하고 크기 가 작 으 며 제작 시간 도 짧다.크기 는 그래 픽 인터페이스 영상 합성 소프트웨어 의 10 분 의 1 도 안 되 고 영상 출력 시간 은 그래 픽 인터페이스 합성 소프트웨어 가 손 으로 지 는 4 분 의 1 이다.또한 손 으로 합성 편집 을 하 는 과정(비 숙련 자 는 보통 1-2 시간 이 필요 하 다)을 절약 했다.유인원 의 20 분 짜 리 영상 수업 은 녹음,듣 기 및 일부 재 녹음 시간 을 포함 하고 전체 제작 과정 은 70 분 도 안 되 며(코드 작성 시간 이 포함 되 지 않 음)특히 좋 지 않 습 니까?
그러나 유인원 위의 사례 가 18 페이지 까지 처리 되 었 을 때 과제 가 끝났다 고 생각 하고 전체 과 제 를 다 처리 하려 면 18 페이지 와 20 페이지 의 오디 오 를 합 쳐 다른 오디 오 파일 과 유사 한 오디 오 파일 에 출력 해 야 한다.
소결
본 고 는 ppt 영상 교과 서 를 신속하게 만 드 는 방법 을 소개 했다.ppt 를 한 장의 그림 으로 출력 한 다음 에 한 페이지 씩 더빙 을 한 다음 에 Moviepy 를 사용 하여 이 를 합성 하여 출력 하면 교과 서 를 빠 르 고 잘 만 들 수 있다.페이지 를 나 누 어 녹음 하 는 방식 을 채택 하여 설명 이 좋 지 않 은 곳 은 곧 바 꿀 수 있 기 때문에 기대 한 번 에 녹화 하고 편집 하 는 것 보다 효과 가 훨씬 좋 고 출력 하 는 영상 파일 이 작고 출력 이 빠르다.
이상 은 Python 이 ppt 를 빠르게 더빙 영상 과제 로 만 드 는 조작 방법 에 대한 상세 한 내용 입 니 다.python ppt 더빙 영상 과제 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기