Я использую версию Exoplayer 2.7.2
и хочу перебрать MappedTrackInfo
, чтобы получить все доступные TrackGroupArray
видео DA SH. Но DefaultTrackSelector # getCurrentMappedTrackInfo возвращает ноль.
Вот мой код:
PlayerTrackSelector.kt :
class PlayerTrackSelector : TrackSelection.Factory {
override fun createTrackSelection(
group: TrackGroup?,
bandwidthMeter: BandwidthMeter?,
vararg tracks: Int
): TrackSelection {
return AdaptiveTrackSelection(
group!!, tracks,bandwidthMeter,
AdaptiveTrackSelection.DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_MS.toLong(),
AdaptiveTrackSelection.DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_MS.toLong(),
AdaptiveTrackSelection.DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_MS.toLong(),
AdaptiveTrackSelection.DEFAULT_BANDWIDTH_FRACTION,
AdaptiveTrackSelection.DEFAULT_BUFFERED_FRACTION_TO_LIVE_EDGE_FOR_QUALITY_INCREASE,
AdaptiveTrackSelection.DEFAULT_MIN_TIME_BETWEEN_BUFFER_REEVALUTATION_MS,
Clock.DEFAULT
)
}
}
MainActivity.kt
logTracks(DefualtTrackSelector(PlayerTrackSelector())) // This is called after Player#prepare
private fun logTracks(trackSelector: DefaultTrackSelector?) {
var trackGroupArray: TrackGroupArray? = null
val mappedTrackInfo = trackSelector!!.currentMappedTrackInfo
if(mappedTrackInfo != null) {
if (mappedTrackInfo!!.rendererCount != 0) {
for (i in 0 until mappedTrackInfo.rendererCount) {
if (mappedTrackInfo.getTrackGroups(i) != null) {
val tempTrackGroupArray = mappedTrackInfo.getTrackGroups(i)
if (tempTrackGroupArray.length != 0 && player!!.getRendererType(i) == C.TRACK_TYPE_VIDEO) {
trackGroupArray = tempTrackGroupArray
}
} else {
Log.d(TAG, "Null, MappedTrackInfo#getTrackGroups(index)")
}
}
for (i in 0 until trackGroupArray!!.length) {
val trackGroup = trackGroupArray.get(i)
for (j in 0 until trackGroup.length) {
val format = trackGroup.getFormat(j)
Log.d(TAG,"Height = ${format.height} GroupIndex = $i TrackIndex = $j")
}
}
} else {
Log.d(TAG, "Empty, MappedTrackInfo#renderCount")
}
}else{
Log.d(TAG, "Null, MappedTrackInfo") //This is what shows in logcat.
}
}
Я также пытался использовать разные MPD.
Информация:
1) Зависимости:
реализация 'ком. google. android .exoplayer: exoplayer: 2.7.2 "
внедрение" com.google. android .exoplayer: exoplayer-core: 2.10.5 "
реализация" com.google. android. exoplayer: exoplayer-da sh: 2.10.5 '
внедрение' com.google. android .exoplayer: exoplayer-ui: 2.10.5 '
2) URL: https://s3.amazonaws.com/_bc_dml/example-content/sintel_dash/sintel_vod.mpd