如何解决Exoplayer - 检测 HLS 的比特率变化
嗨,我正在尝试检测 HLS 流的比特率何时发生变化
我创建了一个自定义带宽事件监听器类,它只记录比特率变化
class CustomBandwidthListener : BandwidthMeter.EventListener {
private val tag = "CustomBandwidthListener"
private var currentBitrate: Long = -1
override fun onBandwidthSample(elapseMs: Int,bytes: Long,bitrate: Long) {
Log.d(tag,"new bandwidth sample bitrate is $bitrate")
if (currentBitrate != bitrate) {
Log.d(tag,"The current bitrate changed from $currentBitrate to $bitrate")
currentBitrate = bitrate
}
}
}
然后我就这样称呼它
private lateinit var exoPlayer: SimpleExoPlayer
...
private fun initializePlayer() {
val bandwidthMeter = DefaultBandwidthMeter.Builder()
.setEventListener(Handler(),CustomBandwidthListener())
.build()
val adaptiveTrackSelection = AdaptiveTrackSelection.Factory(bandwidthMeter)
val trackSelector = DefaultTrackSelector(adaptiveTrackSelection)
val loadControl = CustomLoadControl.getCustomLoadControl()
val renderersFactory = DefaultRenderersFactory(context)
exoPlayer = ExoPlayerFactory.newSimpleInstance(renderersFactory,trackSelector,loadControl)
exoPlayer.addAnalyticsListener(EventLogger(trackSelector))
exoPlayer.addListener(CustomEventListener())
}
我添加了一个自定义播放事件监听器(initializePlayer 方法的最后一行),它运行良好,但我的 customBandwithListener 没有被命中。我目前使用的是 ExoPlayer 2.8.4。有谁知道我做错了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com(将#修改为@)