Skip to main content
Version: 8.5.0

THEOlive support

High-quality real-time video streaming at scale for providers of sports betting, iGaming and interactive entertainment

For more info, visit THEOlive website.

Limitations

  • Only Flutter Web is supported.
  • Android and iOS will follow later. (You can check out our dedicated THEOlive Flutter SDK)

THEOlive playback

THEOlive playback is becoming crucial part of THEOplayer's playback engine instead of being available as a separate SDK.

The WEB support is already added, Android and iOS support as part of the THEOplayer SDK will come later. (Right now you can use the dedicated THEOlive Flutter SDK for Android and iOS support)

Setting a THEOlive source

player.source = SourceDescription(sources: [
TheoLiveSource(src: "2vqqekesftg9zuvxu9tdme6kl"),
]);

Instead of using a remote HTTPS url, you can just specify your channelID from the THEOlive Console and you can start the playback.

NOTE: your THEOplayer license has to contain the HESP feature to make it work. (HESP is the underlying technology of THEOlive).

Once the playback starts, you can listen to playback-specify events on THEOplayer.

Additional configuration options on THEOPlayerConfig

By setting a THEOliveConfiguration object on THEOplayerConfig you are able to specify extra configuration for THEOlive (e.g. a custom sessionId to follow the requests on the backend)

    player = THEOplayer(
theoPlayerConfig: THEOplayerConfig(
license: PLAYER_LICENSE,
theolive: TheoLiveConfiguration(externalSessionId: "mySessionID"),
),
onCreate: () {
print("player is created, ready to use");

});

Listening for THEOlive-specific events

    player.theoLive?.addEventListener(THEOliveApiEventTypes.PUBLICATIONLOADSTART, (e) {
print("PUBLICATIONLOADSTART");
});
player.theoLive?.addEventListener(THEOliveApiEventTypes.PUBLICATIONOFFLINE, (e) {
print("PUBLICATIONOFFLINE");
});
player.theoLive?.addEventListener(THEOliveApiEventTypes.PUBLICATIONLOADED, (e) {
print("PUBLICATIONLOADED");
});
player.theoLive?.addEventListener(THEOliveApiEventTypes.INTENTTOFALLBACK, (e) {
print("INTENTTOFALLBACK");
});
player.theoLive?.addEventListener(THEOliveApiEventTypes.ENTERBADNETWORKMODE, (e) {
print("ENTERBADNETWORKMODE");
});
player.theoLive?.addEventListener(THEOliveApiEventTypes.EXITBADNETWORKMODE, (e) {
print("EXITBADNETWORKMODE");
});

Migration from THEOlive Flutter SDK to THEOplayer Flutter SDK

setStateListener

From

theoLive.setStateListener(...)

to

player.theoLive.setStateListener(...)

loadChannel

From

theoLive.loadChannel("2vqqekesftg9zuvxu9tdme6kl")

to

player.source = SourceDescription(sources: [
TheoLiveSource(src: "2vqqekesftg9zuvxu9tdme6kl"),
]);

addEventListener

From

theoLive.addEventListener(this)

to THEOlive-related events

    player.theoLive?.addEventListener(THEOliveApiEventTypes.PUBLICATIONLOADSTART, (e) {
print("PUBLICATIONLOADSTART event");
});
player.theoLive?.addEventListener(THEOliveApiEventTypes.PUBLICATIONOFFLINE, (e) {
print("PUBLICATIONOFFLINE event");
});
player.theoLive?.addEventListener(THEOliveApiEventTypes.PUBLICATIONLOADED, (e) {
print("PUBLICATIONLOADED event");
});
player.theoLive?.addEventListener(THEOliveApiEventTypes.INTENTTOFALLBACK, (e) {
print("INTENTTOFALLBACK event");
});
player.theoLive?.addEventListener(THEOliveApiEventTypes.ENTERBADNETWORKMODE, (e) {
print("ENTERBADNETWORKMODE event");
});
player.theoLive?.addEventListener(THEOliveApiEventTypes.EXITBADNETWORKMODE, (e) {
print("EXITBADNETWORKMODE event");
});

and to playback-related events

    player.addEventListener(PlayerEventTypes.PLAY, (e) {
print("PLAY event");
});
player.addEventListener(PlayerEventTypes.PLAYING, (e) {
print("PLAYING event");
});
player.addEventListener(PlayerEventTypes.PAUSE, (e) {
print("PAUSE event");
}););

From

theoLive.play()

to

player.play()

Channel events

The channel related events:

ChannelLoadStart,
ChannelLoaded,
ChannelOffline

are renamed to Publication events

PublicationLoadStart,
PublicationLoaded,
PublicationOffline

Anything missing?

Please reach out to us!