Download code/video_inputs.py from fira-aslan/motionx-ski-artifacts: direct link, hf CLI and curl.
- Browser
- Download file 929 Bytes
-
https://huggingface.co/fira-aslan/motionx-ski-artifacts/resolve/main/code/video_inputs.py
- Command line
-
hf download hf://fira-aslan/motionx-ski-artifacts/code/video_inputs.py
-
curl -L -o video_inputs.py https://huggingface.co/fira-aslan/motionx-ski-artifacts/resolve/main/code/video_inputs.py
929 Bytes
| import decord | |
| import numpy as np | |
| from qwen_vl_utils import process_vision_info | |
| def build_video_item(path, fps, max_frames, max_pixels): | |
| return {"type": "video", "video": str(path), "fps": fps, | |
| "max_frames": max_frames, "max_pixels": max_pixels} | |
| def prepare(messages, video_path): | |
| out = process_vision_info(messages, return_video_kwargs=True) | |
| videos = out[1] | |
| vk = out[2] if len(out) > 2 else {} | |
| vk = {k: (v[0] if isinstance(v, list) and len(v) == 1 else v) for k, v in vk.items()} | |
| vr = decord.VideoReader(str(video_path), num_threads=1) | |
| n_native = len(vr) | |
| native_fps = float(vr.get_avg_fps()) | |
| n = videos[0].shape[0] | |
| idx = np.linspace(0, n_native - 1, n).round().astype(int) | |
| meta = [{"fps": native_fps, "duration": float(n_native / native_fps), | |
| "total_num_frames": int(n_native), "frames_indices": idx}] | |
| vk["video_metadata"] = meta | |
| return videos, vk | |