我正在使用 ExoPlayer 从服务器流式传输视频,我想在视频的特定秒内显示对话框,所以我想听 ExoPlayer 持续时间并获取当前播放的秒数,以及是否是我想要的时间停止播放器并显示对话框。 由于视频正在流式传输,我无法使用 Handler 获得第二个视频,因为如果用户互联网质量低或者用户更改播放器 SeekBar 等,视频可能会停止。 那么解决办法是什么呢? 谢谢
最佳答案
ExoPlayeer 目前不提供进度更新监听器 - 引用的原因是它会占用太多 CPU 来继续引发进度事件。请参阅此处关于 ExoPlayer 问题跟踪器的讨论:
相反,建议构建您自己的处理程序来轮询玩家并使用player.getCurrentPosition()查询当前位置。
这样您就可以控制检查的频率 - 例如每秒。
无论任何流媒体或缓冲问题如何,当您检查实际播放位置而不是下载状态时,这都将起作用。
如果您的问题是您正在寻找特定点,例如时间 = 20 秒,并且流式传输错误意味着实际播放从 18 秒跳到 22 秒,则解决此问题的常用方法是检查代码中的“>= 20 秒”。
顺便说一句,如果您不需要实际停止视频,而只想在视频中的给定时间戳处显示文本,那么您还可以使用单独的字幕或字幕轨道。
关于Android ExoPlayer 如何监听视频时长并在每一秒执行我们想要的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65039639/