Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to retrieve video source from vimeo account to play in exoplayer android?

I have created Vimeo account for hosting my video and I want to retrieve my video from Vimeo to display in Exoplayer in my android app. this my code but it doesn't work to retrieve video source.

class VideoPlayerActivity : Activity() {

    private lateinit var player: SimpleExoPlayer
    private lateinit var mediaDataSourceFactory: DataSource.Factory

    private var trackSelector: DefaultTrackSelector? = null
    private var lastSeenTrackGroupArray: TrackGroupArray? = null
    private val videoTrackSelectionFactory = AdaptiveTrackSelection.Factory()
    private var currentWindow: Int = 0
    private var playbackPosition: Long = 0
    private val ivHideControllerButton: ImageView by lazy { findViewById<ImageView>(R.id.exo_controller) }

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

    private fun initializePlayer() {

        trackSelector = DefaultTrackSelector(videoTrackSelectionFactory)
        mediaDataSourceFactory = DefaultDataSourceFactory(this, Util.getUserAgent(this, "mediaPlayerSample"))

        val mediaSource = ExtractorMediaSource.Factory(mediaDataSourceFactory)
                .createMediaSource(Uri.parse("https://vimeo.com/354191291/e72a0cc122"))

        player = ExoPlayerFactory.newSimpleInstance(this, trackSelector)


        with(player) {
            prepare(mediaSource, false, false)
            playWhenReady = true
        }


        playerView.setShutterBackgroundColor(Color.TRANSPARENT)
        playerView.player = player
        playerView.requestFocus()
        ivHideControllerButton.setOnClickListener { playerView.hideController() }


        lastSeenTrackGroupArray = null
    }


    private fun updateStartPosition() {

        with(player) {
            playbackPosition = currentPosition
            currentWindow = currentWindowIndex
            playWhenReady = playWhenReady
        }
    }

    private fun releasePlayer() {
        updateStartPosition()
        player.release()
        trackSelector = null
    }

    public override fun onStart() {
        super.onStart()

        if (Util.SDK_INT > 23) initializePlayer()
    }

    public override fun onResume() {
        super.onResume()

        if (Util.SDK_INT <= 23) initializePlayer()
    }

    public override fun onPause() {
        super.onPause()

        if (Util.SDK_INT <= 23) releasePlayer()
    }

    public override fun onStop() {
        super.onStop()

        if (Util.SDK_INT > 23) releasePlayer()
    }

}

I have tried to retrieve Vimeo for this line val mediaSource = ExtractorMediaSource.Factory(mediaDataSourceFactory) .createMediaSource(Uri.parse("https://vimeo.com/354191291/e72a0cc122")) but it doesn't work for me.

like image 676
IT Edemy Avatar asked Aug 16 '19 12:08

IT Edemy


1 Answers

Call vimeo Api on this url "http://player.vimeo.com/video/vimeo-video-id-here/config" and on response to this call get URL of the video and then you can play it on Exoplayer

like image 90
Waqas ali Avatar answered Oct 21 '22 23:10

Waqas ali