You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在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

火山引擎 最新活动