Skip to content

Commit

Permalink
Merge pull request #217 from xyoye/dev_4.2.0
Browse files Browse the repository at this point in the history
Dev 4.2.0
  • Loading branch information
xyoye committed Feb 6, 2024
2 parents e7990f5 + a8e1dcc commit 63d0cd3
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 20 deletions.
4 changes: 2 additions & 2 deletions buildSrc/src/main/java/Versions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ object Versions {
const val compileSdkVersion = 33
const val minSdkVersion = 21
const val targetSdkVersion = 29
const val versionCode = 57
const val versionName = "4.1.0"
const val versionCode = 58
const val versionName = "4.2.0"
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,15 @@ data class VideoTrackBean(
val selected: Boolean = false,

// 是否是禁用轨道
val disable: Boolean = false
val disable: Boolean = false,

// 是否是内部轨道
val internal: Boolean = false
) {

companion object {
fun internal(id: String, name: String, type: TrackType, selected: Boolean): VideoTrackBean {
return VideoTrackBean(id = id, name = name, type = type, selected = selected)
return VideoTrackBean(id = id, name = name, type = type, selected = selected, internal = true)
}

fun subtitle(subtitlePath: String): VideoTrackBean {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,27 +220,30 @@ class ExoVideoPlayer(private val mContext: Context) : AbstractVideoPlayer(), Pla
override fun getTracks(type: TrackType): List<VideoTrackBean> {
val exoTrackType = getExoTrackType(type) ?: return emptyList()

return exoplayer.currentTracks.groups
.filter { it.type == exoTrackType }
.flatMap {
mapByLength(it.length) { index ->
val trackFormat = it.getTrackFormat(index)
val name = trackNameProvider.getTrackName(trackFormat)
val selected = it.isTrackSelected(index)
VideoTrackBean.internal(index.toString(), name, type, selected)
}
return exoplayer.currentTracks.groups.flatMapIndexed { groupIndex: Int, group: Tracks.Group ->
if (group.type != exoTrackType) {
return@flatMapIndexed emptyList()
}
mapByLength(group.length) { trackIndex ->
val trackFormat = group.getTrackFormat(trackIndex)
val name = trackNameProvider.getTrackName(trackFormat)
val selected = group.isTrackSelected(trackIndex)
val id = "$groupIndex-$trackIndex"
VideoTrackBean.internal(id, name, type, selected)
}
}
}

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

val override = exoplayer.currentTracks.groups
.firstOrNull { it.type == exoTrackType }
?.mediaTrackGroup
?.let { TrackSelectionOverride(it, trackId) }
?: return
val trackIds = track.id?.split("-") ?: return
val groupIndex = trackIds.getOrNull(0)?.toInt() ?: return
val trackIndex = trackIds.getOrNull(1)?.toInt() ?: return

val override = exoplayer.currentTracks.groups.getOrNull(groupIndex)?.let {
TrackSelectionOverride(it.mediaTrackGroup, trackIndex)
} ?: return

mTrackSelector.parameters = TrackSelectionParameters.Builder(mContext)
.setTrackTypeDisabled(exoTrackType, false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ class ControlWrapper(
// 如果视频播放器支持添加轨道,则选中播放器轨道,并取消控制器中同类型轨道的选中
// 否则由支持轨道的控制器选中,并取消播放器中同类型轨道的选中
val trackType = track.type
if (mVideoPlayer.supportAddTrack(trackType)) {
if (track.internal || mVideoPlayer.supportAddTrack(trackType)) {
mVideoPlayer.selectTrack(track)
mSubtitleController.deselectTrack(trackType)
mDanmuController.deselectTrack(trackType)
Expand Down

0 comments on commit 63d0cd3

Please sign in to comment.