player_sdk
A Flutter plugin supports playing and streaming videos in a variety of media formats.
Features
xSecure playerxSupport FLV, DASH, HLS, MP3, MP4xSupport live, VODxPlay, pause, seek, smooth change quality (streaming HLS, DASH)xMute, unmute, change audio volumexGet event player, duration
Supported platforms
- Android
- iOS
Requirements
For iOS:
Enviroment:
- iOS 12.0+
- XCode 10.3+
- Cocoapods
Set up
Firstly, you need to have valid appKey, secretKey, playerId corresponse to your applicationId (for Android) / Bundle Identifier (for iOS) in build gradle/Info.plist file to initialize player.
NOTE: For iOS, you need to declare appkey, secretkey, playerid in the Info.plist file:
<key>appkey</key>
<string>YOUR_APPKEY</string>
<key>playerid</key>
<string>YOUR_PLAYER_ID</string>
<key>secretkey</key>
<string>YOUR_SECRET_KEY</string>
Implements the OnConfigListener interface to listen the response from SDK about authentication process, then call the getInitializeSDKState function:
final player_sdk = PlayerSdk();
player_sdk.getInitializeSDKState(appKey, secretKey, playerId, onConfigListener);
Make sure to listen all callbacks from the OnConfigListener interface.
- If init failed, you can log the error message, handle it and try again
- If init successfully, you now can use our player with your source video
void onPrepare();
void onInitFailed(String errorType, String message);
void onInitializing();
void onInitSuccessfully();
After initialize player successfully, you can create instance of PlayerController to set up player config and NativePlayerView to set up player view. Implements OnPlayerListener and OnPreparePlayer interfaces to listen events from SDK. For example:
// setup player
final playerController = PlayerController();
playerController.createNewInstancePlayer(onPreparePlayer);
playerController.enableLiveOffControl(true);
playerController.setTimeOffsetAdvertDefault(10);
playerController.setOnPlayerListener(onPlayerListener);
playerController.setOnPreparePlayer(onPreparePlayer);
playerController.setStartAutoPlay(true);
// setup player view
final nativePlayerView = NativePlayerView();
//create a widget that can contains player view, then call:
NativePlayerView(
onViewCreated: (viewId) async {
await playerController.setPlayerView(viewId);
}
)
Config and play video
Play video source
When authen player and set up player view are all done, prepare a supported video source in String type, then call these command lines to start to play video:
try{
playerController.setStartAutoPlay(true);
await playerController.setSourceVideo(currentSource);
playerController.build();
} catch (e, stackTrace) {
// handle exception
}
You can use the try/catch to catch exception which cause crashing your app.
Control player
Below is a table of function which can use to control player:
| Describe | Function | Return value | |
|---|---|---|---|
| 1 | pause video | playerController.pauseVideo(); | void |
| 2 | resume video | playerController.resumeVideo(); | void |
| 3 | mute video | playerController.muteVideo(); | void |
| 4 | unmute video | playerController.unMuteVideo(); | void |
| 5 | get duration of video | playerController.getVideoDuration(); | int |
| 6 | check if playing video | playerController.isPlaying(); | bool |
| 7 | get all quality video | playerController.getAllQualityVideo(); | List<String> |
| 8 | apply selected quality | playerController.applySelectedQualityVideo(String) | void |
| 9 | set video volume | playerController.setVideoVolume(double audioVol); | void |
| 10 | seek video | playerController.seekTo(int pos); | void |
Handle event
Player SDK push status and change of player immediately when player created, pause, stop, change config, quality,... So let implements the interface compatible to catch event and handle it.
@Override
public void onLogEventListener(String event) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// handle event
addLogText("LOG EVENT: : " + event.toString());
}
});
}