Spaces:
Runtime error
Runtime error
from decord import VideoReader | |
from decord import cpu | |
import numpy as np | |
import torchvision.transforms as transforms | |
from transforms import ( | |
GroupNormalize, GroupScale, GroupCenterCrop, | |
Stack, ToTorchFormatTensor | |
) | |
def loadvideo_decord(sample, sample_rate_scale=1,new_width=384, new_height=384, clip_len=8, frame_sample_rate=2,num_segment=1): | |
fname = sample | |
vr = VideoReader(fname, width=new_width, height=new_height, | |
num_threads=1, ctx=cpu(0)) | |
# handle temporal segments | |
converted_len = int(clip_len * frame_sample_rate) | |
seg_len = len(vr) //num_segment | |
duration = max(len(vr) // vr.get_avg_fps(),8) | |
all_index = [] | |
for i in range(num_segment): | |
index = np.linspace(0, seg_len, num=int(duration)) | |
index = np.clip(index, 0, seg_len - 1).astype(np.int64) | |
index = index + i*seg_len | |
all_index.extend(list(index)) | |
all_index = all_index[::int(sample_rate_scale)] | |
vr.seek(0) | |
buffer = vr.get_batch(all_index).asnumpy() | |
return buffer | |
def loadvideo_decord_origin(sample, sample_rate_scale=1,new_width=384, new_height=384, clip_len=8, frame_sample_rate=2,num_segment=1): | |
fname = sample | |
vr = VideoReader(fname, | |
num_threads=1, ctx=cpu(0)) | |
# handle temporal segments | |
converted_len = int(clip_len * frame_sample_rate) | |
seg_len = len(vr) //num_segment | |
duration = max(len(vr) // vr.get_avg_fps(),8) | |
all_index = [] | |
for i in range(num_segment): | |
index = np.linspace(0, seg_len, num=int(duration)) | |
index = np.clip(index, 0, seg_len - 1).astype(np.int64) | |
index = index + i*seg_len | |
all_index.extend(list(index)) | |
all_index = all_index[::int(sample_rate_scale)] | |
vr.seek(0) | |
buffer = vr.get_batch(all_index).asnumpy() | |
return buffer | |