A simple library for parsing and playing links from YouTube, YouTube Music, Vimeo and Rutube and others in the WebView without the need to connect data API services.

Programming language: Kotlin
License: Apache License 2.0
Tags: Kotlin     Android     Video     Android-library     Oembed     Video Hosting    
Latest version: v0.2.1

Android Oembed Video alternatives and similar packages

Based on the "Video" category.
Alternatively, view Android Oembed Video alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Android Oembed Video or a related project?

Add another 'Video' Package


Android Oembed Video

A simple library for parsing and playing links from YouTube, YouTube Music, Vimeo and Rutube and others in the WebView without the need to connect data API services.

Release Platform Languages

Supported Video Hostings

  • YouTube

  • YouTube Music

  • Vimeo

  • Rutube

  • Facebook (the thumbnail is not available due to api restrictions)

  • Dailymotion

  • Wistia

  • Vzaar

  • Hulu

  • Ustream

  • Ted Talks

  • Coub

  • Streamable


Add it in your root build.gradle at the end of repositories:

allprojects {
        repositories {
                maven { url 'https://jitpack.io' }

Add the dependency

dependencies {
        implementation 'com.github.TalbotGooday:Android-Oembed-Video:Tag'

Work Flow

  1. Create your OkHttpClient and add it to the VideoService.Builder ```kotlin val okHttpClient = OkHttpClient.Builder() .connectTimeout(15, TimeUnit.SECONDS) .readTimeout(15, TimeUnit.SECONDS) .build()

val videoService = VideoService.build{ with(this@MainActivity) httpClient(okHttpClient) enableCache(true) enableLog(true) }

2. Get VideoPreviewModel
    onSuccess = { video ->
        //handle a video model
    onError = { url, error ->
        //handle an error
  1. Enable/disable caching kotlin val videoService = VideoService.build { enableCache(true) }
  2. Enable/disable logging kotlin val videoService = VideoService.build { enableLog(BuildConfig.DEBUG) } ## Play Video from VideoPreviewModel The BottomVideoController allows to run any oembed video in WebView. ```kotlin val host = model.videoHosting val linkToPlay = model.linkToPlay val title = model.videoTitle val initUrl = model.url

BottomVideoController.build(this) { setListener(object : BottomVideoController.Listener() { override fun openLinkIn(link: String) { openLink(link) } override fun copyLink(link: String) { copyLinkToClipboard(link) } }) setHostText(host) setPlayLink(linkToPlay) setSize(model.width, model.height) setTitle(title) setVideoUrl(initUrl) setProgressView(TextView(this@MainActivity).apply { text = "Loading" }) show() }

## How to add some other video hosting
1. Add the `Gson` library to your project
2. Create the `Gson` data class from the embed response of the video service. Make this class a subclass of `VideoInfoModel`, implement the` toPreview` function, and override it:
 override fun toPreview(url: String?, linkToPlay: String, hostingName: String, videoId: String): VideoPreviewModel {
        return VideoPreviewModel(url, linkToPlay, hostingName, videoId).apply {
            this.thumbnailUrl = [email protected]
            this.videoTitle = [email protected]
            this.width = [email protected]()
            this.height = [email protected]()
  1. Create a subclass of VideoInfoModel, implement members and override them:

    class UltimediaVideoInfoModel: VideoInfoModel<UltimediaResponse>() {
    override val baseUrl: String
        get() = "https://www.ultimedia.com"
    override val pattern: String
        get() = "(?:http[s]?:\\/\\/)?(?:www)?\\.?ultimedia\\.com\\/(?:deliver|default|api)\\/.*\\/([_a-zA-Z0-9]+)\\S*"
    override val idPattern: String
        get() = pattern //or some another video id search pattern
    override val type: Class<UltimediaResponse>
        get() = UltimediaResponse::class.java
    override val hostingName: String
        get() = "Ultimedia"
    override fun getInfoUrl(incomingUrl: String?): String? {
        return "$baseUrl/api/search/oembed?$FORMAT=$FORMAT_JSON&$URL=$incomingUrl"
    override fun getPlayLink(videoId: String): String {
        return "https://www.ultimedia.com/deliver/generic/iframe/src/$videoId/"

    Note: By default, the index of the Regex group should be 1. If your idPattern does not fulfill this condition, then override the parseVideoId method:

    override fun parseVideoId(url: String?): String? {
    url ?: return null
    return idPattern.toRegex().find(url)?.groups?.get(**someIndex**)?.value


This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details

*Note that all licence references and agreements mentioned in the Android Oembed Video README section above are relevant to that project's source code only.