CodeGym /행동 /Python SELF KO /MoviePy로 영상 처리 입문

MoviePy로 영상 처리 입문

Python SELF KO
레벨 47 , 레슨 0
사용 가능

1. MoviePy가 뭐고 왜 이렇게 멋진가요?

안녕, 학생들! 오늘은 MoviePy를 사용하여 신나는 영상 처리 세계에 뛰어들어 볼 거야. 이 도구로 평범한 클립에서도 영상 마법을 만들어낼 수 있어. 비디오 편집이 비싼 도구를 가진 전문가만의 영역이라고 생각했다면, 내가 그게 아니라는 걸 보여줄게. 시작하자!

MoviePy는 Python용 영상 처리 라이브러리야. 이걸로 너는 비디오 파일을 읽고, 저장하고, 수정하고, 심지어 오디오 작업까지 할 수 있어! 추가로 특별한 편집 기술 없더라도 가능하다고. 약간의 마법으로 Python이 네가 원하는 언어로 비디오를 이야기하게 할 거야.

왜 MoviePy일까?

  • 사용의 간편함: MoviePy는 직관적인 인터페이스를 자랑해서 코드 안에서 길을 잃지 않고도 비디오를 작업할 수 있어.
  • 다기능성: 비디오 자르기에서 텍스트와 효과 추가까지, MoviePy는 대부분의 작업을 도와줄 거야.
  • 호환성: 다양한 플랫폼에서 작동하며 NumPy, PIL (Pillow) 같은 다른 라이브러리와 함께 사용할 수 있어.

2. MoviePy 설치하기

MoviePy를 설치해 보자! Python과 인터넷에서 패키지를 설치할 수 있어야 해. Wi-Fi에 연결하거나 (아니면 GitHub을 무료 Wi-Fi처럼 사용해, 프로들이 그런다더라) 터미널을 열고 다음을 입력해:


pip install moviepy

혹시라도 뭔가 잘 안 된다면, 걱정 마! 프로그래밍 세상에서는 "잘 안 됐다"라는 게 사실 버그가 아니라, 약간의 신기능 같은 거야.

설치 문제 해결하기

설치 중에 에러가 뜨면 컴퓨터를 버리기 전에 다음 단계를 시도해 봐:

  • Python 버전 확인: MoviePy는 Python 3.5 이상이 필요해.
  • 필요한 종속성이 전부 설치됐는지 확인: MoviePy의 일부 기능에는 FFMPEG가 필요할 수 있어. FFMPEG 공식 페이지의 지침을 따라 설치해.
  • 가상 환경 사용: 종속성 충돌은 새 가상 환경을 만들면 해결될 수 있어. python -m venv myenv를 시도해 봐.

3. 비디오 열기 및 읽기

MoviePy가 설치됐으니 이제 작업을 시작할 수 있어. 옛날 영화 프로젝터를 잡고 필름을 해체해서 새로운 걸작을 만들어낼 준비를 한다고 상상해 보자. 코드에서 이게 어떻게 작동하는지 살펴보자.

MoviePy에서 비디오 작업에는 VideoFileClip 클래스가 사용돼. 이 클래스를 통해 비디오 파일을 로드하고 처리할 수 있어. 비디오 파일을 여는 건 속성에 접근하고 편집 기능을 사용할 수 있는 첫 번째 단계야.

비디오 파일 열기


from moviepy.editor import VideoFileClip

# 비디오 파일 열기
video = VideoFileClip("sample_video.mp4")

# 비디오의 주요 정보 가져오기
print("길이:", video.duration, "초")
print("해상도:", video.size)
print("프레임 레이트:", video.fps, "fps")

코드 설명

  • VideoFileClip("sample_video.mp4"): sample_video.mp4 비디오 파일을 로드하여 작업 가능한 video 객체를 생성.
  • video.duration: 비디오의 길이를 초 단위로 표시.
  • video.size: 비디오의 크기(너비와 높이)를 반환.
  • video.fps: 비디오 프레임 레이트(frames per second)를 반환.

4. 비디오 크기 변경

게시나 최적화를 위해 비디오 크기를 변경해야 할 때가 있어. MoviePy에서는 resize() 메서드를 사용해 비디오를 원하는 크기나 원래 크기의 비율로 조정할 수 있어.

예제


# 비디오 크기를 원래 크기의 50%로 줄이기
video_resized = video.resize(0.5)
video_resized.write_videofile("resized_video.mp4")

코드 설명

  • video.resize(0.5): 원래 크기의 50%로 비디오 크기를 줄임.
  • write_videofile(): 결과를 새로운 비디오 파일 resized_video.mp4로 저장.

크기를 비율로 조정하는 것 외에도 너비를 640픽셀로 설정하는 등 정확한 크기를 지정할 수도 있어:


# 비디오 너비를 640픽셀로 설정
video_resized = video.resize(width=640)
video_resized.write_videofile("resized_video_640.mp4")

너비(width=640)와 같은 한쪽만 지정하면, 다른 한쪽은 비율을 유지하도록 자동으로 계산돼.

5. 비디오 자르기 (crop)

자르기(crop)는 필요 없는 부분을 제거하고 필요한 영역만 남길 때 유용해. crop() 메서드를 사용하여 자르기 좌표를 지정할 수 있어: 상단과 하단 경계, 그리고 왼쪽과 오른쪽.

예제


# 비디오 자르기: 가장자리 부분 제거
video_cropped = video.crop(x1=50, y1=50, x2=500, y2=400)
video_cropped.write_videofile("cropped_video.mp4")

코드 설명

  • video.crop(x1=50, y1=50, x2=500, y2=400): 비디오를 좌표 (50, 50)에서 (500, 400)까지의 영역만 유지하도록 자름.
  • write_videofile(): 잘린 비디오를 cropped_video.mp4로 저장.

6. 비디오 회전

MoviePy는 90, 180, 또는 270도 회전도 지원해, 다양한 방향으로 촬영된 비디오 작업 시 유용해.

비디오를 90도 회전


# 비디오를 90도 회전
video_rotated = video.rotate(90)
video_rotated.write_videofile("rotated_video.mp4")

코드 설명

  • video.rotate(90): 비디오를 시계 방향으로 90도 회전.
  • write_videofile(): 회전된 비디오를 rotated_video.mp4로 저장.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION