Genvid SDK 1.9.0¶
Welcome to Genvid SDK 1.9.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. 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 of additional arbitrary game events and notifications
- Scalable event messaging system
- Javascript SDK for embedded webpage
- Automatic synchronisation between video and game data streams
- Unity3D integration (Game and Management)
- Unreal Engine integration (Game and Management)
- D3D11, Unreal Tournament and Unity 3D Samples
- Extensive documentation
- Tools and scripts for managing your local and remote clusters.
- Configuration scripts for AWS deployment
- REST API to control the services (still in beta)
- Multiple distributed source of A/V and Data (still beta)
- Live video edition and basic composition effects (still in beta)
- RTMP Ingest server (still in beta)
- Metrics feed (still in beta)
More to come¶
Additionally, we are working on a full new feature pipeline to be released as soon as each is ready:
- A remote management services to share your clusters with others.
- SSL support for external APIs.
- ACL support on Management APIs.
- Hardware encoding.
- Instant replay.
- Better management of cluster configurations.
- Many more improvements and features expositions in our UI (including the plugins).
- Offline recording and playback of data streams.
- Offline broadcast session editing.
Major changes in this version¶
Support for Remote Storage in Terraform¶
This is a major change in the way we handle our clusters and an
additional step toward having the clusters entirely handled remotely.
The interface hasn’t changed, but now the Terraform state is preserved
in the Consul daemon. We also upgraded to Terraform 0.10, which
introduces major changes in Terraform itself. Before upgrading, please
destroy any existing cluster since the upgrade will not be able to
restore them correctly. Note that you now need to call a short
init
command before being able to actually manage your cluster
after its creation.
New load tester sample¶
We added a new sample to help doing load tests. The sample starts many clients connecting to the services. It came with a new cluster setup especially for this.
The web SDK is compiled with modules instead of global variables¶
The web SDK has the new version compiled with modules. This is to enable the use of the SDK in node.js. Three version are available. The first targets the browser using global variable and is backward compatible. The second targets the browser using modules. The last is using module and target node.js.
New Unreal Engine 4 Sample¶
We created a new integration sample directly with Unreal Engine 4.
This sample uses the same code as Unreal Tournament, but in a simpler
setting to help with the integration into an original UE4 game. It
also includes some new tools to help with the integration. Check it
out inside our Unreal Engine 4 Integration
section.
New delay on sources in Studio¶
When the composition mode is activated it is possible to add a delay on each of the sources. This feature will allow the realization to have pip and voice-over well synchronized.
Genvid Plugins now support remote clusters¶
You can now select and control even the remote clusters in the Genvid Plugin for Unity and Unreal Editor. Both plugins allow you to modify the Genvid settings, start and stop jobs, and even display the SDK Health Check results, giving you a better view on the state of your game, even when it’s running in the cloud.
Bastion Reverse Proxy¶
We add more cluster services and API provided through the Bastion reverse proxy functionality. This will allow us to provide a centralized management of those services, including access control and logging. The direct access to the service API will eventually be cut off on the remote clusters to ensure a more secure environment.
This change the previous reverse proxy api which were only available
for the cluster-api service. This version redirects all the calls to
/v1/cluster/{cluster}/v1/
to
/v1/proxy/{cluster}/cluster-api/v1
but you should update your
usage of this API accordingly to access future version of this API (as
well as other services).
Minor changes and other fixes¶
- [sdk] A crash when receiving events that appeared during heavy load testing has been fixed.
- [doc] Update the documentation on the usage of
GENVID_DEFAULT_IP
to prevent problems with Bastion or Consul not being reachable. - [samples] Add missing
samples\streaming_services
folder in the installer. The code is the same as shown in the documentation. - [bastion] Added the possibility to choose a Terraform source when creating a cluster in Bastion-UI.
- [bastion] Add a new
terraform/instance/status
API to query the status of the cluster. It is available with thegenvid-clusters terraform-status
command. - [metrics] Add some metrics for the gvencode service.
- [metrics] New metrics were added to the stream context and frame grabber.
- [toolbox] Cluster api now provides the method
get_proxied_url
which returns an url to the given service that is proxied by Bastion. - [cluster-ui] A new settings section allows the creation and edition of event maps and reductions.
- [plugins] Both Unity and Unreal plugins now supported controlling your remote clusters in addition to the local cluster.
- [gvencode] Better stream synchronization for long-term broadcasting
- [unity plugin] Fixed an update error for Cluster-API in the editor.
- [unity plugin] Removed the static menu generation for Cluster-API.
- [ue4 plugin] Added error feedback when the url link is invalid.
- [tutorial] The clipping of the overlay when displaying a composed stream has been fixed.
- [studio] The affine matrix describing the transformation of the viewports in a composed stream is now computed in function of a normalized viewport instead of a viewport in pixels
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 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 restart of gvencode¶
If the services are stopped and restarted shortly thereafter, the YouTube streaming service will consider it as 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¶
Since we capture audio with a loopback device, every sound going
through the machine running the game will get captured. This includes
system alerts, 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, yielding some echo with progressively worse sound quality
(since it is compressed every time it is streamed). The recommended
workaround is to disable audio altogether
(genvid.encode.input.silent = true
in your configuration, which is
the default), or to use a separate machine to observe the website.
These issues don’t occur when the game is deployed in a cloud
infrastructure.
Service cannot discover the statsd service¶
Unless you are using the GENVID_STATSD_URL
variable, the statsd service
must be available before starting it. This is an oversight on our side and
will be fixed in the next version.
Game capture doesn’t recover from being run in background¶
There is a bug when the game recover from the very high numbers of
Genvid_SubmitVideoData
resulting in the tutorial sample being send
in the background (either by minimizing the window or the screensaver
starting). The capture data will show out of order captured frames in
the playback. The bug shouldn’t happen on a correctly configured
server.
Unity Sample will not start with Unity 2017.2¶
The packaging script for the Unity sample doesn’t support Unity 2017.2. There is a missing libraries if you try to run the resulting game on the cloud. Right now, the Genvid SDK only support officially the 5.6 series, but we will add support for Unity 2017.2 in the next version.