![](https://github.com/apivideo/.github/blob/main/assets/apivideo_banner.png)
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.
Table of contents
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.6.0'
}
For Jetpack Compose, also add the following code in dependencies
:
dependencies {
implementation 'video.api:android-compose-player:1.6.0'
}
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 the official api.video documentation.
- Go to API Reference -> Videos -> List all videos
- Create a
get
request to the /videos
endpoint 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
ApiVideoExoPlayerView
to 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.Listener
interface:
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
ApiVideoPlayerController
in an your Activity/Fragment:
val playerView = findViewById<ApiVideoExoPlayerView>(R.id.playerView)
val playerController = ApiVideoPlayerController(
applicationContext,
VideoOptions(
"YOUR_VIDEO_ID",
VideoType.VOD
),
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:
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)
- Pass it to your player
For ExoPlayer:
val exoplayer = ExoPlayer.Builder(context).build()
exoplayer.addMediaSource(videoOptions)
exoplayer.setMediaSource(videoOptions)
For MediaPlayer:
val mediaPlayer = MediaPlayer()
mediaPlayer.setDataSource(context, videoOptions)
For VideoView:
val videoView = binding.videoView
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
FAQ
If you have any questions, ask us in the community or
use issues.