api.video Android Player
api.video is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand & low latency live streaming features in your app.
Project description
Easily integrate a video player for videos from api.video in your Android application. The api.video Android player will help you to play the HLS video from api.video. It also generates analytics of your viewers usage .
Getting started
Installation
Gradle
In your module
build.gradle
, add the following code in
dependencies
:
dependencies {
implementation 'video.api:android-player:1.5.1'
}
For Jetpack Compose, also add the following code in
dependencies
:
dependencies {
implementation 'video.api:android-compose-player:1.5.1'
}
Retrieve your video Id
At this point, you must have uploaded a least one video to your account. If you haven't see how to upload a video . You'll need a video Id to use this component and play a video from api.video. To get yours, follow these steps:
-
Log into your account or create one here .
-
Copy your API key (sandbox or production if you are subscribed to one of our plan ).
-
Go to API Reference -> Videos -> List all videos
-
Create a
getrequest to the/videosendpoint based on the reference, using a tool like Postman. -
Copy the "videoId" value of one of elements of the API response.
Alternatively, you can find your video Id in the video details of your dashboard .
View-based usage
The api.video Android player comes with a view
ApiVideoExoPlayerView
to display the video and its
controller
ApiVideoPlayerController
.
-
Add a
ApiVideoExoPlayerViewto your Activity/Fragment layout:
<video.api.player.ApiVideoExoPlayerView
android:id="@+id/playerView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:show_controls="true"
app:show_subtitles="true" />
You can also use an ExoPlayer
PlayerView
or a
SurfaceView
according to your requirements.
See
Supported player views
for more details.
-
Implements the
ApiVideoPlayerController.Listenerinterface:
val playerControllerListener = object : ApiVideoPlayerController.Listener {
override fun onError(error: Exception) {
Log.e(TAG, "An error happened", error)
}
override fun onReady() {
Log.I(TAG, "Player is ready")
}
}
-
Instantiate the
ApiVideoPlayerControllerin an your Activity/Fragment:
val playerView = findViewById<ApiVideoExoPlayerView>(R.id.playerView)
val playerController = ApiVideoPlayerController(
applicationContext,
VideoOptions(
"YOUR_VIDEO_ID",
VideoType.VOD
), // For private video: VideoOptions("YOUR_VIDEO_ID", VideoType.VOD, "YOUR_PRIVATE_VIDEO_TOKEN")
playerListener,
playerView
)
-
Fullscreen video
If you require a fullscreen video. You will have to implement
the
ApiVideoExoPlayerView.FullScreenListener
interface.
To help you, you can use the
ApiVideoPlayerFullScreenController
that will handle the fullscreen.
As it implements the
ApiVideoExoPlayerView.FullScreenListener
interface, you can pass it to
your
ApiVideoExoPlayerView
instance.
playerView.fullScreenListener = ApiVideoExoPlayerView(
supportFragmentManager,
playerView,
playerController
)
Check out for the implementation in the Sample application .
Supported player views
The api.video Android player comes with a specific view
ApiVideoExoPlayerView
to display the video
and its controller. If you require a customization of this view such as changing a button color,...,
you can contact
us
.
Otherwise, in the
ApiVideoPlayerController
, you can also use the following views:
-
PlayerView: ExoPlayer views frommedia3
The
SurfaceView
and the
Surface
require more work to be used.
Jetpack compose usage
The api.video Android player comes with a composable
ApiVideoPlayer
to display the video from a
compose application. In your application, you can add:
ApiVideoPlayer(
videoOptions = VideoOptions("YOUR_VIDEO_ID", VideoType.VOD),
)
Play your api.video video with ExoPlayer, MediaPlayer and VideoView
If you want to use the ExoPlayer directly, you can use the api.video Android extensions:
-
Create a video
val videoOptions = VideoOptions("YOUR_VIDEO_ID", VideoType.VOD)
// For private video: VideoOptions("YOUR_VIDEO_ID", VideoType.VOD, "YOUR_PRIVATE_VIDEO_TOKEN")
-
Pass it to your player
For ExoPlayer:
val exoplayer = ExoPlayer.Builder(context).build() // You already have that in your code exoplayer.addMediaSource(videoOptions) // Or exoplayer.setMediaSource(videoOptions)
For MediaPlayer:
val mediaPlayer = MediaPlayer() // You already have that in your code mediaPlayer.setDataSource(context, videoOptions)
For VideoView:
val videoView = binding.videoView // You already have that in your code videoView.setVideo(videoOptions)
Sample application
A demo application demonstrates how to use player.
See
/examples
folder.
On the first run, you will have to set your video Id:
-
Click on the FloatingActionButton -> Settings
-
Replace the video Id with your own video Id
Documentation
Dependencies
We are using external library
| Plugin | README |
|---|---|
| Exoplayer | README.md |
FAQ
If you have any questions, use issues .