{"id":20774957,"url":"https://github.com/qdot/obs-qrcode-video-sync","last_synced_at":"2026-02-11T03:05:50.762Z","repository":{"id":259167362,"uuid":"876468242","full_name":"qdot/obs-qrcode-video-sync","owner":"qdot","description":"Using QRCode generation/finding to sync hardware over video","archived":false,"fork":false,"pushed_at":"2024-10-22T04:19:23.000Z","size":963,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-12T02:37:35.760Z","etag":null,"topics":["haptics","qrcode","streaming","twitch"],"latest_commit_sha":null,"homepage":"https://qdot.github.io/obs-qrcode-video-sync/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qdot.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-22T02:48:34.000Z","updated_at":"2024-11-15T16:29:37.000Z","dependencies_parsed_at":"2024-10-23T07:23:16.075Z","dependency_job_id":"cd6ca9b1-2380-4491-8f86-5ac176fbf2d9","html_url":"https://github.com/qdot/obs-qrcode-video-sync","commit_stats":null,"previous_names":["qdot/obs-qrcode-video-sync"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdot%2Fobs-qrcode-video-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdot%2Fobs-qrcode-video-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdot%2Fobs-qrcode-video-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdot%2Fobs-qrcode-video-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qdot","download_url":"https://codeload.github.com/qdot/obs-qrcode-video-sync/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234480678,"owners_count":18840191,"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":["haptics","qrcode","streaming","twitch"],"created_at":"2024-11-17T12:34:01.069Z","updated_at":"2025-09-28T03:30:51.722Z","avatar_url":"https://github.com/qdot.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QRCode Generator/Tracker for Intiface Sync Over Video\n\nEver wanted to stream while using Intiface Central and let your viewers feel what you're feeling?\n\nNow you can!\n\n## Overview\n\n![Crimsonland with QRCode Overlay](./img/demo.png)\n\nThe premise is fairly simple. The streamer uses an OBS Browser Overlay that generates a QRCode based on commands sent to a simulated device in Intiface Central. This QRCode is then shown somewhere in their video stream. \n\nMeanwhile, viewers use one of the multiple capture methods provided to scrape the stream and interpret the QRCode, allowing them to follow the haptic action as it happens, in sync with the video stream.\n\nThe project is consists of 2 parts:\n\n- An OBS Browser Widget that will connect to the _Websocket Device Manager_ in [Intiface\n  Central](https://intiface.com/central). This widget acts as a simulated device for [Intiface\n  Central](https://intiface.com/central), and will generate a barcode image which can be used as a\n  video overlay.\n- Multiple ways for viewers to track QRCodes with in a video and have the commands relayed to [Intiface Central](https://intiface.com/central)\n  - A WebRTC based screen capture system\n    - This system can be used with no modifications to the browser\n  - **\\[Coming Soon\\]** A userscript for use with Greasemonkey/[Tampermonkey](https://www.tampermonkey.net/)/etc \n  - **\\[Coming Soon\\]** A browser extension for firefox/chrome\n\n**No downloads are required to start using this system, for either the streamer or viewer.** The Browser Widget and WebRTC based screen capture system are both hosted via this github repo. The only reason this repo needs to be cloned is for development or forking purposes, but we'll be doing out best to provide customization capabilities.\n\n## Example Usage\n\n- Streamer installs the [Intiface Game Haptics Router](http://intiface.com/ghr) (aka GHR), which can\n  intercept and reroute rumble commands to [Intiface Central Devices](https://intiface.com/central).\n- Streamer uses this OBS Browser Widget, which acts as an Intiface Device and shows the latest speed\n  command as a QRCode.\n- Streamer plays game on stream w/ GHR, with QRCode widget showing on their stream\n- Viewer (with [Intiface Central](https://intiface.com/central) installed) brings up stream on\n  Twitch/Fansly/Joystick/etc...\n- Viewer uses one of the provided methods to track the QRCode on the stream\n- Viewer's QRCode tracker communicates with their copy of Intiface Central, cause hardware to react\n  whenever the QRCode updates on the stream. \n\n## Streamer Instructions\n\n- Install [Intiface Central](https://intiface.com/central)\n  - If you're not familiar with how to use Intiface Central, check out the [Intiface Central Quickstart](https://docs.intiface.com/docs/intiface-central/quickstart)\n- In Intiface Central, set up a Websocket Device\n  - Under the `App Modes` tab\n    - Set `Mode` to `Engine` \n    - Turn `Show Advanced/Experimental Settings` on\n    - Turn `Device Websocket Server` (under `Advanced Device Managers`) on\n  - Under the `Devices` tab, scroll down to `Websocket Devices (Advanced)`. Add a device of protocol\n    type `lovense` with name `LVS-Test`. \n- Start the engine by hitting the large play button on the top bar\n- This step should only be done AFTER starting the engine. Open a web browser on the same machine\n  that Intiface is running on, and go to https://qdot.github.io/obs-qrcode-video-sync/obsdevice/\n  In Intiface Central, a new device should show as connected on the devices tab. Moving the slider\n  should update the graph on the webpage. If this doesn't work, check the browser console to see\n  if any errors were printed.\n- Close the web browser tab with the obs-qrcode-video-sync page in it, make sure Intiface Central\n  says no device is connected.\n- Add a new browser source to OBS, with https://qdot.github.io/obs-qrcode-video-sync/obsdevice/ as\n  the URL\n- Place the QRCode on a top layer so it is not occluded\n\n## Viewer Instructions (WebRTC Screen Capture)\n \n- Install [Intiface Central](https://intiface.com/central)\n  - If you're not familiar with how to use Intiface Central, check out the [Intiface Central Quickstart](https://docs.intiface.com/docs/intiface-central/quickstart)\n- Start the Intiface Central Server\n  - It's recommended you also get any devices connected during this step, using the `Devices` tab in\n    Intiface Central.\n- In a web browser tab, open the streamer's page on whatever service they are using\n- In another tab, open https://qdot.github.io/obs-qrcode-video-sync/qrcodetracker\n  - You should see _QRCode Tracking Client connected_ in the Intiface Central status UI.\n- The next step depends on which browser you're using\n  - On Chrome\n    - Click on the Start Capture button, and select the tab with the stream you are watching\n  - On Firefox\n    - Detach the stream tab into its own window\n    - Click on the Start Capture button, and select the window with the stream tab in it\n- Any updates to the QRCode should cause any connected devices in Intiface Central to react\n\n## License\n\nThe QRCode Generator/Tracker project is released as under the BSD 3-Clause License. See [LICENSE](LICENSE) for more info.\n\nThe project is distributed with a prebuilt version of node-qrcode v1.5.4, with the following MIT license:\n\nThe MIT License (MIT)\n\nCopyright (c) 2012 Ryan Day\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and\nassociated documentation files (the \"Software\"), to deal in the Software without restriction,\nincluding without limitation the rights to use, copy, modify, merge, publish, distribute,\nsublicense, and/or sell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial\nportions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT\nNOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES\nOR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqdot%2Fobs-qrcode-video-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqdot%2Fobs-qrcode-video-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqdot%2Fobs-qrcode-video-sync/lists"}