Skip to content

Commit 63d0cd3

Browse files
authored
Merge pull request #217 from xyoye/dev_4.2.0
Dev 4.2.0
2 parents e7990f5 + a8e1dcc commit 63d0cd3

File tree

4 files changed

+26
-20
lines changed

4 files changed

+26
-20
lines changed

buildSrc/src/main/java/Versions.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ object Versions {
33
const val compileSdkVersion = 33
44
const val minSdkVersion = 21
55
const val targetSdkVersion = 29
6-
const val versionCode = 57
7-
const val versionName = "4.1.0"
6+
const val versionCode = 58
7+
const val versionName = "4.2.0"
88
}

data_component/src/main/java/com/xyoye/data_component/bean/VideoTrackBean.kt

+5-2
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,15 @@ data class VideoTrackBean(
2424
val selected: Boolean = false,
2525

2626
// 是否是禁用轨道
27-
val disable: Boolean = false
27+
val disable: Boolean = false,
28+
29+
// 是否是内部轨道
30+
val internal: Boolean = false
2831
) {
2932

3033
companion object {
3134
fun internal(id: String, name: String, type: TrackType, selected: Boolean): VideoTrackBean {
32-
return VideoTrackBean(id = id, name = name, type = type, selected = selected)
35+
return VideoTrackBean(id = id, name = name, type = type, selected = selected, internal = true)
3336
}
3437

3538
fun subtitle(subtitlePath: String): VideoTrackBean {

player_component/src/main/java/com/xyoye/player/kernel/impl/exo/ExoVideoPlayer.kt

+18-15
Original file line numberDiff line numberDiff line change
@@ -220,27 +220,30 @@ class ExoVideoPlayer(private val mContext: Context) : AbstractVideoPlayer(), Pla
220220
override fun getTracks(type: TrackType): List<VideoTrackBean> {
221221
val exoTrackType = getExoTrackType(type) ?: return emptyList()
222222

223-
return exoplayer.currentTracks.groups
224-
.filter { it.type == exoTrackType }
225-
.flatMap {
226-
mapByLength(it.length) { index ->
227-
val trackFormat = it.getTrackFormat(index)
228-
val name = trackNameProvider.getTrackName(trackFormat)
229-
val selected = it.isTrackSelected(index)
230-
VideoTrackBean.internal(index.toString(), name, type, selected)
231-
}
223+
return exoplayer.currentTracks.groups.flatMapIndexed { groupIndex: Int, group: Tracks.Group ->
224+
if (group.type != exoTrackType) {
225+
return@flatMapIndexed emptyList()
226+
}
227+
mapByLength(group.length) { trackIndex ->
228+
val trackFormat = group.getTrackFormat(trackIndex)
229+
val name = trackNameProvider.getTrackName(trackFormat)
230+
val selected = group.isTrackSelected(trackIndex)
231+
val id = "$groupIndex-$trackIndex"
232+
VideoTrackBean.internal(id, name, type, selected)
232233
}
234+
}
233235
}
234236

235237
override fun selectTrack(track: VideoTrackBean) {
236238
val exoTrackType = getExoTrackType(track.type) ?: return
237-
val trackId = track.id?.toIntOrNull() ?: return
238239

239-
val override = exoplayer.currentTracks.groups
240-
.firstOrNull { it.type == exoTrackType }
241-
?.mediaTrackGroup
242-
?.let { TrackSelectionOverride(it, trackId) }
243-
?: return
240+
val trackIds = track.id?.split("-") ?: return
241+
val groupIndex = trackIds.getOrNull(0)?.toInt() ?: return
242+
val trackIndex = trackIds.getOrNull(1)?.toInt() ?: return
243+
244+
val override = exoplayer.currentTracks.groups.getOrNull(groupIndex)?.let {
245+
TrackSelectionOverride(it.mediaTrackGroup, trackIndex)
246+
} ?: return
244247

245248
mTrackSelector.parameters = TrackSelectionParameters.Builder(mContext)
246249
.setTrackTypeDisabled(exoTrackType, false)

player_component/src/main/java/com/xyoye/player/wrapper/ControlWrapper.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class ControlWrapper(
150150
// 如果视频播放器支持添加轨道,则选中播放器轨道,并取消控制器中同类型轨道的选中
151151
// 否则由支持轨道的控制器选中,并取消播放器中同类型轨道的选中
152152
val trackType = track.type
153-
if (mVideoPlayer.supportAddTrack(trackType)) {
153+
if (track.internal || mVideoPlayer.supportAddTrack(trackType)) {
154154
mVideoPlayer.selectTrack(track)
155155
mSubtitleController.deselectTrack(trackType)
156156
mDanmuController.deselectTrack(trackType)

0 commit comments

Comments
 (0)