Skip to content

Latest commit

 

History

1,613 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub stars GitHub forks GitHub release Discord Share on Twitter OpenSSF Scorecard

⚠ Notice! We've rebranded from OBS.Ninja to VDO.Ninja - all else is staying the same ✨

What is VDO.Ninja? 🚀

VDO.Ninja brings peer-to-peer technology to OBS and other studio software, enabling remote camera integration with:

  • 🔒 Direct peer-to-peer video transfer in most cases
  • ⚡ High-quality video with super low latency
  • 💪 Director control room with group chat
  • 📱 Smartphone wireless webcam capabilities
  • 🌐 Supports WHIP/WHEP and self-hosted SFUs
  • 🆓 Free software. Free managed services. Free support.

Quick Links 🔗

How to Use 📝

You can get started by just opening VDO.Ninja in your browser and selecting Add your Camera to OBS.

Join the Discord for community exhibitions, discussions, support, and feature updates.

Alternative versions of VDO.Ninja

What's in this repo

This repository contains the VDO.Ninja web frontend and sample apps using its IFRAME API. Production backend implementations and operational scripts belong in separate repositories. Optional TURN configuration and .sample files are included as self-hosting examples; the website does not execute them. TURN setup guidance is provided in turnserver.md. The user documentation for VDO.Ninja itself is found at docs.vdo.ninja.

Hosting and local development

The public service is available at vdo.ninja. To host the frontend yourself, serve this repository from an HTTPS-enabled static web server. There is no frontend build step or package installation required.

For a local preview, run this from the repository root:

python -m http.server 8080 --bind 127.0.0.1

Open http://localhost:8080/. Use HTTPS when accessing the site from other devices. Local preview serves the frontend only; normal rooms still connect to the configured signaling and relay services.

See install.md for deployment guidance and turnserver.md for TURN setup examples. Hosting the frontend does not deploy the production authentication, signaling, relay, or call-in backends. Optional features may require separately configured services and credentials.

Before publishing changes, run the repository's translation checks:

node .github/ci-validateTranslations.js
node .github/ci-checkTranslationKeys.js

These checks require Node.js and do not cover browser behavior. Test the affected publishing, viewing, recording, or device-selection flows separately.

Develop vs Release versions

The develop branch of this repo is a bit like the preview or nightly version of VDO.Ninja. It's intended to be functional, but it may not be that well tested, or there could be incomplete features. The develop version aligns closely with what is normally on vdo.ninja/alpha/, which is well suited for those wishing to submit code changes or to gain access to experimental new features. You can access a hosted version of the GitHub develop branch on Github pages here as well: https://steveseguin.github.io/vdo.ninja/

Release versions of VDO.Ninja have their own branches though. These latest release branch will be updated to fix bugs or critical issues as needed, but are otherwise unchanged. https://github.com/steveseguin/vdo.ninja/branches

Due to the nature of live video production, where unexpected changes to the app are not welcomed usually, I don't update https://vdo.ninja/ all that often. As well, constant updates to the primary hosted app makes supporting users challenging, as its hard to tell if an issue is with the code or with the user. For this reason, VDO.Ninja does infrequent updates to the primary hosted production version. Users wanting newer features, or who have greater risk tolerance, should use alpha version at https://vdo.ninja/alpha/

Backend services and self-hosting

The browser client uses signaling to establish ordinary rooms and peer connections. STUN helps discover network addresses; TURN relays traffic when a direct connection cannot be established. These services are separate from the static frontend.

  • Signaling: install.md links to a separate handshake-server project and describes configuring the client for it.
  • TURN: turnserver.md, turnserver_basic.conf, and the .sample files provide optional self-hosting examples. Replace placeholder settings before use. The website does not execute these samples.
  • Twilio call-in: requires an explicitly configured backend URL. The Twilio backend implementation and a hosted default are not included. SIP call-in instead uses the provider settings entered by the user.
  • Live translation: accepts a user-supplied API key or a separately configured token broker. No broker implementation is bundled here.
  • Offline deployments: see the separate offline deployment project. Check its requirements and compatibility before deploying it.

