Live Stream Support (Flutter)
iOS
We support live stream on iOS by default. And you could also follow the instructions below to enhance the function of live stream.
Support low latency live stream
Installation
Add the following codes in the Podfile
of your iOS project.
pod 'FireworkVideoIVSSupport', '0.9.0'
Integration
In your iOS project, you need to call FireworkVideoSDK.enableIVSPlayback()
in application(:, didFinishLaunchingWithOptions:) -> Bool
method.
import FireworkVideo
import FireworkVideoIVSSupport
import fw_flutter_sdk
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FWFlutterSDK.initializeSDK(nil)
FireworkVideoSDK.enableIVSPlayback()
return true
}
Support low latency multi-host live stream
Add the following codes in the Podfile
of your iOS project.
pod 'FireworkVideoAgoraSupport', '0.6.0'
Integration
In your iOS project, you need to call FireworkVideoSDK.enableMultiHostPlayback()
in application(:, didFinishLaunchingWithOptions:) -> Bool
method.
import FireworkVideo
import FireworkVideoAgoraSupport
import fw_flutter_sdk
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FWFlutterSDK.initializeSDK(nil)
FireworkVideoSDK.enableMultiHostPlayback()
return true
}
Android
Unlike iOS, starting from V2.0.0, we don't support live stream on Android by default. But you could follow the instructions below to enable and enhance the function of live stream.
Add the MainApplication class if you don't have it
class MainApplication: FlutterApplication() {
}
Don't forget to add the configuration in the AndroidManifest.xml
file
<application
android:name=".MainApplication"
...
Support the single-host live stream
Step 1: add the library dependency inside the dependencies
block in the firework.gradle.
dependencies {
implementation "com.firework.external.livestream:singleHostPlayer:+"
...
}
configurations.all {
resolutionStrategy.eachDependency { details ->
...
if (details.requested.group == 'com.firework.external.livestream' && details.requested.name == 'singleHostPlayer') {
details.useVersion rootProject.ext.get("fwNativeVersion")
}
...
}
}
Step 2: add the following codes to the MainApplication
class
import com.firework.livestream.singlehost.SingleHostLivestreamPlayerInitializer
import com.fireworksdk.bridge.flutter.FWFlutterSDK
class MainApplication: FlutterApplication() {
override fun onCreate() {
super.onCreate()
// you need to add the module before the sdk init method
FWFlutterSDK.addLivestreamPlayerInitializer(SingleHostLivestreamPlayerInitializer())
FWFlutterSDK.init(this)
}
}
Support the multi-host live stream
Step 1: add the library dependency inside dependencies
block in the firework.gradle.
dependencies {
implementation "com.firework.external.livestream:multiHostPlayer:+"
...
}
configurations.all {
resolutionStrategy.eachDependency { details ->
...
if (details.requested.group == 'com.firework.external.livestream' && details.requested.name == 'multiHostPlayer') {
details.useVersion rootProject.ext.get("fwNativeVersion")
}
...
}
}
Step 2: add the following codes to the MainApplication
class
import com.firework.livestream.multihost.MultiHostLivestreamPlayerInitializer
import com.fireworksdk.bridge.flutter.FWFlutterSDK
class MainApplication: FlutterApplication() {
override fun onCreate() {
super.onCreate()
// you need to add the module before the sdk init method
FWFlutterSDK.addLivestreamPlayerInitializer(MultiHostLivestreamPlayerInitializer())
FWFlutterSDK.init(this)
}
}
Use new (modern) livestream player design
// Use new (modern) livestream player design
FireworkSDK.getInstance().livestreamPlayerDesignVersion =
LivestreamPlayerDesignVersion.v2;
Show brand logo
We show the more icon(three dots) in the top left corner of the player. You could use videoPlayerLogoConfiguration
to show the brand logo in the top left corner of the player. The sample codes are:
// Configure player configuration for VideoFeed widget
final videoPlayerConfiguration = VideoPlayerConfiguration();
videoPlayerConfiguration.videoPlayerLogoConfiguration =
VideoPlayerLogoConfiguration(
option: VideoPlayerLogoOption.creator,
encodedId: "your encoded channel id",
);
VideoFeed(
source: VideoFeedSource.playlist,
channel: "your encoded channel id",
playlist: "your encoded playlist id",
videoPlayerConfiguration: videoPlayerConfiguration,
);
// Configure player configuration for StoryBlock widget
final storyBlockConfiguration = StoryBlockConfiguration();
storyBlockConfiguration.videoPlayerLogoConfiguration =
VideoPlayerLogoConfiguration(
option: VideoPlayerLogoOption.creator,
encodedId: "your encoded channel id",
);
StoryBlock(
source: StoryBlockSource.playlist,
channel: "your encoded channel id",
playlist: "your encoded playlist id",
storyBlockConfiguration: storyBlockConfiguration,
);
// Configure player configuration for openVideoPlayer API
OpenVideoPlayerConfiguration openVideoPlayerConfiguration =
OpenVideoPlayerConfiguration();
openVideoPlayerConfiguration.videoPlayerLogoConfiguration =
VideoPlayerLogoConfiguration(
option: VideoPlayerLogoOption.creator,
encodedId: "your encoded channel id",
);
FireworkSDK.getInstance().openVideoPlayer(
url: "url",
config: openVideoPlayerConfiguration,
);
For encoded ids, please refer to the following link for more details. Generally, the encoded id for videoPlayerLogoConfiguration
is the same as the channel id you pass to widgets(such VideoFeed
, StoryBlock
)
Last updated
Was this helpful?