이번 강의는 유튜브 자동화 3편으로 "Still Image 파일과 MP3 파일을 결합하여 MP4 파일을 만드는 파이썬 프로그램"을 소개한다.
프로그램의 전체 기능은 아래와 같다.
Step #1. make jpeg image from pdf file
PDF의 각 페이지를 JPEG 이미지 파일로 저장
Step #2. make mp3 file form pdf file
PDF의 각 페이지에서 텍스트를 추출하고 음성으로 변환 후(Text to speech) MP3 파일로 저장
Step #3. make mp4 by combining jpeg image and mp3 audio one by one
각 페이지별 이미지와 MP3 파일을 결합하여 MP4 파일을 생성
Step #4. make final mp4 by combining all mp4 files
각 페이지에 해당하는 MP4 파일을 순서대로 결합하여 최종 MP4 파일 생성
오늘은 Step #3, #4 를 파이썬으로 프로그래밍한다.
Step #1 파이썬 프로그램은 아래 페이지에서 확인 가능하다.
2021.11.01 - [나는 개발자다/실전 파이썬] - 유튜브 자동화 #1. PDF 파일의 모든 페이지를 이미지 파일로 저장하기
Step #2 파이썬 프로그램은 아래 페이지에서 확인 가능하다.
2021.11.03 - [나는 개발자다/실전 파이썬] - 유튜브 자동화 #2. PDF 텍스트 추출, 음성 변환, MP3 파일로 저장
moviepy 라이브러리를 설치한다.
pip install moviepy
moviepy는 비디오 편집을 위한 기본 작업인 잘라내기, 연결, 제목 삽입, 그리고 비디오 합성, 효과 추가 등을 할 수 있다.
오늘 사용할 moviepy의 모듈과 함수는 다음과 같다.
- AudioFileClip,
- ImageClip,
- VideoFileClip,
- concatenate_videoclips
Still 이미지와 MP3 파일을 이용하여 MP4 파일을 생성한다.
def add_static_image_to_audio(image_path, audio_path, output_path):
"""Create and save a video file to `output_path` after
combining a static image that is located in `image_path`
with an audio file in `audio_path`"""
# create the audio clip object
audio_clip = AudioFileClip(audio_path)
# create the image clip object
image_clip = ImageClip(image_path)
# use set_audio method from image clip to combine the audio with the image
video_clip = image_clip.set_audio(audio_clip)
# specify the duration of the new clip to be the duration of the audio clip
video_clip.duration = audio_clip.duration
# set the FPS to 1
video_clip.fps = 1
# write the resuling video clip
video_clip.write_videofile(output_path)
add_static_image_to_audio(image_path, audio_path, output_path):
input
- image_path: image 파일의 전체 경로
- audio_path: 오디오 파일의 전체 경로
- output_path: mp4 파일을 저장할 폴더
jpg 파일 3개와 mp3 파일 3개의 전체 경로로 입력하면 mp4 파일 3개가 생성된다.
첫 번째 mp4 파일(audiobook_test-page-000.mp4)을 확인해 보았다. 정상적으로 실행된다.
PDF 파일의 각 페이지에 해당하는 MP4 파일을 모두 합쳐서 하나의 MP4 파일로 붙이기
def combine_video_files(video_list):
video_clips = []
for video in video_list:
video_clip = VideoFileClip(video)
video_clips.append(video_clip)
final_video_clip = concatenate_videoclips(video_clips)
final_video_path = self.data_dir + self.video_file_name + self.MP4_EXT
final_video_clip.write_videofile(final_video_path)
combine_video_files(video_list)
input
- video_list: 결합할 MP4 파일의 리스트
프로그램을 실행하면 최종 MP4 파일이 생성된다.
위의 단계에서 생성된 3개의 MP4 파일을 결합하여 최종적으로 생성된 MP4 파일(audiobook_test.mp4)이다.
이상으로 PDF 파일을 동영상 파일로 자동 변환하는 파이썬 프로그램 개발을 마친다.
다음 작업은 실제 콘텐츠로 구글 드라이브에서 PDF 파일을 작성하고 파이썬 프로그램으로 동영상 변환 후 유튜브에 업로드할 예정이다.
'나는 개발자다 > 실전 파이썬' 카테고리의 다른 글
파이썬 코드 다섯 줄로 유튜브 MP3 변환하기 (0) | 2023.03.06 |
---|---|
유튜브 자동화 #2. PDF 텍스트 추출, 음성 변환, MP3 파일로 저장 (5) | 2021.11.03 |
유튜브 자동화 #1. PDF 파일의 모든 페이지를 이미지 파일로 저장하기 (2) | 2021.11.01 |
파이썬 코딩 팁 #01. 리스트 컴프리헨션 (List Comprehension) (0) | 2021.10.26 |
실전 코딩 #01. 상생소비지원금 계산기, 파이썬으로 만들어 보자. (4) | 2021.10.07 |