====== VDO Ninja ====== At the current state we can not recommend to use ninja. have a look at [[projects:kevin]] for an alternative VDO Ninja (previously named "OBS Ninja") allows speakers to share their webcam or desktop over the internet using peer to peer web-rtc video streams, so the mixer can embed those streams using a browser source in [[OBS]] Voc-Hosted Service: [[https://ninja.c3voc.de/ | Ninja Winkekatze]] Currently Installed Version: 6 Source Code: [[https://github.com/steveseguin/obsninja | Github]] * OBS Ninja is not totally open source, for details see [[https://github.com/steveseguin/obsninja/issues/613 | Issue in Github]]. We are currently working on a fully free version. Official Documentation: [[https://github.com/steveseguin/obsninja/wiki | Github Wiki]] ===== Features ===== ==== Group Chat ==== Creating a new Groupchat creates a new room, for which the creator is the director. For each Room there is one main director. It is possible to join subdirectors when there is already a main director present, but those are quite limited. It is possible to transfer Streams from one room to another. This can be useful for e.g. creating a Waiting room and a live room. Multiple Transfers can be done quickly by selecting multiple Streams for trasfer by holding down CTRL (on Windows) or CMD (on MacOS). Using the ''chroma'' parameter, you can change the background color of the Directors view. Use this if you have multiple rooms open, for a quick visual distinction. ==== Camera ==== ==== Screenshare ==== ==== Create Reusable Invite ==== ==== Misc ==== === Tally Light === OBS Ninja supports a Tally Light feature. This shows a red border around the preview video of the sender if the Sender is Visible in OBS (visible means either on the Live-Canvas or, if in Studio mode, on the preview Canvas). In order to work, the Visibility of the source has to be toggled at least once already in OBS. (This means you have to switch to scenes such that the OBS Ninja Browser Source is not visible in the main window of OBS.) **TODO: Determine if sources in MultiView count as Visible.** === Stats === The Stats window can be enabled either by pressing right CTRL while clicking on the video or appending the ''stats'' parameter to the URL. On Mobile devices, you can open the stats video by rapidly pressing on the screen multiple times. The Stats window shows a lot of infos about the video stream, including but not limited to the used video codec, the resolution, the bitrate, the frames per secound, and the packet loss. === File Sharing === According to the documentation, it should be possible to share Files (Video / Audio) via OBS Ninja. **As of 16.12.2020, this was not tested successfully.** ===== URL Parameters (V13.4) ===== [based on [[https://github.com/steveseguin/obsninja/wiki/Advanced-Settings | OBS Ninja / Advanced Settings]]] ==== General Parameters ==== ^ Parameter ^ Alias ^ Value Type ^ Possible Values ^ Default ^ Description ^ | ''chroma'' | | HEX-String (RGB) | 3-Digit or 6 Digit Hex | | Sets the Background of the website to the given color | | ''cleanoutput'' | ''clean'' | None | Null | Null | Hides many UI elements and Popups | | ''director'' | | String | Valid Room ID | | Opens the Director View of the Room with the given ID | | ''flip'' | | None | Null | Null | Mirrors the Video at the x axis. For mirroring along the y axis, see ''mirror'' | | ''hash'' | | String | Password Hashes | | acts as if ''password'' was added | | ''hideheader'' | ''noheadder'' | None | Null | Null | Hides just the top headder bar. | | ''icefilter'' | | String | tcp, udp, host | | Filters out ICE candidates that do not include the specified word in the candidate string. | | ''label'' | | String | | blank | Used when dragging the link into OBS Studio, changes the title of the browser tab and shows up in the connection debug stats window. If blank, prompts user for a display name on load | | ''ln'' | | Enum | en, ru, fr, pt, it, blank | en | Sets the UI Language. blank means Less verbose | | ''mirror'' | | Enum | 0, 1, 2, 3, Null | Null | Mirrors the video along the x axis. For y axis mirroring, see ''flip''. See [[https://github.com/steveseguin/obsninja/wiki/Advanced-Settings#-mirror0123| Official Documentation]] for details | | ''nocursor'' | | None | Null | Null | Hides the mouse cursor with CSS, Useful for Window Captures | | ''obsoff'' | ''oo'' | None | Null | Null | Disable the tally light effects; can be applied to both viewer or pubilsher. | | ''password'' | | String | Alpha-Numeric, Case Sensitive | | Sets a Password to view a stream or join a room (If trying to access a password protected Stream / Room with out this parameter, a password prompt will appear). If the password is wrong, no Error is shown. It just wont work. | | ''relay'' | ''private'', ''privacy'' | None | Null | Null | Forces TURN relay into use | | ''remote'' | ''rem'' | String | Alpha-Numeric, Case Sensitive | | Allows remote operation of the zoom feature on Android devices. | | ''room'' | ''roomid'', ''r'' | String | * | | Sets a room ID | | ''roombitrate'' | | Integer | N (in kbps) | | Sets Bitrate of Speaker Viewers in Room. Should not affect OBS. If set to 0, can increase maximum number of possible Guests in a Room | | ''showonly'' | | String | ? | | ?, Can increase maximum number of possible Guests in a Room | | ''stats'' | | None | Null | Null | Shows the Connection / Media Stats window by default | | ''stereo'' | ''s'', ''proaudio'' | Enum | 0, 1, 2, 3, 4 | 0 | see [[https://github.com/steveseguin/obsninja/wiki/Advanced-Settings#-stereo01234| Official Documentation]] | | ''sticky'' | | None | Null | Null | Allows saving and restoring of sessions using cookies. | | ''style'' | | Enum | 0, 1, 2 | ? | Selects how Audio-Only Media is displayed. 1 hides audio-only elements, 2 shows a visual waveform for the audio element. Experimental, might change. | | ''transparent'' | | None | Null | Null | Makes the website background transparent using CSS, (not needed with OBS Default CSS, only useful when embedding OBS Ninja as IFrame) | | ''wss'' | | URL | [subdomain].domain.tld | wss13.0bs.ninja | Sets a custom URL for the websocket server | ==== Source Parameters ==== ^ Parameter ^ Alias ^ Value Type ^ Possible Values ^ Default ^ Description ^ | ''aec'' | ''ec'' | Enum | 0, 1 | | Sets whether echo-cancelation is ON or OFF. Must be disabled to use with Stereo Audio | | ''audiodevice'' | ''adevice'', ''a'' | {String, 0, 1} | *, 0, 1 | | Pre-Configures the audio device. 0 will disable the microphone, 1 will select the default microphone, if a string is given, the audio source with a label containing the string is selected. The audio device selection can be changed after connecting. Whitespaces must be represented by underscores. | | ''autogain'' | ''ag'' | Enum | 0, 1 | | Sets whether audio auto-normalisation is ON or OFF | | ''autostart'' | ''autojoin'', ''aj'', ''as'' | None | Null | Null | Auto starts as soon as the Audio/Video device is ready | | ''denoise'' | ''dn'' | Enum | 0, 1 | | En/Disable Audio Noise reduction Filter | | ''device'' | | {String, 0, 1} | *, 0, 1 | | Same as ''audiodevice'' or ''videodevice'', but applies to both. | | ''fileshare'' | ''fs'' | None | Null | Null | Allows the user to select a video or audio file as a source for streaming | | ''forceios'' | | None | Null | Null | Forces iOS devices to publish videos to this room guest. iOS devices can only publish three streams at a time, so they usualy do not publish streams to other guests | | ''framerate'' | ''fps'', ''fr'' | Integer | N (in FPS) | | Sets the maximum framerate of the video in frames per second. Actual framerate might be less. If the camera cannot support this framerate, it will fail. | | ''height'' | ''h'' | Integer | N (in px) | | Sets the maximum height of the video in pixels. Actual height might be less because of bandwidth limitations. If the camera cannot support the height, it will fail. | | ''mute'' | ''muted'' | None | Null | Null | Starts with the microphone muted | | ''nopreview'' | | None | Null | Null | Disables the local self video preview | | ''push'' | ''permaid'' | String | Alpha-Numeric, Case Sensitive | randomly generated | 1 to 24 characters long stream ID. Use for reusable Invites. If someone sends already a video with the given ID, an error is shown. | | ''quality'' | ''q'' | Enum | 0, 1, 2 | | Single value less strict than resolution and bitrate. 0 tries to request about 1080p60, 1 about 720p60 and 2 about 360p60, variing depending on hardware. | | ''screenshare'' | ''ss'' | None | Null | Null | Disables Webcam Sharing as an Option | | ''secure'' | | None | Null | Null | Force Disconnect from the Handshake server after initial peer-to-peer connection is established.This effectively limits the number of viewers to one. | | ''videodevice'' | ''vdevice'', ''v'' | {String, 0, 1} | *, 0, 1 | | Pre-Configures the video device. 0 will disable the video camera, 1 will select the default camera, if a string is given, the video source with a label containing the string is selected. The Video device selection can be changed after connecting. Whitespaces must be represented by underscores. | | ''webcam'' | ''wc'' | None | Null | Null | Disables Screen or Filesharing as an Option | | ''width'' | ''w'' | Integer | N (in px) | | Sets the maximum width of the video in pixels. Actual width might be less because of bandwidth limitations. If the camera cannot support the width, it will fail. | ==== Viewer Parameters ==== ^ Parameter ^ Value Type ^ Possible Values ^ Default ^ Description ^ | | | | | | | | | | | | ===== Tested Platforms / Browsers (V 13.4)===== ==== For Speakers ==== === Windows === ^ Software |^ Webcam |^ Screenshare |^ ^ ^ ^ Browser ^ Version ^ Video ^ Audio ^ Video ^ Audio ^ Group Chat ^ Comments ^ | Chrome | ? (recent) | ✔ | ✔ | ✔ | ✔ (see Comment) | ✔ | When ScreenSharing, using audio probably works only when either sharing a Chrome tab or an entire Screen | | Firefox | 83.0 | ✔ | ✔ | ✔ | | ✔ | | | Edge | | | | | | | | | Vivaldi | 3.5.2130.3 | ✔ | ✔ | ✔ | Nein | ✔ | | === Mac OS === == Big Sur 11.0.1 == {{tablelayout?colwidth=""}} ^ Software |^ Webcam |^ Screenshare |^ ^ ^ ^ Browser ^ Version ^ Video ^ Audio ^ Video ^ Audio ^ Group Chat ^ Comments ^ | Chrome | | | | | | | | | Firefox | | | | | | | | | Safari | | | | | | | | == Catalina 10.15.7 == ^ Software |^ Webcam |^ Screenshare |^ ^ ^ ^ Browser ^ Version ^ Video ^ Audio ^ Video ^ Audio ^ Group Chat ^ Comments ^ | Chrome | 87 | Ja | Ja | Ja | TODO | Ja | TODO: Teilen des PC-Sounds ausprobieren | | Firefox | 83 | Ja | Ja | Ja | TODO | Ja | TODO: Teilen des PC-Sounds ausprobieren | | Safari | 14.0.1 | Ja | Ja | Ja | TODO | Ja | Nur eine Session möglich (Kamera oder Screenshare), Nur Fullscreen vom Bildschirm mit dem Browserfenster | === Linux === ^ Software |^ Webcam |^ Screenshare |^ ^ ^ ^ Browser ^ Version ^ Video ^ Audio ^ Video ^ Audio ^ Group Chat ^ Comments ^ | Chrome | | | | | | | | | Chromium | | | | | | | | | Firefox | | | | | | | | ==== For Mixers ==== === Windows === ^ Software ^ Version ^ Supports Websource ^ Comments ^ | [[howto:obs|OBS Studio]] | 26.0.2 | ✔ | Offizieller Installer von https://obsproject.com/de/welcome | === Mac OS === {{tablelayout?rowsHeaderSource=Auto&colwidth=","&tableSort=1&tableSearch=1&tablePrint=1}} ^ Software ^ Version ^ Supports Websource ^ Comments ^ | | | | | === Linux === {{tablelayout?rowsHeaderSource=Auto&colwidth=","&tableSort=1&tableSearch=1&tablePrint=1}} ^ Software ^ Version ^ Supports Websource ^ Comments ^ | | | | | ===== Fixing Issues ===== ==== GroupChat ==== - I can not join a Groupchat. If I am a speaker trying to join I can select a Camera and click on start, but then see only my own camera picture. The director does not see anything. Please check that websocket connections to obs.ninja are allowed in your browser. ===== Useful Tools ===== * [[https://webrtchacks.github.io/WebRTC-Camera-Resolution/ | WebRTC Camera Resolution Scanner]]