[VLM] Replace decord with torchcodec for video decoding (#20055)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: BakerBunker <17872844+BakerBunker@users.noreply.github.com>
This commit is contained in:
Xinyuan Tong
2026-03-09 11:23:49 +00:00
committed by GitHub
parent 2d6eb7dff0
commit 4a757990a1
17 changed files with 234 additions and 144 deletions

View File

@@ -15,11 +15,12 @@ import numpy as np
import openai
import pybase64
import requests
from decord import VideoReader, cpu
from PIL import Image
from sglang.srt.utils.video_decoder import VideoDecoderWrapper
# pip install httpx==0.23.3
# pip install decord
# pip install torchcodec
# pip install protobuf==3.20.0
@@ -200,13 +201,13 @@ def video_speed_test(client, video_path):
def prepare_video_messages(video_path):
max_frames_num = 32
vr = VideoReader(video_path, ctx=cpu(0))
total_frame_num = len(vr)
decoder = VideoDecoderWrapper(video_path)
total_frame_num = len(decoder)
uniform_sampled_frames = np.linspace(
0, total_frame_num - 1, max_frames_num, dtype=int
)
frame_idx = uniform_sampled_frames.tolist()
frames = vr.get_batch(frame_idx).asnumpy()
frames = decoder.get_frames_at(frame_idx)
base64_frames = []
for frame in frames: