Searching...

Android uploader

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-video-uploader</artifactId>
  <version>1.3.2</version>
  <scope>compile</scope>
</dependency>

Gradle users

Add this dependency to your project's build file:

implementation "video.api:android-video-uploader:1.3.2"

Others

At first generate the JAR by executing:

mvn clean package

Then manually install the following JARs:

  • target/android-video-uploader-1.3.2.jar

  • target/lib/*.jar

Code sample

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

// If you want to upload a video with an upload token (uploadWithUploadToken):
VideosApiStore.initialize()
// if you rather like to use the sandbox environment:
// VideosApiStore.initialize(environment = Environment.SANDBOX)
// If you rather like to upload with your "YOUR_API_KEY" (upload)
// VideosApiStore.initialize("YOUR_API_KEY", Environment.PRODUCTION)
// if you rather like to use the sandbox environment:
// VideosApiStore.initialize("YOU_SANDBOX_API_KEY", Environment.SANDBOX)


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

val workManager = WorkManager.getInstance(context) // WorkManager comes from package "androidx.work:work-runtime"
workManager.uploadWithUploadToken("MY_UPLOAD_TOKEN", myVideoFile) // Dispatch the upload with the WorkManager
// if your rather like to use your API key:
// workManager.upload("MY_VIDEO_ID", myVideoFile)

Example

Examples that demonstrate how to use the API is provided in folder examples/ .

Upload methods

To upload a video, you have 3 differents methods:

  • WorkManager : preferred method: Upload with Android WorkManager API. It supports progress notifications. Directly use, WorkManager extensions. See example for more details.

  • UploadService : Upload with an Android Service. It supports progress notifications. You have to extend the UploadService and register it in your AndroidManifest.xml . See example for more details.

  • Direct call with ApiClient : 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.

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

VideosApi

Retrieve an instance of VideosApi:

val videosApi = VideosApi("YOUR_API_KEY", Environment.PRODUCTION)

Endpoints

Method HTTP request Description
upload POST /videos/{videoId}/source Upload a video
uploadWithUploadToken POST /upload Upload with an delegated upload token

Documentation for Models

Documentation for Authorization

API key

Most endpoints required to be authenticated using the API key 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 key when instantiating the ApiClient :

val videosApi = VideosApi("YOUR_API_KEY", Environment.PRODUCTION)

Public endpoints

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

val videosApi = VideosApi()

Recommendation

It's recommended to create an instance of ApiClient per thread in a multithreaded environment to avoid any potential issues. For direct call with ApiClient : 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. Alternatively, APIs come with an asynchronous counterpart ( createAsync for create ) except for the upload endpoint.