1. MoviePy 텍스트 세계로의 입문
자, 이제 텍스트를 추가하면서 비디오 편집의 마법 같은 세계로 깊이 들어갈 준비를 하자. 여러분이 감독이라고 상상해 보세요. 단순히 캐릭터에게 대사를 주는 것만이 아니라, 화면에 나타나는 단어들을 조종해야 하는 임무를 맡게 되는 거죠. 맞아요, 바로 자막과 타이틀의 마법입니다!
시작하기 전에 한 가지 간단한 사실을 이해하는 것이 중요해요: MoviePy는 단순히 비디오 작업을 위한 또 다른 라이브러리가 아니에요. 여러분만의 비디오 디자이너로, 여러분의 프로젝트에 약간의 화려함과 정보를 추가하는 데 도움을 줄 수 있답니다. 여러분은 이미 비디오 편집의 기초—자르기, 붙이기, 약간의 특수 효과—를 배웠을 테니 다음 단계로 나아갈 때입니다.
텍스트를 추가하는 이유는?
비디오에서 텍스트는 중요한 역할을 합니다—정보 메시지, 스타일화된 타이틀, 그리고 밤늦게 이웃들이 잠들었을 때 여러분의 작품을 보는 이들에게 구원의 자막이 있죠. MoviePy를 사용하면 편리하고 스타일리시하게 이 작업을 수행할 수 있어요.
2. 텍스트 작업
간단한 텍스트 요소부터 시작해 봅시다. 이를 위해 MoviePy는 텍스트를 비디오 클립에 추가할 수 있는 아주 훌륭한 TextClip
기능을 제공합니다.
텍스트 클립 생성
기본 텍스트 클립 설정은 다음과 같습니다:
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
# 비디오 파일 열기
video = VideoFileClip("sample_video.mp4")
# 텍스트 클립 생성
txt_clip = TextClip("안녕, 세상!", fontsize=70, color='white')
# 텍스트 클립의 지속 시간 설정
txt_clip = txt_clip.set_duration(video.duration)
# 텍스트 위치 설정
txt_clip = txt_clip.set_position('bottom')
# 비디오에 텍스트 추가
video_with_text = CompositeVideoClip([video, txt_clip])
# 결과 저장
video_with_text.write_videofile("output_video_with_text.mp4", fps=24)
글꼴 및 색상 설정
텍스트의 색상, 글꼴 및 크기를 쉽게 설정할 수 있어요. 위의 예제에서는 텍스트가 흰색이지만, 다른 색상으로도 변경할 수 있습니다. 예를 들어:
txt_clip = TextClip("안녕, 세상!", fontsize=70, font='Amiri-bold', color='yellow')
동일한 방식으로 글꼴도 변경할 수 있어요. 다만, 필요한 글꼴이 시스템에 설치되어 있는지 확인하세요.
3. 화면에서 텍스트 위치 지정
set_position()
매개변수를 사용하여 텍스트 위치를 지정할 수 있어요. 이 매개변수는 텍스트 값(예: 'center'
, 'bottom'
) 또는 좌표를 받을 수 있어요.
텍스트를 다양한 위치에 배치
# 상단에 텍스트 배치
text_top = TextClip("상단 텍스트", fontsize=30, color='blue').set_position(('center', 'top')).set_duration(5)
# 하단에 텍스트 배치
text_bottom = TextClip("하단 텍스트", fontsize=30, color='green').set_position(('center', 'bottom')).set_duration(5)
# (x=100, y=100) 좌표에 텍스트 배치
text_coords = TextClip("좌표 텍스트", fontsize=30, color='red').set_position((100, 100)).set_duration(5)
# 모든 텍스트를 비디오에 오버레이
final_video = CompositeVideoClip([video, text_top, text_bottom, text_coords])
final_video.write_videofile("video_with_positioned_text.mp4")
여기서:
('center', 'top')
: 텍스트를 중앙 상단에 배치.('center', 'bottom')
: 텍스트를 중앙 하단에 배치.(100, 100)
: 텍스트를 특정 좌표에 배치.
텍스트에 동적 애니메이션 추가
텍스트를 단순히 추가하는 것만이 아니라, 생동감 있게 만드는 것이 비디오를 정말로 매력적으로 만드는 요소입니다. 텍스트를 애니메이션화해 봅시다.
def move_text(t):
return 10, 100 * t # 시간이 지남에 따라 텍스트를 아래로 이동
txt_clip = txt_clip.set_pos(move_text).set_duration(3)
4. 자막 작업
자막은 비디오의 특정 순간과 동기화된 텍스트를 나타냅니다. 파일에서 자막을 로드하거나 직접 만들 수도 있어요.
직접 자막 추가
간단한 예제로 비디오에 자막을 추가해 보겠습니다. 이를 위해 텍스트 클립을 생성하고 표시 시간을 설정하면 됩니다:
# 자막 생성
subtitles = [
{"text": "안녕, 세상!", "start": 0, "end": 2},
{"text": "이건 자막이야!", "start": 2.5, "end": 5}
]
# 자막과 비디오 결합
sub_clips = [TextClip(sub['text'], fontsize=50, color='white')
.set_position(('center', 'bottom'))
.set_start(sub['start'])
.set_duration(sub['end'] - sub['start'])
for sub in subtitles]
video_with_subtitles = CompositeVideoClip([video] + sub_clips)
video_with_subtitles.write_videofile("output_video_with_subtitles.mp4", fps=24)
GO TO FULL VERSION