The official Android client library for api.video

Overview

badge   badge   badge

api.video Android client

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

api.video's Android client streamlines the coding process. Chunking files is handled for you, as is pagination and refreshing your tokens.

Getting started

Requirements

Building the API client library requires:

  1. Java 1.8+
  2. Maven/Gradle

Installation

Maven users

Add this dependency to your project's POM:

<dependency>
  <groupId>video.api</groupId>
  <artifactId>android-api-client</artifactId>
  <version>0.1.0</version>
  <scope>compile</scope>
</dependency>

Gradle users

Add this dependency to your project's build file:

implementation "video.api:android-api-client:0.1.0"

Others

At first generate the JAR by executing:

mvn clean package

Then manually install the following JARs:

  • target/android-api-client-0.1.0.jar
  • target/lib/*.jar

Code sample

Please follow the installation instruction and execute the following Kotlin code:

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import video.api.client.ApiVideoClient
import video.api.client.api.ApiException
import video.api.client.api.models.*
import java.io.File
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors

class MainActivity : AppCompatActivity() {
    private val executor: ExecutorService = Executors.newSingleThreadExecutor()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onResume() {
        super.onResume()

        val apiVideoClient = ApiVideoClient("YOUR_API_TOKEN")
        // if you rather like to use the sandbox environment:
        // val apiVideoClient = ApiVideoClient("YOU_SANDBOX_API_TOKEN", Environment.SANDBOX)

        val myVideoFile = File("my-video.mp4")

        /**
         * Notice: you must not call API from the UI/main thread. Dispatch with Thread, Executors or Kotlin coroutines.
         */
        executor.execute {
            try {
                var video = apiVideoClient.videos().create(VideoCreationPayload().title("my video"))
                video = apiVideoClient.videos().upload(video.videoId, myVideoFile)
                Log.i("Example", "$video")
            } catch (e: ApiException) {
                Log.e("Example", "Exception when calling VideoApi")
                e.message?.let {
                    Log.e("Example", "Reason: ${it}")
                }
            }
        }
    }
}

Example

An example that demonstrates how to use the API is provided in folder example/.

Permissions

You have to add the following permissions in your AndroidManifest.xml:

    <uses-permission android:name="android.permission.INTERNET" />
