v23 🌱
A refresh to the UI
Last updated
A refresh to the UI
Last updated
New version of VDO.Ninja released into Production at https://vdo.ninja/. v23 now live. If having problems,
Please do a hard browser cache clear and refresh, especially in your OBS browser sources and if on mobile.
If still having problems, the previous version of VDO.Ninja can be found here: https://vdo.ninja/v22/
Report any issues you have with the new version in the 🐞│bug-report discord channel
But some quick highlights are:
The Mixer App has been improved, including with the option to sync OBS scenes to Mixer layouts
Connection stats has new features and important fixes to the candidate type stat
A refresh to the UI, with a large contribution from Lindenkron there
Chunked mode improvements and options to dynamically change the buffer have been added
Initial WHIP/WHEP support added, including a test page at https://vdo.ninja/whip
Chronological updates are here:
Styling of VDO.Ninja has been changed and improved. Biggest changes seen in the in the director's room and the lower control bar. Thank you to @lindenkron for contributing substantially with this task.
iPhone 12 and up has improved support for 1080p60 now. Also requires iOS 16+, the rear camera in use, but if you meet those requirements, using &quality=0
(high-quality mode) will trigger it.
Viewer stats will show the remote iOS device version, if present.
New video bitrate stats added for debugging; max bitrate, initial bitrate, current target bitrate.
The director has the option to select digital effects and an avatar by default, without needing to use any URL parameters to show the options
If the main room director reloads their page, and there is a co-director connected, the main room director will use the room state from the co-director. Before, the main director would reset the room state on refresh.
There's a bug report feature added (added back at least), which provides users an opportunity to upload their log event data for debugging by VDO.Ninja developers. It mainly only appears when using the alpha-version of VDO.Ninja, when an internal error occurs, but it may appear some other times.
Videos should autoplay when using &noaudio
now, bypassing the browser's normal auto-play policy issues.
Many more IFrame API events added, and some depreciated events changed/removed.
The scene-preview mode that the director has is no longer limited to the preview-bitrate target that's set in the normal director view mode; it should target now closer to 500-kbps.
&mute
now works with the director, so the director can enable their mic, but have it start muted
You can now publish from VDO.Ninja directly to Twitch via your browser; proof of concept can be found here: https://vdo.ninja/whip
You can publish video and audio into VDO.Ninja using a new WHIP protocol. OBS Studio will have basic support for this option in a future release, along with other apps, although it may be several months before such apps have proper support for VDO.Ninja.
Added a new IFRAME code example that demos how to prompt a guest who is joining a room with a custom message, assuming the director is not there yet. Example is here: https://vdo.ninja/examples/waitingroom?room=TESTROOM123
Added the number of CPU threads (logical cores) to the stats info.
Added a "restart connection" button to the sender's side stats menu. It triggers a partial connection restart, which may or may not help with some connection issues. Please let me know if it helps, as it likely will do nothing for most users and most issues.
The https://updates.vdo.ninja/ page has been updated to show image attachments now; you can follow that page to see development updates. Our @leb has contributed significantly to this feature and other related improvements to that page.
Added a disable video button as a new director's remote control option. This will remotely disable the guest's video in the same way that the guest themselves can disable it.
Created the example page: https://vdo.ninja/examples/rotated.html, which lets you rotate a specific website 90, 270, or 180 degrees. Works with VDO.Ninja or other sites that support IFrame embedding.
&meshcast
should fail less often, as it should switch servers now if initial connection setup to one fails.
Right-clicking a video in VDO.Ninja offers the user the option to save a copy of the video to disk.
Right-clicking a video will offer the option to take a snapshot of the video, saving it to the clipboard as a PNG file; you can then paste the snapshot image into Photoshop, etc.
&minipreviewoffset
added, which allows you to specify the horizontal alignment of the guest's mini preview video window. &mpo=40
is an example of how to center the preview.
&suppresslocalaudio
will disable local audio playback of a Chrome tab when screen sharing it.
&prefercurrenttab
have the current browser tab be the default screen share source, if browser supports it.
&selfbrowsersurface
can be used to exclude (or include) the current tab as a screen sharing option
&systemaudio
will exclude the system-audio capture option from screen sharing options, but will retain tab-audio as an option. Should help avoid echo issues when a guest shares their screen.
&displaysurface
will let you set the default screen share type; monitor, browser, and window are options.
&miconlyoption
shows a "Join with Microphone" option for guests joining a room. The option to join with video remains as well, so you give the skiddish guests more options now.
&nochunked
added, which lets a viewer request a non-chunked video stream be sent to them in the case the sender is using &chunked
mode. Useful if chunked mode is causing you problems and you need to disable it from the viewer side.
Adding &headertitle
and &favicon
as options. These will change the browser's page title and favicon image, respectively. It works also if using https://invite.cam
&permaid
has changed so that when used, it will store your generated or specified stream ID to local storage, so on next site visit, your previous stream ID will be re-used, rather than a newly generated on being made.
&effect=8
uses a canvas element to capture the video as a guest, without applying an effects, which can help avoid issues with cameras that keep freezing.
&structure
added, which will have the video holding div element be structured to 16:9 (or whatever &aspectratio
is set to), making it easier to apply custom CSS backgrounds to videos -- it will have the label/border/margins align relative to the 16:9 holder element, rather than video itself.
&color
added, which will let you specific the background color of a video. This is useful if using &structure
, but probably isn't useful otherwise.
&blur
will try to add a blurred background to the video so it fits the structured video container
A TCP max bandwidth (upload/download) test was added to the guest check tool, at https://vdo.ninja/check. This complements the UDP video bitrate test result.
Bullseye OS support added to the Raspberry Pi image of Raspberry Ninja
Libcamera support added for both RPI and Jetson devices
Native support of many Arducam CSI cameras added to the RPI image
While I didn't write Vingester.app, I've released a version that has support for VDO.Ninja v22 and newer. Vingester is useful for pushing VDO.Ninja streams to NDI or FFmpeg.
Mac and PC builds for it here: https://github.com/steveseguin/vingester/releases/
--color
can let you pass a hex value to set the background color via command line; transparent hex color codes work.
The Edit CSS custom menu option will remember the entered CSS entered, so on next visit to a site, your last CSS entry will be the default in the input field when enabling custom CSS.
The iOS screen sharing feature now works system-wide
Room support added
Custom handshake server support added
Audio-only option added
OBS scene syncing added, so you can setup the mixer app to change an OBS scene to match the mixer layout it has been synced with.
Reverse OBS scene syncing added, so you can have the mixer app's current layout change based on the selected OBS scene. This allows you use OBS to control mixer layouts, rather than the mixer itself.
Fixed an issue where rotating between portrait and landscape on mobile didn't update the target optimized resolution. Should result in sharper video from mobile devices in certain cases as a result, assuming you weren't already using &scale=100
.
The resolution scaling optimization logic will select a higher resolution now, despite the video being configured to be cropped. This means that when using &cover
, the image quality may be improved, assuming &scale=100
isn't being used.
&forcelandscape
fixed, so that the video rotates for both viewers and sender, rather than having the video just rotate for the sender.