Note
This is a community plugin, an external project maintained by its respective author. Community plugins are not part of FiftyOne core and may change independently. Please review each plugin’s documentation and license before use.
video2dataset (@parva101/video2dataset)#
Demo#
YouTube -> Dataset#

Local Video -> Dataset#

A production-ready FiftyOne Python plugin that converts YouTube URLs or local video files into image datasets by extracting representative keyframes.
Features#
YouTube ingest via
yt-dlpLocal video ingest
Three frame selection strategies:
uniform(every N seconds)scene_change(histogram-based scene detection)hybrid(uniform + scene change)Optional perceptual hash deduplication (
pHash)Automatic dataset creation + open in FiftyOne App
Source metadata attached to samples and dataset info
Operators#
sample_from_youtubesample_from_video
Requirements#
Python 3.10+
FiftyOne (latest stable recommended)
Python packages in
requirements.txtffmpegonPATH(recommended)
Install dependencies:
pip install -r requirements.txt
Installation#
Install from GitHub:
fiftyone plugins download https://github.com/Parva101/video2dataset
Install only this plugin:
fiftyone plugins download https://github.com/Parva101/video2dataset --plugin-names @parva101/video2dataset
Verify install:
fiftyone plugins list
fiftyone operators list
Usage#
Launch FiftyOne App
Open Operator Browser
Run:
Video Sampler: YouTube to dataset, orVideo Sampler: local video to dataset
Configure:
dataset_name(required)strategy:uniform | scene_change | hybridmax_framesinterval_secondsscene_threshold(0to1)dedupanddedup_thresholdoverwrite_datasetoutput_dir(optional)
Output schema#
Sample fields:
filepathsource_typesampling_strategytimestamp_secframe_number
Additional YouTube fields:
source_urlvideo_idtitleduration_secuploader
Dataset info fields:
source_typesource_metadataextraction_info
Development#
pip install -r requirements.txt
pip install -r requirements-dev.txt
pytest
ruff check .
Troubleshooting#
If YouTube download fails, verify the URL is public and update
yt-dlpIf no frames are selected, lower
scene_thresholdorinterval_secondsIf dedup removes everything, lower
dedup_thresholdor disablededupIf dataset exists, enable
overwrite_datasetor use a different name
Contributing#
See CONTRIBUTING.md.
Security#
Report vulnerabilities via SECURITY.md.
Changelog#
See CHANGELOG.md.
License#
Licensed under Apache-2.0. See LICENSE.