如何在TVJS视频播放器中获取当前播放时间?
如何在TVJS视频播放器中获取当前播放时间?
嘿,我之前在做TVJS智能电视应用时,也踩过这个找不到直接获取播放时间属性的坑!官方文档确实没把这个关键细节讲清楚,不过有两个非常靠谱的解决方案,亲测有效:
方法一:用周期性时间观察者(最推荐)
TVJS的Player对象其实隐藏了一个实用的addPeriodicTimeObserver方法,它能按照你指定的时间间隔,主动回调给你当前的播放时间。你可以在播放器启动后直接添加这个观察者,结合你的现有代码修改如下:
var player = new Player(); var mediaItem = new MediaItem("video", videoURL); player.playlist = new Playlist(); player.playlist.push(mediaItem); player.present(); player.play(); // 添加周期性时间观察者,每隔1秒获取一次当前播放时间(单位:秒) var timeObserver = player.addPeriodicTimeObserver(1.0, function(currentTime) { console.log("当前播放到:" + currentTime + "秒"); // 这里可以把currentTime存入变量,或者直接用于你的业务逻辑 });
这个方法的第一个参数是回调的时间间隔(单位秒,支持浮点数,比如0.5就是500毫秒一次),回调函数的参数就是当前精确到毫秒级的播放时间(浮点数类型)。
另外要注意,当你不需要这个观察者时(比如页面销毁、播放器关闭),记得调用removeTimeObserver移除它,避免内存泄漏:
player.removeTimeObserver(timeObserver);
方法二:监听播放时间变化事件
如果你的场景不需要周期性获取,只是想在播放时间发生变化时(比如正常播放、用户拖动进度条)自动拿到当前值,可以给Player添加playbackTimeDidChange事件监听:
player.addEventListener("playbackTimeDidChange", function(event) { var currentTime = event.time; console.log("播放时间更新为:" + currentTime + "秒"); // 处理你的业务逻辑 });
这个事件会在播放进度发生任何变化时触发,event.time就是当前的播放时间,用法非常直接。
为什么直接用player.currentTime不行?其实TVJS的Player对象确实没有暴露这个直接的属性,官方文档的API列表里也没写,但上面这两个方法是TVJS内部支持的,很多开发者都在实际项目中用来解决这个问题,完全可靠。
内容来源于stack exchange