<!-- Application requires android.permission.READ_EXTERNAL_STORAGE to upload videos` -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Your application also has to dynamically request the android.permission.READ_EXTERNAL_STORAGE permission to upload videos.

Documentation

API Endpoints

All URIs are relative to https://ws.api.video

CaptionsApi

Retrieve an instance of CaptionsApi:

val client = ApiVideoClient("YOUR_API_TOKEN")
val captions = client.captions()

Endpoints

Method HTTP request Description
delete DELETE /videos/{videoId}/captions/{language} Delete a caption
list GET /videos/{videoId}/captions List video captions
get GET /videos/{videoId}/captions/{language} Show a caption
update PATCH /videos/{videoId}/captions/{language} Update caption
upload POST /videos/{videoId}/captions/{language} Upload a caption

ChaptersApi

Retrieve an instance of ChaptersApi:

val client = ApiVideoClient("YOUR_API_TOKEN")
val chapters = client.chapters()

Endpoints

Method HTTP request Description
delete DELETE /videos/{videoId}/chapters/{language} Delete a chapter
list GET /videos/{videoId}/chapters List video chapters
get GET /videos/{videoId}/chapters/{language} Show a chapter
upload POST /videos/{videoId}/chapters/{language} Upload a chapter

LiveStreamsApi

Retrieve an instance of LiveStreamsApi:

val client = ApiVideoClient("YOUR_API_TOKEN")
val liveStreams = client.liveStreams()

Endpoints

Method HTTP request Description
delete DELETE /live-streams/{liveStreamId} Delete a live stream
deleteThumbnail DELETE /live-streams/{liveStreamId}/thumbnail Delete a thumbnail
list GET /live-streams List all live streams
get GET /live-streams/{liveStreamId} Show live stream
update PATCH /live-streams/{liveStreamId} Update a live stream
create POST /live-streams Create live stream
uploadThumbnail POST /live-streams/{liveStreamId}/thumbnail Upload a thumbnail

PlayerThemesApi

Retrieve an instance of PlayerThemesApi:

val client = ApiVideoClient("YOUR_API_TOKEN")
val playerThemes = client.playerThemes()

Endpoints

Method HTTP request Description
delete DELETE /players/{playerId} Delete a player
deleteLogo DELETE /players/{playerId}/logo Delete logo
list GET /players List all players
get GET /players/{playerId} Show a player
update PATCH /players/{playerId} Update a player
create POST /players Create a player
uploadLogo POST /players/{playerId}/logo Upload a logo

RawStatisticsApi

Retrieve an instance of RawStatisticsApi:

val client = ApiVideoClient("YOUR_API_TOKEN")
val rawStatistics = client.rawStatistics()

Endpoints

Method HTTP request Description
listLiveStreamSessions GET /analytics/live-streams/{liveStreamId} List live stream player sessions
listSessionEvents GET /analytics/sessions/{sessionId}/events List player session events
listVideoSessions GET /analytics/videos/{videoId} List video player sessions

UploadTokensApi

Retrieve an instance of UploadTokensApi:

val client = ApiVideoClient("YOUR_API_TOKEN")
val uploadTokens = client.uploadTokens()

Endpoints

Method HTTP request Description
deleteToken DELETE /upload-tokens/{uploadToken} Delete an upload token
list GET /upload-tokens List all active upload tokens.
getToken GET /upload-tokens/{uploadToken} Show upload token
createToken POST /upload-tokens Generate an upload token

VideosApi

Retrieve an instance of VideosApi:

val client = ApiVideoClient("YOUR_API_TOKEN")
val videos = client.videos()

Endpoints

Method HTTP request Description
delete DELETE /videos/{videoId} Delete a video
get GET /videos/{videoId} Show a video
getStatus GET /videos/{videoId}/status Show video status
list GET /videos List all videos
update PATCH /videos/{videoId} Update a video
pickThumbnail PATCH /videos/{videoId}/thumbnail Pick a thumbnail
uploadWithUploadToken POST /upload Upload with an upload token
create POST /videos Create a video
upload POST /videos/{videoId}/source Upload a video
uploadThumbnail POST /videos/{videoId}/thumbnail Upload a thumbnail

WebhooksApi

Retrieve an instance of WebhooksApi:

val client = ApiVideoClient("YOUR_API_TOKEN")
val webhooks = client.webhooks()

Endpoints

Method HTTP request Description
delete DELETE /webhooks/{webhookId} Delete a Webhook
get GET /webhooks/{webhookId} Show Webhook details
list GET /webhooks List all webhooks
create POST /webhooks Create Webhook

Documentation for Models

Documentation for Authorization

API token

Most endpoints required to be authenticated using the API token mechanism described in our documentation. The access token generation mechanism is automatically handled by the client. All you have to do is provide an API token when instantiating the ApiVideoClient:

val client = ApiVideoClient("YOUR_API_TOKEN")

Public endpoints

Some endpoints don't require authentication. These one can be called with a client instantiated without API token:

val client = ApiVideoClient()

Recommendation

It's recommended to create an instance of ApiClient per thread in a multithreaded environment to avoid any potential issues. Do not call API from the main thread, otherwise you will get a android.os.NetworkOnMainThreadException. Dispatch API calls with Thread, Executors or Kotlin coroutine to avoid this.

Have you gotten use from this API client?

Please take a moment to leave a star on the client โญ

This helps other users to find the clients and also helps us understand which clients are most popular. Thank you!

Contribution

Since this API client is generated from an OpenAPI description, we cannot accept pull requests made directly to the repository. If you want to contribute, you can open a pull request on the repository of our client generator. Otherwise, you can also simply open an issue detailing your need on this repository.

Comments
Releases(v1.2.3)
Owner
api.video
Lightning fast video APIs for integrating, scaling, and managing on-demand & low latency live streaming features in your app.
api.video
Free p2p cdn android github sdk to reduce video streaming costs of live and on demand video using webrtc by upto 90% and improve scalability by 6x - ๐Ÿš€ Vadootv ๐Ÿš€

Android p2p cdn sdk to distribute load and reduce costs(https://peervadoo.com) Vadootv is a p2p sdk integration to reduce your video streaming costs b

Vadootv 40 Oct 5, 2022
Yet Another Video Player (or YAVP) is a Video Player for Android that is based on Googles ExoPlayer.

Yet Another Video Player Yet Another Video Player (or YAVP) is a Video Player for Android that is based on Googles ExoPlayer. Who Is YAVP For? First o

null 62 Dec 29, 2022
Compose-video-player - Video player for Android Compose powered by ExoPlayer

Compose Video Player Video player for Android Compose powered by ExoPlayer. Addi

Juan Pablo Herrera 22 Dec 13, 2022
Video Transcoder is an application which uses the open source program FFmpeg to transcode video files from one format to another.

Video Transcoder Do you want to encode videos on your phone into different formats, trim videos, or extract audio? Are you looking for a free solution

Branden Archer 358 Dec 30, 2022
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.

api.video 9 Dec 15, 2022
Android Application that plays music through a Spotify API based on a user's current location found through Google Maps API and also checking Google Weather API.

GeoStereo Android Application that plays music through a Spotify API based on a user's current location found through Google Maps API and also checkin

Jonah Douglas 1 Jun 16, 2022
An easy to use Instagram Video Downloader library for android apps.

Instagram-Video-Downloader-Library An easy to use library for directly download videos from ig reels, igtv. Implementation Step 1. Add the JitPack rep

Abhay 16 Dec 7, 2022
Library for Instagram Image/Video Downloader for Android

Insta Downloader Simple Instagram Image Video Downloader Library for Android Implementation Step 1. Add the JitPack repository to your build file Add

kannikesh Prabhu 2 Mar 12, 2022
mpv-android is a video player for Android based on libmpv.

mpv-android is a video player for Android based on libmpv.

null 1.1k Jan 6, 2023
Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.

ijkplayer Platform Build Status Android iOS Video player based on ffplay Download Android: Gradle # required allprojects { repositories {

bilibili 31k Jan 3, 2023
Custom Android view with video player, loader and placeholder image

VideoPlayerView Custom Android view with video player, loader and placeholder image. To stay up-to-date with news about the library Usage Here is an e

Marcin Moskaล‚a 89 Nov 18, 2022
Android Video Crop

?? Before using this library, read information below ?? This library is not more supported. If you want to add new feature or fix a bug, grab source

Dmytro Danylyk 390 Jan 2, 2023
NOVA is an open source video player for Android

NOVA: opeN sOurce Video plAyer Overview NOVA is an open source video player for Android. It consists in a fork of the original Archos Video Player Com

NOVA 876 Jan 2, 2023
Simple and lightweight, yet polished and powerful Android video player based on ExoPlayer

Just (Video) Player Android video player based on ExoPlayer It uses ExoPlayer's extension-ffmpeg with all its audio formats enabled (it can handle eve

Marcel Dopita 677 Dec 28, 2022
Google's ML-Kit-Vision demo (android) for pre encoded video.

Google's ML-Kit-Vision demo (android) for pre encoded video. Demos for camera preview and still image are also included. This project is actually extension of Google's own sample.

null 17 Dec 29, 2022
Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.

ijkplayer Platform Build Status Android iOS Video player based on ffplay Download Android: Gradle # required allprojects { repositories {

bilibili 29.8k Dec 22, 2021
Inno Video Converter For Android

Inno Video Converter Android An simple way to manipulating your video on Android

MNC Innovation Center 2 Apr 13, 2022
Video/Audio Downloader for Android, written with Jetpack Compose.

Seal Video/Audio Downloader for Android, written with Jetpack Compose.

junkfood 2.1k Dec 29, 2022
On device extracting images from videos - creating video from images.

AndroidVideoTranscoder Surprisingly fast on device video transcoding. Features extracting images from video either ffmpeg or mediacodec creating video

null 29 Dec 20, 2022