Genvid SDK 1.14.0

Welcome to Genvid Technologies SDK 1.14.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

External binaries updated

Most of Hashicorp and related binaries have been updated to their more recent versions. You are invited to check their changelogs if you are using them directly.

Hashi UI has also been updated to version v0.25.0.

Genvid Terraform Modules Refactoring

Terraform Modules have been reworked to be more configurable and composable. That way, you can customize the clusters through Terraform variables and join them together reusing components. Check “Terraform Configuration” in the documentation for more information.

Minor changes and other fixes

  • [native-sdk] Capture audio silence when the audio device is stopped.
  • [sdk] The ID of the default audio endpoint, if any is available, will be mentioned in the log.
  • [sdk] Fixed problems with WASAPI silence and discontinued audio samples.
  • [bastion-api] Added a new Terraform endpoint which lets you apply a specific plan.
  • [consul] The new Consul version should fix some socket leaks that were making Consul unresponsive when some services were down.
  • [toolbox] Fixed error in toolbox script when using GENVID_BASTION_URL without a local bastion.
  • [toolbox] Changed the default S3 bucket and repository to upload from {AccountID}-{bastionID}-{clusterID}-images/ to {AccountID}-{bastionID}; SDK images are now versioned under /images/SDK-{version} and the default path for other images are under /images/custom.
  • [toolbox] Enforce the presence of a Bastion ID in the genvid-bastion install command.
  • [toolbox] Removed the source parameter from the genvid-cluster global-update command and related API.
  • [toolbox] A new limited backup command is now available in genvid-bastion, mainly for helping upgrading to the new version of Consul.
  • [terraform] Removed variable images_bucket in genvid/aws module that wasn’t used anymore.
  • [terraform] AWS Resources are now tagged appropriately so that they can be easily found in the AWS Console searching by tags. New Terraform variables have been added to group them by namespace and stage.
  • [services] Http requests to the compose service and discod return a status 403 instead of a status 500 when the authentication fails.
  • [services] Fixed a default value for NTP server that was still pointing to us.pool.ntp.org.
  • [composed] Fixed a rare crash in the compose service due to a null pointer exception in the health service.
  • [composed] Fixed stream delay problems that were dropping some audio samples.
  • [gvencode] Fixed concurrency problems with audio/video synchronization (YouTube and standalone).
  • [gvencode] Does not flood the log with switching errors anymore.
  • [standalone player] A play button is displayed over the video if the video is not started.
  • [standalone player] The onPlayerReady callback is called earlier in the initialization process.
  • [cluster-ui] Fixed too many http connections when cluster is DOWN.
  • [cluster-ui] Fixed a fake warning about data not being up to date with server, occurring when editing jobs.
  • [cluster-ui] A better feedback is given when a config key/value has changed in the Settings/Config dialog.
  • [bastion-ui] The Terraform workflow is enforced by the UI.
  • [bastion-ui] The module list now filters the modules that support cluster API by default.
  • [bastion-ui] The module list takes less bandwidth.
  • [bastion-ui] Fixed html cache problem when upgrading.
  • [ue4-plugin] Fixed a bug when multibyte characters are used with game data, annotation, or notification. The system was wrongly calculating the quantity of bytes to send which could result in truncated data at arrival.
  • [ue4-plugin] Added an option to allow events and commands replication.
  • [tutorial] The sample will now exit should the initialization of the SDK fail.
  • [studio] Lower latency for the monitor.
  • [studio] Now the new composition is shown in preview when a new one is selected.

Known bugs

We weren’t able to fix some bugs in time for this release, but we intend to fix them shortly.

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.