github steveseguin/vdo.ninja 6.01
Version 6 release

latest releases: v26.0, v25.0, v24.4...
4 years ago

This is the same release as what is on the public obs.ninja website as of June 7th, with the addition of a minor customization addition. You will notice that the index.html has the following line:

<script type="text/javascript" id="main-js" data-translation="blank" src="./main.js"></script>

So you can now specify different languages or different branding/wording translations by setting the data-translation value to that of the JSON filename located in the translations folder. You can also create your own JSON files and specify them that way. By default I am specifying the "blank" translation.

I'm trying to steer the app code in the direction of being a bit like a library, for numerous reasons, but please reach out if you have issues with this new release. This release has numerous bug fixes and uses a new handshake server to improve the group-room experience, which I will continue to update. I will continue to work towards allowing greater accessibility in stylizing the application.

General Change Log - v6

The TURN server can be forced into use, which has the advantage of hiding your IP address from peers and in some cases it can greatly improve video quality and reliability. It can be enabled with the &privacy parameter.
Please note that I'd recommend you deploy your own TURN server onto Google's Cloud platform if you intend to make use of this feature. Instructions are here. The default settings will use my publicly offered servers if &privacy is enabled.

Bitrates report more accurately in the debug menu. (Control + click)

Bitrates of group chat videos are set to about 80kbps now. When videos are throttled in terms of bitrate, they also have their resolution scaled back now to reduce CPU load also. Limiting bitrate and resolution in the group chat allows for larger group sizes.

The vertical scroll bar was added this week to the director's room.

You can start recording and stop recording videos in the Director's view all at the same time by holding down CTRL (or command) and click the "Record" button of each video. Then just let go of the CTRL-button to start in sync. Bitrates default to 2500-kbps in this case. Delay between the videos starting was measured at 3-milliseconds, so sub-frame. ** experimental still **

Added more stereo options: stereo = 0,1,2,3 are available now. The reason for these changes is to give more control over stereo options when in a group-room chat.
0 disables stereo,
1 enables it for both push and view (if used on both links),
2 enables it just for viewing requests and not publishing requests.
3 enables it for just publishing requests and not viewing requests.

Added an option for scaling video resolution as a viewer! Before you could only set the resolution as a publisher, but now you can request a lower resolution "scaled down" resolution of that. &scale={percent-value}
For example, If the video inbound has a resolution of 1920x1080, a &scale=50 would limit it to 960x540 instead. The nice thing about this is that it doesn't matter which resolution their camera supports; the scale is software based and doesn't care about resolutions or aspect ratios. This can help a viewer reduce frame stuttering, cpu load, and improve frame rates, without having to have the guest rejoin the stream.

For Windows users, I've added a way to map audio from channel 1 to channel N.
&channeloffset=2&channels=8 (channels = the max total number of channels on your output device). You could in theory I suppose have one guest be captured on the left-channel, and a second guest be captured on the right channel, if you only had one virtual audio driver.

The Director now claims the group chat room when they enter it. Users who try to reclaim it will get an error

If a stream ID is already in use, both users (new and old publisher) will get an error letting them know there was a conflict.

Fixes to group/solo scenes implemented. There is also now a foundation to add more scenes and more room settings/controls.

Fixed an issue where NDI virtual devices did not work and would freeze the performer if the device was selected

I am hiding the "spiraling" icon on connect for a few seconds longer (4s) before showing it, along with the "retry" button option.

Retry logic has been improved; things will connect faster and reconnect faster. It no longer is based on polling, but pushing. More improvements are needed, but this was a big step.

you can manually set the audio bitrate now; you have more than just default and 256kbps as options now. &audiobitrate={kbps}

&videobitrate={kbps} works as an alias of &bitrate={kbps} , just to allow for explicit declarations now.

https://rtc.ninja is a vanilla version of the site, without heavy text, etc. You might find it a cleaner interface. The site also should work within an Iframe, if you wanted to embed it into your existing website.

If you register with Cloudflare and point your website's DNS to 34.68.24.49 , along with enabling flexible SSL, you can create your own branded version of OBS.Ninja that will look a lot like rtc.ninja. It uses the domain name used as the alternative text/branding.

Made changes so that it's easier to edit the index.html file without getting as many errors. This is a work in progress still, but this is one step closer to allowing for deeper customization in an easy and accessible fashion.