Self-hosting the frontend does not automatically make a deployment independent of hosted services. Review the features you enable and their configured endpoints. See LICENCE.md for the distinction between the software license and access to hosted services.

Issues? problems? Not working?

Join me and the community on Discord for support and more: https://discord.vdo.ninja. You can email me at steve@seguin.email for more urgent support or with other other inquiries if required.

The sub-Reddit is available at, https://reddit.com/r/vdoninja. I will often offer a single-message response to support questions posted there, but for deeper discussion, join the Discord.

Also check out the FAQ for common answers: https://docs.vdo.ninja or view recent product updates at: https://updates.vdo.ninja

I maintain a Youtube playlist with VDO.Ninja related content I create at https://www.youtube.com/watch?v=vLpRzMjUDaE&list=PLWodc2tCfAH1WHjl4WAOOoRSscJ8CHACe, however Youtube is full of community-created guides that are worth checking out.

Related Projects

VDO.Ninja's Electron Capture:

A better way to perform "Window Capturing" on desktop if OBS Browser Sources fails you. A downloadable tool designed to enhance VDO.Ninja, but has been expanded to have additional functionality for content creators in general https://github.com/steveseguin/electroncapture

Social Stream Ninja

A free Chrome extension (also a Standalone app version is available now) that lets you stream and feature chat comments from Youtube, Twitch, Facebook, and more. Featured comments will appear directly in OBS or VMix as an overlay, or as a stream list of comments. It also includes a dock for more advanced function, such as text-to-speech, LLM bots, sentiment analysis, and saving messages to disk. No chroma-keying needed and the styling is pretty easy to customize without needing to modify the Chrome extension itself. http://socialstream.ninja

Rasbperry Ninja

Use a Linux system, Raspberry Pi, Nvidia Jetson, Mac, and even Windows PC (WSL) to publis or view WebRTC video using Gstreamer and Python; no browser needed . This project can use the system's local hardware encoder to enable high resolution video and even accelerated AV1 encoding. Support for USB, CSI, and HDMI video sources is available, along with options to pass-thru sources without transcoding. OpenCV-friendly, for low-latency computer vision and machine learning applications. http://raspberry.ninja

CAPTION.Ninja

A free AI-based closed-captioning tool to add speech-to-text overlays to OBS Studio. It's browser-based with an easy OBS or VMix integration. Developed by Steve as well! https://caption.ninja

Privacy

I try to avoid data collection whenever possible and video streams are generally designed to be private, but use at your own risk. It is best to not share links created with VDO.Ninja with those you do not trust. I've provided instructions on how to deploy a TURN server if IP-address privacy is an issue for you. See: turnserver.md

https://vdo.ninja may unavoidably use cookies that are exempt from EU laws of requiring notice of their use; they are exempt as they are required and necessary for the technical functioning of the web service. Our webserver is cached by Cloudflare and it provides denial of server protection for the users of VDO.Ninja.

Additional security features are being added weekly on request. Please ask about these options if added security and privacy are requirements for you.

Please see: Terms of Service | Privacy Policy.

Feedback

Ideas, feedback, bugs, etc -- all welcomed. I'm dumping many of my ideas as issues into Github. Feedback is typically most welcomed via Email or Discord.

Licence

See LICENCE.md for licensing and ownership details, LICENSE for the full core license, and examples/LICENSE for the example-code license.

Credit

Thank you to everyone who has helped support this project so far. From the moderators, volunteers helping with support, those contributing media assets, the project sponsors, those reporting issues, those offering feedback, and any code submissions.

Contributors of this repo

About

VDO.Ninja is a powerful tool that lets you bring remote video feeds into OBS or other studio software via WebRTC.

Topics

Resources

Contributing

Security policy

Stars

4.1k stars

Watchers

76 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages