{"id":25752194,"url":"https://github.com/alexeykarnachev/v4l2_gl_filter","last_synced_at":"2026-05-11T12:32:25.981Z","repository":{"id":184631351,"uuid":"669302132","full_name":"alexeykarnachev/v4l2_gl_filter","owner":"alexeykarnachev","description":"OpenGL filter for v4l2 virtual camera device","archived":false,"fork":false,"pushed_at":"2023-07-29T09:57:10.000Z","size":104,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-07-29T11:48:31.827Z","etag":null,"topics":["opengl","v4l2","v4l2loopback","webcam"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexeykarnachev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-07-21T21:31:58.000Z","updated_at":"2023-07-29T11:48:45.092Z","dependencies_parsed_at":"2023-07-29T11:58:45.375Z","dependency_job_id":null,"html_url":"https://github.com/alexeykarnachev/v4l2_gl_filter","commit_stats":null,"previous_names":["alexeykarnachev/v4l2_gl_filter"],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexeykarnachev%2Fv4l2_gl_filter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexeykarnachev%2Fv4l2_gl_filter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexeykarnachev%2Fv4l2_gl_filter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexeykarnachev%2Fv4l2_gl_filter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexeykarnachev","download_url":"https://codeload.github.com/alexeykarnachev/v4l2_gl_filter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240869611,"owners_count":19870820,"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":["opengl","v4l2","v4l2loopback","webcam"],"created_at":"2025-02-26T14:27:07.885Z","updated_at":"2026-05-11T12:32:20.950Z","avatar_url":"https://github.com/alexeykarnachev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# V4L2 OpenGL Filter\nA simple application of the OpenGL shader to the Linux video device (webcamera)\n\n## Quick Start\n1. Install [v4l2loopback](https://wiki.archlinux.org/title/V4l2loopback) - the Linux kernel module for creation virtual webcamera devices\n\n2. Create virtual device:\n```bash\nsudo modprobe v4l2loopback\n```\n\n3. Build and run the applicatoin:\n```bash\ncargo build --release \u0026\u0026 ./target/release/v4l2_gl_filter /dev/video0 /dev/video2\n```\nIn your case the device ids (`video0`, `video2`) may differ. Select the appropriate ones (the first device is your main camera, the second one is your virtual camera, created by v4l2loopback module)\n\n4. Now you can select the virtual camera in any streaming application (e.g Zoom)\n    \n![zoom example](./zoom_example.png)\n\n## Custom shader\nYou can implement your custom fragment shader which will be applied to each video frame. [filter.frag](./shaders/filter.frag) provides the default implementation. Modify it as you need and rebuild the apllication.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexeykarnachev%2Fv4l2_gl_filter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexeykarnachev%2Fv4l2_gl_filter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexeykarnachev%2Fv4l2_gl_filter/lists"}