Skip to main content
Weave は moviepy を使用して動画を自動的にログします。これにより、トレース対象の関数に動画の入力や出力を渡せるようになり、動画データのアップロードと保存は Weave が自動的に処理します。
動画のサポートは現在 Python でのみ利用可能です。

使用するための前提条件

  1. weavemoviepy==1.0.3 をインストールします。
  2. W&B アカウントを作成します。

サポートされる動画タイプ

Weave は、以下のような moviepy の動画クリップオブジェクトを認識します。
  • 動画ファイルから読み込んだ VideoFileClip
  • ImageClipColorClipTextClip などのインメモリクリップ

ファイルベースのクリップの直接アップロード

クリップがVideoFileClipで、サポート対象の拡張子を持つ有効なファイル名がある場合、Weave はそのファイルを直接アップロードします。 サポート対象のファイル拡張子:
  • .mp4
  • .webm
  • .gif

インメモリクリップのサポート

動画オブジェクトがインメモリの場合 (ディスク上にファイルがない場合) 、Weave はそれを .mp4 ファイルとしてエンコードし、自動的にアップロードします。これは、次のタイプのクリップに適用されます。
  • ImageClip
  • ColorClip
  • TextClip

例: 動画処理関数をトレースする

以下のコードサンプルは、Weave で動画処理関数をトレースする方法を示します。このコードサンプルでは、次のことを行います。
  1. Weave プロジェクト video-test を初期化します。
  2. get_video 関数を weave.op としてトラッキングし、読み込んだ VideoFileClip から 1 秒間のサブクリップを VideoClip として抽出するように定義します。
  3. クリップを Weave にアップロードしてトラッキングします。
  4. 動画が見つからない場合は、ダミーの MP4 動画を自動的に生成します。
スレッドセーフティの問題を避けるため、VideoFileClip オブジェクトは Weave の op の外で作成せず、必ずそのパスを渡してください。
以下のコードスニペットを使用する前に、利用の前提条件を完了してください。
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) 
コードサンプルが正常に実行されると、プロジェクトのトレース表にあるリンクをクリックして、動画を表示できます。
トレース表内の動画処理関数のトレース。
Weave にアップロードされ、トレースのポップアウトで表示された MP4 動画。