google / google/ExoPlayer

exo player in view pager2

Open
#7,313 4 comments 0 reactions 1 assignee Assigned to @icbaker View on GitHub
needs triage question
Dominant language
Java
Stars
21.9k
Forks
6k
PR merge metrics
No merged PRs in 30d

Description

I am getting issues like multiple players are working.
I tried to solve this issue
-by removing the player view if it exists and setting the player view to a frame layout in onBindViewHolder
- then I tried wit release player before setting player view
in both scenarios, I am failed to achieve the expected result

code:-
```
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.releasePlayer()
holder.initializeExoPlayer(mData[position].content)
}

//ViewHolder internal class
fun initializeExoPlayer(content: Content) {
videoSurfaceView = PlayerView(itemView.context)
videoSurfaceView!!.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_ZOOM)
bandwidthMeter = DefaultBandwidthMeter()
videoTrackSelectionFactory = AdaptiveTrackSelection.Factory(bandwidthMeter)
trackSelector = DefaultTrackSelector(videoTrackSelectionFactory)
videoPlayer =
ExoPlayerFactory.newSimpleInstance(itemView.context, trackSelector)
videoSurfaceView!!.useController = false
videoSurfaceView!!.player = videoPlayer
prepareExoPlayer(content)
playerListener()
}

fun prepareExoPlayer(urlDataSet: Content) {
val dataSourceFactory: DataSource.Factory = DefaultDataSourceFactory(
mContext, Util.getUserAgent(mContext, "playbacktestforfoodiee")
)

if (!urlDataSet.hls.isNullOrEmpty()) {
var Url: String? = null
var found=false
for (url in urlDataSet.hls) {
if (url.substringBefore(".m3u8", url).takeLast(3).contains("360")) {
Url = url
found=true
break
}
}
if (!found){
Url=urlDataSet.hls[0]
}
val hlsMediaSource: HlsMediaSource = HlsMediaSource.Factory(dataSourceFactory)
.setAllowChunklessPreparation(true)
.createMediaSource(Uri.parse(Url))
videoPlayer!!.prepare(hlsMediaSource)
videoPlayer!!.seekTo(playBackPosition)
videoPlayer!!.playWhenReady = true
addVideoView()

} else {
val videoSource: MediaSource = ExtractorMediaSource.Factory(dataSourceFactory)
.createMediaSource(Uri.parse(urlDataSet.mp4))
videoPlayer!!.prepare(videoSource)
videoPlayer!!.seekTo(playBackPosition)
videoPlayer!!.playWhenReady = true
addVideoView()
}
}
fun releasePlayer() {
if (videoPlayer != null) {
videoPlayer!!.release()
videoPlayer = null
}
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.