I added the &mirror parameter, which flips the video so its the mirror reflection. Perhaps useful if loading videos into a raspberry pi or something, were you don't intend to use OBS.

Moved the port of the handshake server from 7443 to 443; also made substantial improvements to it to help with faster reconnecting.

The language feature works a bit better now; doesn't flash English for a second on load.

Also included is the v5 updates...

Change Log - v5

The Electron Capture app (designed for Window capturing mainly) lets you select an Audio Output Destination now when viewing a stream. This is useful for directly outputting to a Virtual Audio Cable.

You can access the Electron app's interface also via https://obs.ninja/electron, which may be useful for things outside of window capturing.

Initial Localization support was added. In the bottom right, you can select between French and Russian now. You can also set the language via a URL parameter. &ln=ru

You can Disable the TURN server now using just &turn=false. This is useful for debugging.

You can remotely control the zoom of an Android camera. Use the mouse-wheel over the video you wish to zoom in/out of. Both the viewer and the controller needs to have the parameter &remote=ourpasscode added for it to be work. This is a security precaution. Also, remote focus may work; the same as with zoom, except you hold CTRL (or Command) down while scrolling over the desired video.

There are two TURN servers available now; West and Central. They will be selected based on lowest latency to the peer, if needed at all.

Holding CTRL (or command) down while LEFT-Clicking on a remote video you are viewing brings up a debug menu. This debug menu will list stats, like resolution/bitrate, but will also list if you are connected to a relay (TURN) server, or not.

Re-worked the Buffer command to work with audio now. &buffer=0 will force the audio to be in sync with the video. This is supported on Chrome v76, which implies not yet supported by OBS. Increasing the buffer higher than 0-ms will help ensure consistent latency and reduced video corruption. &buffer=300 could help to keep remote lip-sync performers in-sync perhaps and avoid odd audio Darth Vader effects (that might occur if buffer is set to 0)

Added the ability to "MUTE VIDEO" when sending video. Privacy and performance optimizations.

Tips/hint windows can be hidden again after usage

Improved the audio-selection drop-down. Only 1-device can be selected at a time, unless you hold CTRL while selecting, then you can select multiple.

Added the control-bar back to videos previews in solo-link mode.

Added an "error page" to users using OBS for MacOS v25 via Browser Source. Tells them to downgrade to OBS v23 or use the Electron app, with links to the wiki support.

Added "tally lights" to the Solo-link video sender pages. This is based on whether OBS tells OBS.Ninja if a scene is active or not. Red = visible. Doesn't work until the first scene change, but useful for knowing when you are moved on or off air. [&obsoff on the OBS viewer link turns them off for everyone]

Optimized the video feeds in the group chat; much better performance now. Limited resolutions, unless manual-override.

When you have &optimize set as a viewer parameter, if a stream is not visible/active in OBS the bitrates will be reduced to 600kbps. This is mainly there to help with reducing computer load.

[Update: This does not apply to iPhone users. This feature is now off by default, unless you add &optimize now; this was based on user feedback]

&noaudio and &novideo will prevent a guest room member from seeing or hearing other member's audio or video feeds. Useful for audio-only group chats when network or CPU performance is proving to be limited.

Made changes to the "camera setup screen". Added a GEAR icon to hold the advanced resolution parameters.

You can now select a resolution in the screen share; 1080p and not just 720p anymore.

Better re-connection management if disconnected; not yet perfect though.

You can use the &quality command to preset resolutions for a guest via their guest invite link. To clarify, there is quality 0, 1, and 2. 0 is about 1080p, 1 is about 720p, and 2 is about 360p. Restricting the resolution can help improve frame-rates and reduce CPU load.

iOS devices do not push video into the group chat itself; just into OBS/directors room. This is because iOS has a limit of 3 streams it can publish. &forceios disables it.

Fixed bug where iOS device may go to sleep if "no audio" is selected.

It's possible to invite someone to a chat room name with the short-form: https://obs.ninja/myroomname You don't need to do the ?room=xxxxx with this method.

You can access the control room for a Group Chat by doing https://obs.ninja/?directors=myroomname This lets you now refresh the director's room if needed, even if mute states and unsaved video recordings will be lost,.

Don't miss a new vdo.ninja release

NewReleases is sending notifications on new releases.