github steveseguin/vdo.ninja 13.1
Version 13.1 Release

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

Version 13.1 Changes:

  • added the ability for the director to use the &push= parameter, which is really only useful for manually setting a streamID. Doesn't do anything else or unlock other special powers. (dev)

  • made it easier for those deploying OBSN to change the room bitrate to default to whatever they want.

  • also changed some of the default room bitrate math as well; bitrates are slightly higher for guests in small groups now.

  • added the option &totalroombitrate , which I might delete or modify still, but it lets a guest set the total amount of bitrate they will pull from other guests, as a total. Default is 500-kbps. This could cause problems for mobile guest users, so I want to add more protections in before I am done.

  • added &nosettings as a way to disable the gear-icon for publishers. They won't be able to change their camera/audio settings once they start streaming with this flag set.

  • fixed a typo; "broacast". ugh.

  • made it so a &scene types won't show certain error popup messages. added just in case.

  • Rewrote some of the code to deal with a possible race condition; hoping this will mitigate any stream ID errors in use problems. users on proxied networks (or spied on) connections or such could potentially run into the race condition this tries to fix).

  • added a retry time out to cases where the stream ID is already in use. Checks every few seconds, up to 20 seconds, at which point it throws the error.

  • If a user refreshes the page, I no longer pop-up an alert warning the user that they are leaving the page. Instead, I use it as a moment to just disconnect the user from all camera/audio/rtc/hss connections properly. (browsers are horrible at garbage collection. they take forever sometimes, causing issues. This should solve that.)

  • modified the way chat looks based on user feedback.

  • text bars are no longer transparent

  • outgoing text bubbles are blue (akin to iOS sms messages)

  • background for chat window is darkened to give some contrast to the white bubbles.

  • added labels to chat; you need to use &label=somename to have them show up tho.

  • made the chat clip at 100 msgs instead of 10; also I made chat scrollable.

  • fixed an issue with chat where Chinese didn't wrap lines right due to lack of spaces used in that language.

  • fixed a few text typos in the group room.

Version 13.0 Changes:

New parameters

  • The option to share a video or audio file can be enabled with the &fileshare (&fs) URL parameter. The media will auto-loop and can be scrubbed by the publisher only. The viewers remain in sync with the publisher, including play-state and volume-level.
  • &maxpublishers now exists ( previously it was just &maxviewers). Limits the number of incoming p2p connections.
  • Added &randomize as a new parameter. Just makes it so videos in a room don't always load in the same order. If you set &maxpublishers, combined with &randomize, you can now get a random sub-sample of the room's guests.
  • The &label=VALUE has added value. The label's value shows up in the Debug/stats window, the title of the Browser's window, and in the director's room. Additional uses for the label parameter are coming, but not yet done.
  • If setting &label and leaving it blank, it will request a user for a name via a pop-up prompt.
  • added the ability to select audio and video device via the URL, by specifying a text phrase. Spaces can be represented by a "_" underscore character. Capitalization does not matter. &audiodevice=usb_preamp or something I guess
  • Added the &stats parameter, which causes the stats window load immediately without user input. This is useful for VMIX users who cannot hold CTRL to trigger the stats window that way.
  • Added the &hash parameter. It stores a 4-character hashed representation of the password, which acts as a pre-validation step in ensuring the user types in the correct password. It auto adds when creating a room or generating a custom link with the invite section. If the user's entered password does not match the hashed expected result, then the user will get an alert the password is wrong. It's not a 100% check, but good enough to deal with accidental incorrect password entries.
  • You can set the TITLE of the Tab now using the &label command: ie) https://obs.ninja/?label=SomeNameGoes_here
  • Added the ability to change the background color to a HEX color code: &chroma=0fa or &chroma=ff00aa (black by default)
  • &effects=x are added as well; 1 is face align and 2 is mirrored video. BOTH are experimental and are not fully fleshed out yet. &effects=1 requires Face Detection turned on in the Chrome experimental flags.
  • added a viewer-side keyframe control param. This essentially tells the remote publishers to send keyframes at a specified rate. ie) &keyframerate={milliseconds between forced keyframes} You don't need to be using OBS or VP8 to use it, and it is disabled by default, but it will reduce visual quality if set to a short interval. Useful if packet loss is really bad I guess?

