Release & Upgrade Notes¶
Below, you’ll find the release notes for the latest version of the Genvid MILE SDK. This section also includes release notes from previous versions of the SDK and instructions for upgrading earlier versions.
Genvid MILE SDK 1.33.0¶
Welcome to Genvid MILE SDK 1.33.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 on our AnswerHub pages. Please contact us if you have any issues.
Current Functionalities¶
Here is a summary of our current functionalities. See Major Fixes and Changes below for the list of new features in this release.
- Automatic synchronization between video and game-data streams.
- Video streaming to YouTube and Twitch.
- JavaScript SDK for embedded webpage.
- Multiple distributed sources of A/V and Data.
- Streaming additional arbitrary game events and notifications.
- Scalable event messaging system.
- Windows C++ API with a C# wrapper.
- Video encoding (H264 + AAC).
- Unity3D integration (Game and Management).
- Unreal Engine integration (Game and Management).
- D3D11 or raw frame video capture.
- WASAPI audio capture.
- Tools and scripts for managing your local and remote clusters, with example scripts for AWS and Azure.
- Live video editing and basic composition effects (beta).
- RTMP Ingest server (beta).
- REST API to control the services (beta).
- Metrics feed (beta).
- Load-testing library.
- Multiple integration samples.
- Extensive documentation.
Major Fixes and Changes¶
Added Settings in Studio UI¶
You can now edit broadcast settings, input settings, and composition settings from Studio.
Added Support for Unreal 4.27¶
The Genvid MILE SDK now officially supports Unreal 4.27.
Minor Changes and Other Fixes¶
- [sdk] Added support for submitting no game data by
providing a
nullptr
address and a size of zero. - [sdk] Fixed an issue where you can’t reuse a timed-out time slot.
- [sdk] Fixed an issue where passing an invalid source name would lead to a crash.
- [sdk] Fixed an issue where no audio and/or video is sent when configured at 60 FPS.
- [sdk] Fixed an issue where the SDK sender would crash when the composeD service reconnects.
- [sdk] Fixed an issue where the sample would not restart when stopped outside of the Cluster UI screen.
- [web-sdk] Fixed an issue where timers are not clearing up when using the web SDK inside Node.js.
- [web-sdk] Added automatic web-player reload when a new broadcast is created.
- [unity plugin] Fixed an issue where the audio/video desync at 60 FPS.
- [toolbox] Added the method
render_template
togenvid.toolbox.BastionAPI
. - [toolbox] Added the command
render-template
togenvid-bastion
that renders a template in the context of thebastion-api
. - [toolbox] Deprecated
ConsulTemplateTool
from the ancestors of theSDK
Python class. - [toolbox] Improved the
genvid-sdk
andgenvid-bastion
commands by doing most of the template rendering on the context of thecluster-api
and/orbastion-api
when it applies. This change should be transparent. - [toolbox] Removed unused dependencies and some
restrictions on the version requirements which were causing conflicts while
installing
genvid-toolbox
. - [toolbox] Fixed an issue where some Python dependencies required the compilation of some packages. The Genvid MILE SDK now defaults to using the binary versions of packages when they exist.
- [toolbox] Added the
genvid-sdk render-template
command to interface with thecluster-api
/template_renderer
API. - [toolbox] Improved the
genvid-sdk render-template
command by adding the ability to interpret the rendered template as a configuration file. - [toolbox] Deprecated the method
do_consul_template
fromClusterAPI
in favor of the commandrender_template
. - [toolbox] Deprecated the command
consul-template
fromgenvid-sdk
in favor of the commandrender-template
. - [toolbox] Deprecated
ConfigTool
in supported classes. - [toolbox] Improved
genvid-sdk setup
for the local cluster by setting the initial content of the Consul K/V store through loading the content of the{ROOTDIR}/local-services/init
folder. - [toolbox] Deprecated
ProjectTool
fromgenvid.toolbox
. See the upgrade notes for more information. - [toolbox] Added the
GENVID_BASTION_ID
andGENVID_CLUSTER_ID
environment variables to the template-rendering functions ofbastion-api
andcluster-api
, where appropriate. - [toolbox] Removed
as_bitrate
fromClusterAPI
and moved it toClusterTool
as a class method. - [toolbox] Improved dependency handling by removing
azure-cli
from the toolbox and using a global package instead. See the upgrade notes for more information. - [toolbox] Improved Azure integration by using a standalone installation of the Azure CLI.
- [toolbox] Improved
genvid-toolbox
dependencies by replacingjsonpath_rw_ext
with custom code. - [toolbox] Removed
spur
from thegenvid-toolbox
dependencies, making it optional. The package was only used in deprecated classes. - [toolbox] Fixed a typo in the
vault_load_roles
documentation. - [toolbox] Improved
genvid-toolbox
by making the AWS support optional. It is still installed by default. See the upgrade notes for more information. - [toolbox] Removed
chardet
from thegenvid-toolbox
package dependencies. - [toolbox] Added a note about the dropped dependencies for
azure-cli
, including a warning about the possible error message when upgrading. - [toolbox] Upgraded
hvac
to>=0.10.6
for thegenvid-toolbox
. - [toolbox] Fixed the local consul requiring firewall permission by forcing the binding of the Gossip protocol to localhost by default.
- [gvencode] Fixed an issue where the composition information is not sent to the web client when the second source is started.
- [gvencode] Fixed an issue where the Audio and Video streams would de-sync over time.
- [gvencode] Fixed an issue where the audio and video streams would experience gradual de-sync upon reconnection.
- [gvencode] Fixed an issue where decoding would stop working when receiving an invalid packet.
- [bastion-api] Added the
/v1/bastion/global/template_renderer
API tobastion-api
. - [studio] Removed the Interpolator dropdown menu for Studio Transition. The Interpolator now defaults to Linear.
- [ingest] Fixed an issue where the video is lost when composeD stops.
- [ingest] Fixed an issue where composeD doesn’t know when the OBS stream stops.
- [ingest] Fixed an issue where the data stream would not be sent after restarting rtmp feed to ingest.
- [ingest] Fixed an issue where ingest desyncs and disconnects during a long stream in 1080p.
- [ue4-sample] Fixed an issue causing the Cube Sample brightness to be too high.
- [unity-sample] Fixed an issue where audio fails to play when running at 60 FPS.
- [loadtester] Fixed an issue where the Load Tester tool utilizes too much CPU after running for a long time.
- [cluster-api] Improved the
/template_renderer
API by adding theGENVID_TEMPLATE_SANDBOX_PATH
environment variable, which points to the copy destination of the sources. - [cluster-api] Improved the
/template_renderer
API by adding acontent
field to render the template directly. - [cluster-api] Deprecated
/consultemplate
from the Cluster API in favor of/template_renderer
. - [cluster-api, bastion-api] Added
GENVID_TEMPLATE_TIMEOUT
to account for the time allowed for a template to render. The default is 2 seconds. It applies to all rendering calls, including configuration and job templates. - [consul] Fixed an issue where services can’t start when the number of concurrent connections from a single IP reaches the default maximum value.
Known Issues¶
Only one application with the Genvid MILE SDK integrated may run at a time if not launched using Nomad.¶
If an application using the Genvid MILE SDK is launched without Nomad, a default session name is assigned to it. This is useful when testing your application in the Unity engine, Unreal engine, or booting your application manually.
Currently, the Genvid MILE SDK is unable to support multiple applications launched this way unless you change the environment variable GENVID_SESSION_NAME to a unique name. You can also launch your applications via Nomad to avoid this issue.
We will fix this in a future release.
Azure reports requested instance size not available.¶
On Azure, we are using a compute instance type Standard_NV6 for the game machine. For some accounts, only the promo version of this instance type is available (Standard_NV6_Promo).
When doing the Terraform setup on the Azure module, you may encounter the error:
The requested size for resource 'XXXX-game-1' is currently not available in location 'XXXX'
As a workaround:
- Go to your Terraform Settings page.
- Change the instance_game_type to Standard_NV6_Promo.
- Go to the Commands page.
- Run Plan apply -> Apply again.
Streaming to an iOS device with the Standalone player is currently not functional.¶
Streaming to an iOS device (iPhones and iPads) with the Standalone player is currently not functional. This issue will be fixed in a future release.
When changing Availability Zones in Azure, resources need to be destroyed and rebuilt.¶
When changing AZs in Azure, deleting the public IP might fail due to it not being detached from the virtual machine. This is a bug in the Terraform provider. See the issue on the Hashicorp Github for more information.
As a workaround, manually detach the offending public IPs from the virtual machines in the Azure portal.
genvid-sdk upload-images-sdk
command fails to upload the Docker image on Azure Cloud.¶
Some Docker images can’t be uploaded to Azure Cloud using the
genvid-sdk upload-images-sdk
command due to large sizes. (You will get an
SSL error and a Max retries exceeded
message.)
As a workaround:
- Open the Azure UI.
- Upload your image manually.
- Run
genvid-sdk upload-images-sdk
again.
Required to manually remove the subdomain NS record when updating the subdomain on an existing AWS cluster.¶
When creating an AWS cluster using basic_cluster_alb_ssl
or
minimal_cluster_alb_ssl
, the domain and subdomain are provided.
When updating an existing cluster’s subdomain, the route53 NS record for the
previous subdomain needs to be removed manually from the main domain. This is
due to how the NS record is handled within our Terraform.
Unable to delete subnets in cluster basic_cluster_alb_ssl
using AWS.¶
When changing subnet_cidr_block_size
in basic_cluster_alb_ssl
,
decreasing the number of AZs, or reordering existing AZs,
the cluster will get stuck trying to delete the subnets.
Reapplying the configuration won’t resolve the issue.
As a workaround, delete and recreate the cluster.
Bastion cluster Settings page modal window not closing.¶
In the Bastion Settings page for a cluster, the Properties modal window for custom tags doesn’t close when you click outside of it.
As a workaround, click on Properties again to close the modal window.
Limitations¶
Loading configurations in the incorrect order can overwrite values.¶
Whether you’re using SSL on a cloud or a local cluster, if you load
youtube.sample.hcl
before loading the web sample, the web sample
will overwrite the value associated with the embed_ssl from the
web.hcl
file.
Large NTP time offsets will prevent the stream from playing.¶
If you encounter large NTP time offsets, your stream may stop playing. As a
workaround, make sure that the game machine is configured to update
its clock automatically. For local configurations, replace the AWS IP address
with pool.ntp.org
.
See the AWS configuration section for more information.
Studio can’t take inputs of the same control from multiple windows.¶
If Studio is opened in more than one browser window and inputs are received from different sources to one control, the final value will then bounce between the different inputs instead of updating it to the latest one. For example, in Audio Mixer Widget, if a user changes the slider of Master Gain to 20 db and another user then changes it to 0 db, the slider handle will bounce between 20 db and 0 db instead of being set to 0 db.
Sending input from multiple Studio windows to one control is not recommended until we resolve the issue.
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 SDK clamps framerates under 1.0.¶
To prevent issues, we raised the lower limit for the framerate to 1.0 for any stream. The SDK will clamp the value to 1.0 FPS if it’s less than 1.0.
Default value for an Azure resource group name may be too long.¶
If no values are provided for the variable resource_group_name
, the
value is set to a combination of {bastionid}-{clustername}
. This can yield
names longer than 64 characters, which is the maximum number of characters
allowed for an Azure resource group name.
To avoid this problem, always provide a value of 64 characters or less for the
variable resource_group_name
.
See the Azure Github for more information on Azure naming conventions.
AWS clusters subnet collision error.¶
If you reduce the subnet_cidr_block_size
and increase the number of AZs for
an AWS cluster at the same time, it causes a subnet collision error.
If you encounter this issue, reapply the configuration to resolve it.
No new tags on Azure disk when updating a cluster.¶
When applying new tags to Azure clusters, tags will not be applied to disk
unless the virtual machine instance that owns the disk gets recreated during
the apply
process.
As a workaround, delete and recreate the cluster to resolve the issue.
Cluster names are limited to 64 characters.¶
Cluster names are limited to 64 characters due to limitations with the file system in Windows. Things like the system’s username and cluster name factor into the max number of characters of the file directory.
While it is technically possible to go above 64 characters, the results can be unpredictable.
Longevity Issues whith Compositions in Standalone Mode in A Cloud Environment¶
Within a cloud environment, when you use Ingest in the composition of a standalone broadcast, the stream will crash if you after 8 hours.