{"id":22706811,"url":"https://github.com/mbari-org/deepsea-frameextractor","last_synced_at":"2025-03-29T20:43:36.205Z","repository":{"id":37644352,"uuid":"275038713","full_name":"mbari-org/deepsea-frameextractor","owner":"mbari-org","description":"FFMPEG based docker image for extracting still images from video from timecodes, strides, etc. for labeling tasks. https://github.org/mbari-org/deepseat-frameextractor","archived":false,"fork":false,"pushed_at":"2022-07-06T20:46:39.000Z","size":23,"stargazers_count":1,"open_issues_count":3,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-04T21:43:26.569Z","etag":null,"topics":["ffmpeg","underwater-images","underwater-robotics"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mbari-org.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-26T00:00:25.000Z","updated_at":"2022-08-04T22:31:38.000Z","dependencies_parsed_at":"2022-07-12T16:42:11.059Z","dependency_job_id":null,"html_url":"https://github.com/mbari-org/deepsea-frameextractor","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbari-org%2Fdeepsea-frameextractor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbari-org%2Fdeepsea-frameextractor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbari-org%2Fdeepsea-frameextractor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbari-org%2Fdeepsea-frameextractor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mbari-org","download_url":"https://codeload.github.com/mbari-org/deepsea-frameextractor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246243565,"owners_count":20746307,"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":["ffmpeg","underwater-images","underwater-robotics"],"created_at":"2024-12-10T10:09:47.422Z","updated_at":"2025-03-29T20:43:36.187Z","avatar_url":"https://github.com/mbari-org.png","language":"Python","readme":"[![MBARI](https://www.mbari.org/wp-content/uploads/2014/11/logo-mbari-3b.png)](http://www.mbari.org)\n\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n![Supported Platforms](https://img.shields.io/badge/Supported%20Platforms-Windows%20%7C%20macOS%20%7C%20Linux-green)\n![license-GPL](https://img.shields.io/badge/license-GPL-blue)\n\n# About\n\nFrame extractor to convert movies into still images for labeling.  \nExtracts still frame per duration specified in --step of a movie, (optionally) deinterlaces, and saves as a png.\nUses multiple cores to speed-up computation.\n\n# Questions?\n\nIf you have any questions or are interested in contributing, please contact me at dcline@mbari.org.\n\n*Danelle Cline*\nhttps://www.mbari.org/cline-danelle-e/\n\n---\n  \n## Run Examples\n*Arguments*\n\n  * -i input directory of video files(.mov, .mp4, anything ffmpeg will support), or single input video files; if specifying input directory must use keys\n  * -o (optional, defaults to input directory) output directory to store results. \n    * Two directories are created for the results:\n     * the key name, or the root filename, e.g. D0232_20160501T000030Z if input is D0232_20160501T000030Z.mov\n     * imgs\n  * -t or --start Start time in HH:MM:SS format (optional)\n  * -e or --end End time in HH:MM:SS format (optional)\n  * -m or --milliseconds Number of milliseconds to capture every step\n  * -s or --step Step size in seconds to grab a frame. If not specified, extracts all frames\n  * -g glob pattern list of search patterns to find video files in conjunction with -i\n  * -d (optional) deinterlace method, e.g. drop or yadif\n    * drop will remove every other field\n    * yadif = Yet Another Deinterlacing Filer (see ffmpeg page for details on this)\n    \n*Examples*\n\nExtract one frames every 5 seconds from file D0232_20160501T000030Z.mov to your desktop, no deinterlacing\n```bash\ndocker run -v $PWD/data:/data  -v /Users/dcline/Desktop:/desktop mbari/deepsea-frameextractor -i /data/D0232_20160501T000030Z.mov -o /desktop\n```\nExtract one frame every 5 seconds from file D0232_20160501T000030Z.mov to your desktop, drop deinterlacing\n```bash\ndocker run -v $PWD/data:/data  -v /Users/dcline/Desktop:/desktop mbari/deepsea-frameextractor -i /data/D0232_20160501T000030Z.mov -o /desktop  -d drop\n```\nExtract one frame every 2 seconds between 00:00:00 to 00:05:00 of file D0232_20160501T000030Z.mov to your desktop\n```bash\ndocker run -v $PWD/data:/data  -v /Users/dcline/Desktop:/desktop mbari/deepsea-frameextractor -i /data/D0232_20160501T000030Z.mov -o /desktop -s 2 --start 00:00:00 --end 00:05:00\n```\nExtract 2 seconds of each video to your desktop, searching for videos matching the pattern D*.MOV recursively in the /data directory. \nThis will split compute for each video across each CPU available.\n```bash\ndocker run -v $PWD/data:/data  -v /Users/dcline/Desktop:/desktop mbari/deepsea-frameextractor -i /data  --keys '/**/D*.MOV' -o /desktop -s 2\n```\n\n## Developer notes \nRun interactively, mounts your current directory in the container as tmp/code, and any\nchanges made in that /tmp/code directory, even after the container closes will persist.\n\n```bash\ndocker run -v $PWD:/tmp/code -it --entrypoint='bash' mbari/deepsea-frameextractor\n```\n\n### Exiftools\n\n- All tags available by format: https://sno.phy.queensu.ca/~phil/exiftool/TagNames/index.html\n- For PNG https://sno.phy.queensu.ca/~phil/exiftool/TagNames/PNG.html\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbari-org%2Fdeepsea-frameextractor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmbari-org%2Fdeepsea-frameextractor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbari-org%2Fdeepsea-frameextractor/lists"}