Genvid SDK 1.11.0¶
Welcome to Genvid Technologies SDK 1.11.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
- 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)
- 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:
- 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.
- SDK Manager to help handling multiple SDKs installation
Major changes in this version¶
Genvid Studio Update¶
You can now customize the Genvid Studio UI using our new dashboard
support. We also added new visual effects for dissolve and fade in/out
video transitions with linear
and accelerate-decelerate
timed
interpolators.
Experimental Support for Twitch¶
We added prototype support for Twitch and Twitch Extension. This implementation has several issues, including a lack of precision in the synchronization.
See “Streaming Services” section for more information.
New Unity Prefab Sample¶
Based on the feedback of our users, we decided to refresh our prefabs in the Unity Sample and removed the old ones. You should still be able to use the code from previous SDK but we hope that you will find the new approach more usable.
Minor changes and other fixes¶
- [sdk] Fixed a lock that could sometimes lead to long video submission times.
- [sdk] Fixed an exception when using the BGRA8 pixel format.
- [sdk] Some fixes related to the tutorial raw capture sample.
- [sdk c#] Fixed an error for converting a timecode value.
- [sdk c#] Added the method SubmitVideoData to perform raw video capture and dxswapchain capture without the GenvidPlugin.dll.
- [sdk c#] Downgraded the Newtonsoft.dll version to 8.0.3 to be compatible with the JSON .NET For Unity plugin.
- [sdk c#] Add AssemblyInfo for both
GenvidSDKCSharp
andGenvidRESTCSharp
DLL. - [web] Initialized the
IGenvidClient.clientSteamMS
in the constructor to avoid undefined variables. - [web] Fixed synchronization issue on genvid client.
onDraw
stopped to miss some data frames. - [web] Fixed an issue preventing the successive instantiation of GenvidClient using YouTube player.
- [web] Fixed an issue where a wrong timecode was sent in the onDraw callback.
- [cluster-api] Added help pages for the web API.
- [cluster-api] Fixed the events json schema not accepting the
$and
and$or
conditions. - [cluster-api] New API to start and stop all jobs.
/v1/jobs/startall
and/jobs/stopall
. - [cluster-api] Disallow edition of the jobs definitions if a job is running.
- [bastion-api] Fixed backend editable fields.
- [bastion-api] Fixed support for Terraform S3 backend when state is empty.
- [bastion-api] Added force parameter to
terraform/init
andterraform/importmodule
to circumvent runtime errors during initialization. - [bastion-ui] Added busy indicators when loading content.
- [toolbox]
genvid-sdk upload-images
andupload-images-sdk
configuration (option-u
) aren’t update correctly when used with custom bucket and path (-b
and-p
options). - [toolbox] New environment variable.
GENVID_BASTION_URL
can be used to connect to a remote bastion. - [toolbox] Method
genvid.toolbox.Clusters.repository_update_repository
is renamedrepository_update
to fit withgenvid-clusters repository-update
command. - [terraform] The scripts of the
game/aws
module now configure the services directory on theZ:
drive. - [terraform modules] There is a new variable
trusted_cidrs
for security groups to allow more than one trusted IP range. - [services] Fixed a timecode overflow when its value is bigger then 2**31.
- [services] Now the initial log level is set at the default log level
for the
compose
andgvencode
services. - [composed] Added log when a stream is ended.
- [composed] Added stream type info in the health check status.
- [gvencode] Added non stop to stream server filter. This fix a problem during inter-matches in the UT4 sample.
- [gvencode] Fixed TS field format in burn-in timecode.
- [gvencode] Fixed a video frame copy when their pitches are different.
- [rtmsp] Fixed a problem with a partial header read.
- [rootd] Added a missing field (SessionId) in the annotation stream
- [leafd] Added preliminary support for WSS on the leafd.
- [vault] Updated Vault to 0.9.1 to fix a memory leak in server.
- [ui] Updated Cluster-UI, Bastion-UI and studio web sites to angular5.
- [bugreport] Fixed a freeze when we create a bugreport and jobs run.
- [ue4 plugin] Fixed a problem in the video capture (swapchain mode). it constantly reset the texture and can potentially cause trouble with the video stream.
- [ue4 plugin] Added a command line option to override the
GenvidStreamer
tick rate. - [samples] Fixed the web scripts for building so they can run outside the installation directory.
- [tutorial] Outdated raw capture sample fixed.
- [ut4 sample] Removed unused variables in ut4_engage.ts (fixing a ts_lint error).
- [ut4 sample] Fixed a crash when the player state is null.
- [ut4 sample] Fixed a crash when a character has no capsule component.
- [ut4 sample] Filled new information in the Player info structure (Health, WeaponName, IsDead).
- [ut4 sample] Updated Player location error handling.
- [ut4 sample] Fixed a problem with the game data update rate.
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¶
When using the WASAPI audio auto-capture mode, every sound going through the machine’s default audio device gets 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). You can disable audio in 2 ways:
- Set
settings.encode.input.silent
totrue
in your configuration. (The default setting.)- Use our raw audio-capture, which is now the default setting in Unity.
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.
Standalone player with Firefox¶
The readable streams must be enabled in Firefox for standalone player
to work properly. You must enable dom.streams.enabled
and
javascript.options.streams
preferences from the about:config
URL.
Genvid Studio stops working when all streams are destroyed¶
When using Genvid Studio for an application that you are streaming with the Genvid SDK, if you are destroying and re-creating the audio/video stream, it will cause your video/audio stream to stop working until the stack is restarted.
Genvid Studio UI layout is not saved between sessions¶
The layout saved is associated with the IP and port of the current Genvid Studio instance. We are working on a future solution that will persist the layouts between sessions.