Introduction

You use the Hoolva SDK to build real-time media applications that can send and receive audio and video and allow content sharing. The Hoolva SDK provides builder tools that you use to build your own meeting applications.

Prerequisites

Using the Hoolva SDK requires the following:

  • The ability to program.
  • A Hoolva account with developer role. Request one here
  • For the majority of use cases, you also need the following:
    • Meeting Events – Emits events as and when it occurs. Different use cases can be build based on these events.
    • Meeting Session – Receives meeting and participant information from the server application, and uses that information to make media connections.

Concepts

The following terminology and concepts are central to understanding how to use the Hoolva SDK.

Meeting

An ephemeral resource identified by a unique Meeting ID. The Meeting ID is placed onto a group of media services that host the active meeting.

Participant

A meeting participant that is identified by a unique participant ID. Participants may freely join and leave meetings using a client application built with an Hoolva SDK client library.

Listener

A Listener is similar to an event listener that will trigger when a message is received. For convenience, we have grouped the Observer which throw similar messages. Eg, A participant listener will throw messages connected to the participants in the meeting.

Participant_id

A unique token is assigned to each participant. Participants use the join token to authenticate with the media service group.

System requirement

React Native v 0.69

Architecture

The following list describes how the different components of the Hoolva SDK architecture work together to support meetings and participants, audio, video, chat, and content sharing.

Meetings and participants

When the client application creates a new meeting the server will respond with the Meeting ID which the client can use to join. The client SDK will create a secure web socket connection with the server for exchanging messages. The client application will monitor the observer for new messages flowing. Each created participant is assigned a unique ID, an opaque secret key that our server application must securely transfer to the client authorized to join the meeting on behalf of a participant. Clients use a combination of secure WebSockets and Datagram Transport Layer Security (DTLS) to securely signal the media service group and to send and receive media to and from other participants through the media layer.

Audio

The media service mixes audio together from each participant and sends the mix to each recipient, after subtracting their own audio from the mix. The Hoolva SDKs sample audio at the highest rate supported by the device and browser, up to a maximum of 48kHz. We use the Opus codec to encode audio, with a default bitrate of 32kbps, which can be increased to up to 128kbps stereo and 64kbps mono.

Video

The media service acts as a Selective Forwarding Unit (SFU) using a publish and subscribe model. Each participant can publish one video source, up to a total of 500 simultaneous videos per meeting. The Hoolva SDK for JavaScript supports video resolutions up to 1280×720 at 30 frames per second without simulcast, and 15 frames per second with simulcast. The Hoolva SDK for iOS and Android support video resolutions up to 1280×720 and 15 frames per second, however the actual framerate and resolution is automatically managed by the Hoolva SDK.

When active, video simulcast sends each video stream in three different resolutions and bitrates. Clients which are bandwidth constrained automatically subscribe to the lower bitrate stream. Video encoding and decoding uses hardware acceleration where available to improve performance.

Data messages

In addition to audio and video content, meeting participants can send each other real-time data messages of up to 2 KB each. You can use data messages to implement custom meeting features such as whiteboarding, chat, real-time emoji reactions, and application-specific floor control signaling.

Content sharing

The client application can share audio and video content, such as screen captures or media files. Content sharing supports pre-recorded content video up to 1280×720 at 15 frames per second, and audio up to 48kHz at 64kbps. Screen capture for content sharing is supported up to 15 frames per second, but may be limited by the capabilities of the device and browser.

System requirements

The following system requirements apply to applications created with the Hoolva SDK.

BrowserSupported versionsNotes
Mozilla Firefox75 and later
Google Chrome78 and later
Chromium-based Edge79 and later
Chromium-based Electron7 and laterWith Chrome version 78 and later
Opera66 and later
Safari13 and later

Hoolva SDK for React Native

  • iOS version 13 and later
  • Android OS version 8 and later, ARM and ARM64 architecture

Service quotas

This table that lists the resources and quotas available for Hoolva SDK meetings.

Resource BrowserQuotaAdjustable
Active Meetings per account1000Yes
Maximum Number of participants per meeting (includes audio and video)500No
Content shares per meeting2No
API Rate10 requests per second (RPS) with a burst of 20 RPS.Yes

Integrating with a client library

Before you can build real-time meeting clients with the Hoolva SDK, you must integrate your client application with an Hoolva SDK client library. The following client libraries are available:

To learn how to integrate your client application with the Hoolva SDK, see the actions in the client library README.md. Use the demos to learn how to build specific media components for your application.