Genvid SDK 1.15.0

Welcome to Genvid SDK 1.15.0. This release is ready and stable for integration and can be used for local development and limited cloud deployment. We are still missing some features for a complete production deployment which can be provided through other software. Please contact us at support@genvidtech.com if you’re planning a production deployment.

We are still committed to a regular pace for our releases until we get all the features done for a comfortable production deployment. We always work to ensure a smooth upgrade between releases and provide as much backward compatibility support as possible. A complete list of our Known Issues and Workarounds is available to you in our Forum. Please contact us if you have any issues.

Current functionalities

Here is a summary of our current functionalities. See below for the list of new features in this release.

  • Windows C++ API with a C# wrapper.
  • D3D11 or raw frame video capture.
  • WASAPI audio capture.
  • Video encoding (H264 + AAC).
  • Video streaming to YouTube.
  • Multiple audiovisual and data streams coming from multiple instances.
  • Streaming additional arbitrary game events and notifications.
  • Scalable event messaging system.
  • JavaScript SDK for embedded webpage.
  • Automatic synchronisation between video and game data streams.
  • Multiple distributed source of A/V and Data (still beta).
  • Live video editing and basic composition effects (still in beta).
  • RTMP Ingest server (still in beta).
  • Unity3D integration (Game and Management).
  • Unreal Engine integration (Game and Management).
  • REST API to control the services (still in beta).
  • Tools and scripts for managing your local and remote clusters, with example scripts for AWS.
  • Metrics feed (still in beta).
  • Load testing library.
  • Extensive documentation.
  • Multiple integration samples.

More to come

Additionally, we are working on a full new feature pipeline to be released as soon as each is ready:

  • Remote management services for sharing your clusters with others.
  • SSL support for external APIs.
  • ACL support on Management APIs.
  • Hardware encoding.
  • Instant replay.
  • Better cluster-configuration management.
  • Many more improvements and features expositions in our UI (including the plugins).
  • Offline data-stream recording and playback.
  • Offline broadcast-session editing.
  • SDK Manager to help handling multiple SDK installations.

Major changes in this version

Reduced transport bandwidth in data pipeline

By using a binary format and removing many duplicate packages, while still preserving the guarantee of the latest data frame being available, we have greatly reduced the bandwidth usage between the server and the web client, which should improve the experience of the viewer with low bandwidth connection, especially at the start of the connection.

Revamped Cluster-UI

The Cluster-UI is our latest UI to have been moved to the Material style. We also made the following changes:

  • Additional colour codes and icons to indicate the Config sync status
  • Cluster-UI and Bastion-UI now use different colors for improved identity

Minor changes and other fixes

  • [python] We upgraded our Python installer from 3.5.3 to 3.5.4. This release contains some security and bug fixes for Windows. We recommend to upgrade from https://www.python.org/downloads/release/python-354/
  • [nodejs] We upgraded our Node.js installer from 6.9.1 to 8.11.3 LTS. This version of Node.js contains important security fixes. We recommend you to upgrade from https://nodejs.org/en/download/.
  • [bastion-api] Added linksdef API to Bastion API.
  • [bastion-api] Added linksdef edit page on Bastion-UI and its link bar in jobs page.
  • [bastion-api] Fixed retrieval of Consul-UI link address in Bastion API (the Consul-UI page wouldn’t open because the link address was empty).
  • [bastion-api] Infrastructure/Terraform: It is no longer possible to apply a plan that has failed.
  • [nomad] The Nomad policies and roles are now set during the genvid-sdk setup from the local directory instead of the Terraform directory during the provisioning.
  • [vault] We now expose Vault-UI by default.
  • [vault] Vault’s root token and keys are saved in the Bastion’s Vault instead of the server. NOTE: This increases security but will require that you re-run genvid-sdk setup if the server reboots.
  • [toolbox] Fixed a problem with NetworkTool.get_external_ip sometimes returning an invalid value (usually 8.8.8.8), creating an invalid trusted_cidr value in the global Terraform variables. We now use https://checkip.amazonaws.com by default, which can be set using NetworkTool.CHECKIP_URL.
  • [toolbox] Added a --reconfigure option to genvid-bastion install to override the current services’ configuration.
  • [toolbox] genvid.toolbox.ConsulTool.get_service now only returns services having the “passing” state. You can set the passing argument to false to get the previous behaviour.
  • [composed] Fixed a memory leak which occured when we were composing with multiple sources.
  • [youtube player] The data is now in sync when the viewer opens a web view.
  • [studio] Fixed a problem with audio mixer. The mixer always used the audio source source-0, regardless of the selected source.
  • [studio] The monitor’s latency was reduced to 300 ms.
  • [documentation] Added missing documentation about “wait command” endpoint.
  • [samples] For easier development, all samples now default to the same default values for GENVID_DISCO_SECRET and GENVID_COMMAND_SECRET. It is still strongly recommended to modify those values before running on an exposed network.
  • [unity sample] Fixed a bug happening upon termination.
  • [ue4 cube sample] Fixed an autoplay issue that caused an overlay to not be displayed.
  • [ut4 sample] Cheers no longer changes the camera when not in player follow mode.
  • [unity prefab] Fixed an issue that prevented automatic capture to work.

Known bugs

Twitch Extension Developer Rig not working

The Twitch Extension Developer Rig doesn’t provide any real player or video stream to synchronize the data. For this reason, our web client isn’t able to playback any data.

Compose window isn’t available if behind a proxy

Future versions of Bastion will have a remote server to allow access from different machines. The current version has limited support for this and is likely to encounter some problems if the Bastion host lives behind a cluster firewall (like on a Amazon EC2 machine). The workaround is creating VPN connections to the Bastion machine so that the local IP of the machine is accessible from the client machine.

The application doesn’t work properly after Windows comes back from sleep

Nomad has some difficulties with sleeping jobs, including itself. This is unlikely to get fixed in Nomad, but shouldn’t happen in a production environment. The best workaround at present is to not allow Windows to go to sleep when you are running the service, or simply to restart the service with a genvid-bastion reinstall. (Unfortunately, genvid-bastion restart is not sufficient).

The YouTube stream isn’t properly reset after a gvencode restart

If you stop and quickly restart the services, the YouTube streaming service considers it part of the same streaming session. Although this may be desirable most of the time, this could lead to showing up as the previous session due to the long latency between the services and the actual view which can create some delay in the stream. A future version will provide a proper way to request a new stream. Until then, you can either reset your stream key from the YouTube dashboard or simply wait a little longer (about 5 minutes should be enough) before restarting the service.

Audio captures microphone or infinitely loops

When using the WASAPI audio auto-capture mode, every sound going through the machine’s default audio-device gets captured. This includes system alerts and microphone input, as well as your web browser. When test-viewing your game stream using the same local machine running the game, the game will also capture its own audio stream with ~10s of latency. This yields some echo with progressively worse sound quality since it is compressed every time it is streamed.

You can disable audio in 2 ways:

  • Set settings.encode.input.silent to true in your configuration. (The default setting.)
  • Use our raw audio-capture, which is now the default setting in Unity.

Standalone player with Firefox

The readable streams must be enabled in Firefox for the standalone player to work properly. You must set dom.streams.enabled and javascript.options.streams preferences to true from the about:config URL.