# Operator: video-decoder Author: JunJie Jiang ## Overview ## Interface ```python __init__(self, start_time=None, end_time=None, sample_type=None, args=None) Args: - start_time: float - end_time: float decode video from start_time to end_time - sample_type: str uniform_temporal_subsample time_step_sample - args: dict sample_type is `uniform_temporal_subsample` num_samples: int sample_type is `time_step_sample` time_step: int ``` ```python __call__(self, video_path: str) ``` Args: - video_path: support local path and http/https url. Returns: - towhee.types.VideoFrame ## Requirements av ## How it works ```python from towhee.dc2 import pipe, ops, DataCollection p = ( pipe.input('video_file') .flat_map('video_file', 'frame', ops.video_decode.ffmpeg(start_time=10.0, end_time=15.0, sample_type='time_step_sample', args={'time_step': 1})) .output('frame') ) DataCollection(p('./video.mp4')).show(limit=1) ``` ```python from towhee.dc2 import ops d = ops.video_decode.ffmpeg(start_time=10.0, end_time=20.0, sample_type='uniform_temporal_subsample', args={'num_samples': 10}) for frame in d(video_path): print(frame) print('#' * 50) d = ops.video_decode.ffmpeg(start_time=10.0, end_time=20.0, sample_type='time_step_sample', args={'time_step': 1}) for frame in d(video_path): print(frame) result: VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 10010, key_frame: 1 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 11078, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 12145, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 13280, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 14348, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 15482, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 16550, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 17684, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 18752, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 19887, key_frame: 0 ################################################## VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 10010, key_frame: 1 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 11011, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 12012, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 13013, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 14014, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 15015, key_frame: 1 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 16015, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 17017, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 18018, key_frame: 0 VideoFrame shape: (360, 480, 3), mode: RGB, timestamp: 19019, key_frame: 0 ## Reference