
요즘 인스타, 유튜브 숏츠등 세로형 영상이 대세다. 쉽고 빠르기 때문이다. 그래서 재미있는 영상이나 짤에 제목을 지어서 세로형으로 다시 제작하여 올린다. (첫번째 예시는 직접 자막을 올린거다)
그래서 저거를 자동화 할 수 있을까? 하는 생각에 시작한 매크로 프로그램이다. 이름하여
파이썬으로 기존 영상을 한글 제목 올린 영상으로 교체하기!
진행은 알고리즘 순서를 생각하고 규격 및 업로드 파일의 형태를 생각했다.
일단 결정해야 할 것은 보기 1유형(세로형에 한글 얹히기)으로 갈지, 2,3유형(가로형에 리사이징 후 위아래 여백에 한글 얹히기) 였다.
여러가지 방법을 찾아보다 2,3 유형은 영상 1920x1080 크기 및 위치를 변경 후 1080x1920에 맞게 넣어야해서 생각보다 번거로웠다. 그래서 일단 1번 유형처럼 만들기로 했다.
작업 순서
1. 원하는 한글을 적은 이미지 파일을 만든다.
2. 1080 x 1920 사이즈의 영상에 얹혀 비디오 파일을 새로 만든다.
1. 원하는 한글을 적은 이미지 파일을 만든다.
여기서 또 2가지가 필요했다. 투명도가 들어간 검정바탕에 흰 글자!
그럼 먼저 한글은 어떻게 쓸까? OpevCV로 한글을 쓰면 깨진다. 그래서 PIL에 ImageFont로 한글폰트를 불러와 먼저 작성해준다.
from PIL import Image,ImageDraw,ImageFont
# 이미지로 출력할 글자 및 폰트 지정 (폰트 파일 경로, 크기)
font = ImageFont.truetype(fontPATH, 75)
자 이제 글자는 썼으니 이제 투명도 있는 검정 배경은 어떻게 만들까?
간단하다 사각 박스 하나를 글자 크기에 비례하게 만들어 주면된다. 그리고 둘을 합쳐준다.
# 이미지 객체 생성 (배경 검정) # R,G,B, Alpha(0~255)
canvas = Image.new('RGBA', (text_width, text_height), color=(0, 0, 0, 170))
# 가운데에 그리기 (폰트 색: 하양)
draw = ImageDraw.Draw(canvas)
w, h = font.getsize(draw_text)
draw.text(((text_width-w)/2.0,(text_height-h)/2.0), draw_text, 'white', font)
# png로 저장 및 출력해서 보기
text_file = os.path.join(sourcePATH, 'title.png')
canvas.save(text_file, "PNG")
한글이 입혀진 텍스트 이미지 완성! 이젠 영상에 올릴 차례다. 여기서 moviepy를 준비해주자
2. 세로 사이즈의 영상에 이미지 얹혀 비디오 파일을 새로 만든다.
https://zulko.github.io/moviepy/
User Guide — MoviePy 1.0.2 documentation
MoviePy is a Python module for video editing, which can be used for basic operations (like cuts, concatenations, title insertions), video compositing (a.k.a. non-linear editing), video processing, or to create advanced effects. It can read and write the mo
zulko.github.io
ttps://chacha95.github.io/2019-10-24-Movipy/
Moviepy를 이용한 비디오 처리
Moviepy? MoviePy란 python을 이용한 Video Processing에 최적화된 library입니다. 한 줄 코드로 직관적이면서도, 빠르게 비디오 및 오디오의 합성이나 애니메이션, GIF 파일 생성 등을 할 수 있습니다. 어떤 경
chacha95.github.io
위에 잘 정리되어있다.
여기서 추가로 나는 두가지 옵션을 줬다. 영상에 따라 위 쪽에 제목을 올릴지, 아래 쪽에 올릴지.
자 그럼 출발.
def insert_title(text, video_path, loc) :
text_path = text_img(text)
video = mp.VideoFileClip(video_path)
tit = (mp.ImageClip(text_path).set_duration(video.duration))
if loc == 'u' or loc == 'U':
t = 120
# t = float(0.2)
elif loc == 'd' or loc == 'D':
t = 950
final = mp.CompositeVideoClip([video, tit.set_position(("center", t))])
fin_path = os.path.join(sourcePATH, "final.mp4")
final.write_videofile(fin_path)
return fin_path, text_path
text : 제목, video_path : 기존 세로형 비디오 경로, loc : 위 or 아래 제목 배치
moviepy는 처음 써봤지만 정말 직관적이고 편했다. 원래 같으면 OpevCV로 프레임별로 한장씩 올리고 저장하듯 코딩을 짯을텐데 역시 라이브러리!
위처럼 영상 제목을 한글로 올려주는 매크로가 완성된다. 편집 프로그램은 필요없지 적당한 영상과 그에 맞는 제목만 있으면 만들어진다. 아래 예시처럼

만들어야지 만들어야지 하다가 날 잡고 금방 서칭하면서 만들었다. 역시 매크로, 즉 자동화는 사람을 윤택하게 해준다.
재밌구먼
'**kwargs > 파이썬' 카테고리의 다른 글
| 주식 재무제표 크롤링 - 1 (0) | 2021.01.05 |
|---|---|
| 주식 재무제표 크롤링 - intro (0) | 2021.01.03 |
| 파이썬 웹 스크랩퍼 만들기 (0) | 2020.12.29 |
| 파이썬 독학 시작 (0) | 2020.12.29 |