Bug fixes:

  • Fixed some issues related to the director muting audio in scenes; can't unmute unless stream has been added first, etc.
  • Stats/debug window does not stack anymore; previous windows if open get closed when a new one opens.
  • Fixed an issue in Firefox where the START button could be triggered by the stream was actually ready, causing failed connections.
  • Added some code to try to handle the case where a video freshly added to a scene changes size by a single pixel. This is in response to some odd behaviour with Chromium-based browsers.
  • Fixed an issue on Android where if rotating the device's orientation, some videos might not scale to fit their containers correctly, remaining quite small.
  • &cleanoutput had some bugs that allowed for alert pop-ups when not desired. That's been fixed.
  • The &security parameter was made less verbose and it now applies to both a max of one publisher and one viewer; not just one viewer.
  • NDI devices should now be listed at the end of the device list, rather than potentially first/default. This was done to avoid NDI Tools drivers crashing the browsers right off the bat. If you run into problems, just refresh now.
  • Fixed an issue with video disconnecting on Beta when audio sources changed
  • Fixed a bug related to the help info button being unclickable
  • Figured out the bug that was causing the audio device to fail if the video device also failed on load.
  • implemented code to 'beef up' the video bandwidth if the audio is set very high. There was a bug that caused the video bitrate to drop if the audio bitrate was too high.
  • &buffer and &sync work correctly now. &sync by default will enable &buffer=0 and offer a way to set the audio delay without impacting the video delay. &buffer will delay both audio and video, with the goal to improve lipsyncing and reduce packet loss. &sync works in OBS, but &buffer does not. &buffer only works in the Electron Capture app, VMIX, or Chromium-based browsers. &sync can accept values typically in a range from around -50 to 500 (milliseconds).
  • Increased the time before retrying to connect to a stream if the publisher disconnects. This avoids a potential race condition.

