Skip to main content
Weave 는 moviepy 를 사용하여 비디오를 자동으로 로그합니다. 이를 통해 추적된 함수에 비디오 입력 및 출력을 전달할 수 있으며, Weave 가 비디오 데이터의 업로드 및 저장을 자동으로 처리합니다.
비디오 지원은 현재 Python 에서만 가능합니다.

사용 전제 조건

  1. weavemoviepy==1.0.3 을 설치합니다.
  2. W&B 계정을 생성합니다.

지원되는 비디오 유형

Weave 는 다음과 같은 moviepy 비디오 클립 오브젝트를 인식합니다:
  • 비디오 파일에서 로드된 VideoFileClip
  • ImageClip, ColorClip, TextClip 과 같은 인메모리 클립

파일 기반 클립의 직접 업로드

클립이 VideoFileClip 이고 지원되는 확장자를 가진 유효한 파일 이름이 있는 경우, Weave 는 파일을 직접 업로드합니다. 지원되는 파일 확장자:
  • .mp4
  • .webm
  • .gif

인메모리 클립 지원

비디오 오브젝트가 메모리에 있는 경우 (디스크에 파일이 없는 경우), Weave 는 이를 .mp4 파일로 인코딩하고 업로드를 자동으로 처리합니다. 이는 다음과 같은 유형의 클립에 적용됩니다:
  • ImageClip
  • ColorClip
  • TextClip

예시: 비디오 함수 추적하기

다음 코드 예시는 Weave 에서 비디오 처리 함수를 추적하는 방법을 보여줍니다. 이 코드 예시는 다음을 수행합니다:
  1. video-test 라는 Weave 프로젝트를 초기화합니다.
  2. weave.op 로 추적되는 get_video 함수를 정의합니다. 이 함수는 로드된 VideoFileClip 에서 1초 분량의 서브클립을 VideoClip 으로 추출합니다.
  3. Weave 에서 클립을 업로드하고 추적합니다.
  4. 비디오 파일이 없는 경우 더미 MP4 비디오를 자동으로 생성합니다.
스레드 안전성 문제를 피하기 위해, Weave op 외부에서 생성하는 대신 항상 VideoFileClip 오브젝트의 경로를 전달하세요.
다음 코드조각을 사용하기 전에 사용 전제 조건을 완료하세요.
import os
import weave
from moviepy.editor import VideoFileClip, ColorClip, VideoClip

# 프로젝트 이름을 업데이트하거나 'video-test'라는 새 프로젝트를 생성합니다.
weave.init('video-test')

@weave.op
def get_video(clip: VideoFileClip) -> VideoClip:
    """클립을 직접 전달하는 대신 경로를 통해 비디오를 처리합니다.

    이렇게 하면 VideoFileClip이 Weave op의 스레드 컨텍스트 내에서 생성 및 관리되어
    스레드 안전성 문제를 방지할 수 있습니다.
    """
    new_clip = clip.subclip(0, 1)
    return new_clip

if __name__ == "__main__":
    os.makedirs("videos", exist_ok=True)

    # MP4 파일을 가리키도록 경로를 업데이트하세요.
    video_path = './videos/example.mp4'

    # 비디오가 없는 경우 더미 비디오를 생성합니다.
    # 더미 비디오 내용: 5초 동안 표시되는 빨간색 사각형
    if not os.path.isfile(video_path):
        print("비디오를 찾을 수 없습니다. 더미 비디오를 생성 중...")
        dummy_clip = ColorClip(size=(640, 480), color=(255, 0, 0), duration=5)
        dummy_clip.write_videofile(video_path, fps=24)

    clip = VideoFileClip(video_path, has_mask=False, audio=True)
    get_video(clip) 
코드 샘플이 성공적으로 실행되면 프로젝트의 Traces 테이블에서 링크를 클릭하여 비디오를 볼 수 있습니다.
Traces 테이블에 표시된 비디오 처리 함수의 trace.
Traces 팝아웃에서 확인한 Weave에 업로드된 MP4 비디오.