Skip to content

Commit 01fdc85

Browse files
committed
changes MediaSource in exo player for live streaming to support HLS
1 parent 667a83c commit 01fdc85

File tree

2 files changed

+15
-17
lines changed

2 files changed

+15
-17
lines changed

app/src/main/java/de/stefanmedack/ccctv/ui/playback/ExoPlayerActivity.kt

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package de.stefanmedack.ccctv.ui.playback
22

3-
import android.content.Context
43
import android.content.Intent
5-
import android.content.pm.PackageManager
64
import android.os.Bundle
75
import android.support.v4.app.FragmentActivity
8-
import android.support.v4.os.BuildCompat
96
import de.stefanmedack.ccctv.R
107
import de.stefanmedack.ccctv.util.STREAM_URL
118
import info.metadude.java.library.brockman.models.Stream
9+
import info.metadude.java.library.brockman.models.Url.TYPE
1210

1311
class ExoPlayerActivity : FragmentActivity() {
1412

@@ -45,16 +43,10 @@ class ExoPlayerActivity : FragmentActivity() {
4543
}
4644

4745
companion object {
48-
fun supportsPictureInPicture(context: Context): Boolean {
49-
return BuildCompat.isAtLeastN() && context.packageManager.hasSystemFeature(
50-
PackageManager.FEATURE_PICTURE_IN_PICTURE)
51-
}
52-
5346
fun start(activity: FragmentActivity, item: Stream) {
5447
val intent = Intent(activity, ExoPlayerActivity::class.java)
55-
// val url = item.urls.find { it.type == TYPE.HLS }?.url ?: item.urls[0].url
56-
val url = "https://player.vimeo.com/external/244076670.m3u8?s=617848b2ce9b93d5052b21177d61a1ec7ff237ae&oauth2_token_id=925454046"
57-
// Timber.d(url)
48+
val url = item.urls.find { it.type == TYPE.HLS }?.url ?: item.urls[0].url
49+
// val url = "http://cdn.c3voc.de/hls/sX_native_hd.m3u8"
5850
intent.putExtra(STREAM_URL, url)
5951
activity.startActivity(intent)
6052
}

app/src/main/java/de/stefanmedack/ccctv/ui/playback/ExoPlayerAdapter.kt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@ import android.support.v17.leanback.media.SurfaceHolderGlueHost
99
import android.view.SurfaceHolder
1010
import com.google.android.exoplayer2.*
1111
import com.google.android.exoplayer2.C.StreamType
12-
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory
13-
import com.google.android.exoplayer2.source.ExtractorMediaSource
1412
import com.google.android.exoplayer2.source.MediaSource
1513
import com.google.android.exoplayer2.source.TrackGroupArray
14+
import com.google.android.exoplayer2.source.hls.HlsMediaSource
1615
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector
1716
import com.google.android.exoplayer2.trackselection.TrackSelectionArray
1817
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource
@@ -207,10 +206,17 @@ class ExoPlayerAdapter(context: Context) : PlayerAdapter(), Player.EventListener
207206
*/
208207
fun onCreateMediaSource(uri: Uri): MediaSource {
209208
val userAgent = Util.getUserAgent(context, "ExoPlayerAdapter")
210-
return ExtractorMediaSource(uri,
211-
DefaultHttpDataSourceFactory(userAgent, null, DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
212-
DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS, true),
213-
DefaultExtractorsFactory(), null, null)
209+
210+
return HlsMediaSource(
211+
uri,
212+
DefaultHttpDataSourceFactory(
213+
userAgent,
214+
null,
215+
DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
216+
DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS,
217+
true),
218+
null,
219+
null)
214220
}
215221

216222
private fun prepareMediaForPlaying() {

0 commit comments

Comments
 (0)