Rooms:

  • The ability to transfer a guest from one room to another room is avaialble now. Guests will not know which room they were transferred to, providing for a secure call screening method. Guests will revert back to the original group room if they refresh their browser.
  • Guests will recieve a message in the chat-log if they get transferred to a new room by a director.
  • Only the FIRST director into a room's control center will be able to transfer guests; at least until they leave.
  • Multiple Guests can be transferred by holding CTRL (or command) when selecting guests to transfer.
  • Added a new button to the UI that lets guests mute other videos when they are in a room
  • The click-to-reveal Notes in the Director's room have been updated
  • Organized numerous app styles, text, and the Director Room layouts to be more accessible and templated for easier customization.
  • If in a room, a guest's stream cannot be accessed from outside the room. This is a change from the previous behaviour.
  • The Director can use the hotkey CTRL-M (command-M) to toggle the mic on and off, once the director's mic option has been enabled.
  • The Director's voice-of-god audio cannot be easily muted by guests in a room.
  • The main director of a room can force a publishing room guest to remotely hang up (the remote user can just rejoin of course)
  • The main director of a room can remotely change focus/zoom of a participant without needing the &remote command now.
  • I've added code limiting the group-room audio to 32kbps. Director gets capped at 32kbps audio as well, unless stereo is enabled that is.
  • global volume control is available for group chats and directors. Mute is on by default for the directors room still, but this lets you unmute all videos easily. (Director's mic cannot be muted by guests tho)

Mobile:

  • The stats/debug window can be opened on mobile by rapidly tapping on the video of interest 5 times in a row.
  • iOS devices can no longer select a custom listening audio-bitrate; if set it will be ignored. This bypasses a bug with iOS Safari that could cause distortion or a failure. If problems still persist with audio on iOS, fully-restarting Safari can help.
  • iOS devices will show up as a low-quality video stream in the Director's room now. 30-kbps or so. It cannot be changed until adding &forceios to the director's URL.
  • iOS devices will now broadcast video to everyone in the group room. It sends a 30-kbps low-quality video stream to all the guests, using the VP8 codec, while it still sends a 720p H264 high-bitrate stream to OBS. Previously iOS devices only shared audio with other guests, unless &forceios was used. Not ideal for larger groups or older iOS devices.
  • made the option to select no-microphone on iOS available

Codec tweaks

  • The &obsfix can now have a parameter passed to it that can control the threshold for automatic keyframe requests based on packet loss rates. Default is &obsfix=15, which applies to VP8 and VP9 codecs. Setting it to 0 will turn it off.
  • The VP8 codec, typically the default in OBS, has been adjusted to be 30% more sensitive to requesting a keyframe if packet loss is detected. This is all in response to a bug in OBS Browser Source as OBS related to packet loss management This is not present with the Electron Capture app or Chrome. You can try different thresholds with &obsfix of course though.
  • The VP9 codec will now be forced to request a keyframe now in OBS if the packet loss is very heavy. VP9 is not seriously bugged in OBS, but it can still fail to handle heavy packet loss. This added fix tries to address that edge case of heavy packet loss that might cause video corruption.
  • If a sender disables their video device, it now deletes the video track for viewers. This allows for &style=2 to be used as a fallback to something other than just a grey-spinning window.
  • set the default audio bitrate to be variable (VBR) for group-room guests in all cases now; even if a bitrate is manually specified.

UI/UX

  • Added a WAVEFORM style option for cases where &novideo or such is used. By adding &style=2, any audio-only guests will be represented instead by an animated green on black audio waveform. Please provide feedback on your successes using this.
  • If using &style=2, the "loudness" level of each video will appear in the Stats/debug page, as well as become accessible via the IFRAME API at a rate of about ~25 updates per second. I'll eventually make this info on by default, but more testing is needed first.
  • Added &style=1 as an option, which hides audio-only media elements from the group-mixer. This is enabled by default for scenes used in OBS, but not on by default for guests themselves in group rooms. (naming structure for styles may change in the future)
  • If using &audiodevice=0, you won't get an alert popup now if you don't select an audio-source when screen-sharing.
  • The INVITE Generator has been tweaked. More hover-over tool-tips and the secure option was changed to "force default mic" instead.
  • Got rid of the &scene=1 in the solo links for guests in the Director's view. It is now just "&scene", without the added value.
  • The settings slide-in menu is scrollable now; useful for small screens.
  • The Director's room got a new layout and styling. Thanks to thefluffytoucan and jcalado for helping out here.
  • If you enter just "&push" without a value set for it, it will create on automatically for you.
  • The landing page's big buttons look like buttons to the cursor now; finger pointer as a cursor vs arrow, etc.
  • Screen-sharing as an option has been removed by default for Mobile devices, including iOS. It doesn't work there, so why show it?
  • Added the hashed-password check to the OBS dock URL link generator page. Gets added automatically when setting a password.
  • Made the HANG UP button icon red, instead of white, to help indicate it's function.
  • added support for Firefox drag-in-drop LINKs from the director's room into OBS
  • There's new stat in the stats/debug menu, which shows how out of sync the video and audio is. I improved the stats menu; added some things like round-trip ping time, an reason why the connection sucks (bandwidth, cpu, none, etc), and some other random things
  • Added a visual icon to let you know drag and drop is working; Chrome specific. Not all links are draggable; just those that can be used in OBS.
  • Improved the error messaging for when NDI craps out on Chrome. (10 second timeout before error now; vs 15s)
  • If the app needs to change/santitize a user's input (password, room name, etc), the app will alert the user to the change. Remember, AlphaNumeric characters are supported; other characters might be replaced with an UnderScore or nothing.
  • Improved the sanitization of user inputs. More consistency and simplicity should allow for less chance of a mismatch in complex user-entered passwords, for example.
  • I'm hiding audio-only sources from OBS Scenes by default now. They still show for guests by default tho.
  • updated the style for the preview video element; height is now consistent despite device selected.
  • Improved the &webcam/&screenshare so they bypass the first button and just load directly in. No animations or close buttons; just straight to it. This is helpful for IFRAME API development uses.
  • Disabled stereo audio for guest-to-guest audio (goal being to reduce as many complications as possible for guests as possible). Too many users were having their guests push proaudio to other guests, not knowing the stress and complexity this was causing. Does not impact what OBS gets.
  • The current OBSN version info is now accessible. It's viewable via debug/stats page or at the bottom of the main page in very fine black text.

IFRAME support

  • IFRAME API improved with fixed mic/speaker muting logic. Toggle code, etc, works better and is more explicit.
  • took a stab at making some IFRAME documentation, although it's pretty awful currently: https://github.com/steveseguin/obsninja/blob/iframe-api-docs/IFRAME.md
  • Added some new actions to the IFRAME page. Events for:
      • starting to publish a camera
      • starting to publish a screen share
      • having a new inbound connection start
      • having a new outbound connection start
      • access to loudness level of each guests' audio

Infrastructure

  • New TURN servers in North America and Germany were deployed; these will replace the previous ones. These are also TCP-based by default and have a more reliable paid SSL certificate used.

Security

  • Unless &password=0 is set, passwords are enabled by default now, even if it doesn't look like it. This is because a default password is now set and that can be changed is self-deploying the code. There is also an added new "salt" value, which is dervived by the domain name of the OBSN deployment. This means that every deployment of OBSN will have its own unique encryption applied automatically. Due to the default password, handsshake messaging is now client-side encrypted by default, improving privacy and security.
  • Stream IDs and Room names are salted and hashed if using a password, meaning that if doing a self-deployment of OBSN, the chance of a stream ID or Room name collision should be virtually impossible with other deployments, even if using a silly stream ID like "test".
  • if you specify a custom password manually, it will be used to isolate the stream ID on OBSN, not just within the room. The previous behaviour had room-names hashed when passwords were used, but now this applies to stream IDs as well. This increases privacy and security.

Translations

  • Russian Translations updated on production via KovalevArtem

Electron capture:

  • Removed pop-ups from the Electron landing page to avoid freezes; instead a subtle message bar has been added to communicate messages.
  • Updated the electron app so it requests mic/webcam permissions. v1.1.1 This allows for it to be used for publishing; not just capturing.

Invite.cam

Caption.ninja

  • captions.ninja -> caption.ninja (bought the domain ; forwards, to avoid mistyping) Also fixed a few styling issues with the site.

Other

  • Purchased a Google Pixel phone to help test some new features, like camera exposure. Stil a work in progress, but you can see what your aspects your mobile device supports here: https://obs.ninja/supports (iOS devices have very little support for anything).
  • Ordered a 6-channel mic source to let me do more troubleshooting on the 5.1 multi channel audio support. Still working to improve multi-channel audio support.

Resources

Guides

Don't miss a new vdo.ninja release

NewReleases is sending notifications on new releases.