You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

tvML开发Player无法循环播放、mediaItemWillChange事件不触发求助

问题根因

mediaItemWillChange 事件的触发前提是播放列表中存在下一个待播放的媒体项,当播放器要从当前项切换到下一项时才会触发该事件。你的播放列表初始只有1个视频,播放完成后没有可切换的下一项,所以这个事件永远不会被触发。

可行解决方案

推荐监听mediaItemDidPlayToEndTime事件,该事件会在当前媒体播放完成时稳定触发,适配你的循环播放需求,修改后的代码如下:

App.onLaunch = function (options) {
  var video = new MediaItem('video', 'https://localhost/file_example_MP4_1920_18MG.mp4');

  var player = new Player();
  var playlist = new Playlist();
  player.playlist = playlist;
  player.playlist.push(video);

  var parser = new DOMParser();
  var alertString = '<?xml version="1.0" encoding="UTF-8" ?>'
      + '<document>'
      + '<alertTemplate>'
      + '</alertTemplate>'
      + '</document>';
  var alertDoc = parser.parseFromString(alertString, "application/xml");  

  player.interactiveOverlayDocument = alertDoc;
  player.interactiveOverlayDismissable = false;

  // 替换为mediaItemDidPlayToEndTime事件
  player.addEventListener("mediaItemDidPlayToEndTime", function (e) {
      // 播完后直接从头播放,也可以根据需求往playlist追加新的MediaItem
      player.currentTime = 0;
      player.play();
  });

  player.play();
}

额外优化建议

  • 如果需要无缝循环,也可以初始化播放列表时重复推入多个相同的MediaItem,结合mediaItemWillChange事件做后续追加,避免单条播完后的短暂停顿
  • 不要重复推入同一个MediaItem实例,新推入的项建议新建new MediaItem('video', '视频地址'),避免实例复用导致的播放异常

内容的提问来源于stack exchange,提问作者HBBob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:45:03