{"id":20522266,"url":"https://github.com/hairymax/videotimelineannotator","last_synced_at":"2025-03-06T00:29:11.159Z","repository":{"id":253268146,"uuid":"842930445","full_name":"hairymax/VideoTimelineAnnotator","owner":"hairymax","description":"Labeller for Video Timeline Segmentation task","archived":false,"fork":false,"pushed_at":"2024-09-06T19:49:11.000Z","size":31,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-16T10:40:29.286Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hairymax.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-15T12:17:12.000Z","updated_at":"2024-09-06T19:49:14.000Z","dependencies_parsed_at":"2024-11-15T22:34:47.283Z","dependency_job_id":null,"html_url":"https://github.com/hairymax/VideoTimelineAnnotator","commit_stats":null,"previous_names":["hairymax/videotimelineannotator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hairymax%2FVideoTimelineAnnotator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hairymax%2FVideoTimelineAnnotator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hairymax%2FVideoTimelineAnnotator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hairymax%2FVideoTimelineAnnotator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hairymax","download_url":"https://codeload.github.com/hairymax/VideoTimelineAnnotator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242127777,"owners_count":20076171,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T22:34:43.454Z","updated_at":"2025-03-06T00:29:11.137Z","avatar_url":"https://github.com/hairymax.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VideoTimelineAnnotator\n\nA tool for video timeline segmentation and annotation.\n\n### Script Parameters Description\n\n* `-v` or `--video_path`: path to the video file or directory containing video files, *required argument*.\n* `-c` or `--class_cfg`: path to the YAML file with event classes, *required argument*.\n* `-o` or `--output_dir`: path to the directory for saving annotations; if not provided, annotations are saved in the same directory as the video being annotated.\n* `-s` or `--frames_skip`: number of frames to skip during playback; if not provided, the default value of 1 is used.\n\n### Example Usage\n\n```bash\npython labeller.py -v data -c classes.yml\n```\nIn this example, the script will process all video files in the `data` directory, use event classes from `classes.yml`, and save annotations in the same directory as the source videos, skipping 10 frames during playback.\n\n```bash\npython labeller.py -v video.mp4 -c configs/classes.yml -o annotations -s 10\n```\n\nIn this example, the script will run with the `video.mp4` file, use event classes from `configs/classes.yml`, and save annotations in the `annotations` directory, skipping 10 frames during playback.\n\n**Usage Instructions**\n\n1. Run the `labeller.py` script with the required parameters.\n2. A video window with a timeline will appear. The script can be run on a single video or a directory of videos. In the latter case, the script will process each video sequentially.\n3. Use the following keys to navigate the video:\n   * `Space`: start/stop playback\n   * `a` or `←` Left Arrow: move one frame backward\n   * `d` or `→` Right Arrow: move one frame forward\n   * `w` or `↑` Up Arrow: move 10 frames backward\n   * `s` or `↓` Down Arrow: move 10 frames forward\n4. Marking the start and end frames can be done in any order (e.g., [start, end] or [end, start]). Events can be annotated in two ways:\n    * Using text input for event id:\n        1. Pause the video at the start/end frame of the event.\n        2. Press `Enter`.\n        3. Enter the event id.\n        4. Confirm by pressing `Enter` again.\n        5. Pause the video at the end/start frame of the event (the second marker).\n        6. Press `Enter` again.\n    * Using keyboard input for event class id (works with single-character ids):\n        1. Pause the video at the start/end frame of the event.\n        2. Press the key corresponding to the event id.\n        3. Pause the video at the end/start frame of the event (the second marker).\n        4. Press `Enter`.\n5. To finish annotation and save the annotations, press the `\\` key. Annotations will be saved in the file within the directory specified by the `-o` parameter.\n6. To cancel the video annotation, press `Esc`.\n\n**System Requirements**\n\n- Python version 3.8 or higher\n- Libraries *opencv* and *yaml* for Python\n\nYou can install the required libraries using:\n```bash\npip install opencv-python pyyaml\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhairymax%2Fvideotimelineannotator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhairymax%2Fvideotimelineannotator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhairymax%2Fvideotimelineannotator/lists"}