我刚刚开始使用TVOS,并且想知道是否有人在TVOS / TVJS / TVML中解决了循环问题。我使用this tutorial创建了一个简单的界面来播放视频。我的皱纹是我想让这些视频以连续的无缝循环播放 - 基本上是移动的屏幕保护程序类型效果 - 请参阅art.chrisbaily.com的示例视频。
有一种简单的方法可以做到这一点,还是我需要构建某种事件监听器来手动循环?我希望这些视频非常高,视频可能介于1到3分钟之间。
答案 0 :(得分:2)
我也在寻找这个问题的答案。并且发现这是可能的唯一方法是创建一个事件监听器并将重复的媒体项添加到播放列表。但老实说,如果你按照你在帖子中列出的教程,这并不难。
所以代码就像
player.playlist = playlist;
player.playlist.push(mediaItem);
//Again push the same type of media item in playlist so now you have two of the same.
player.playlist.push(mediaItem);
player.present();
这将确保一旦您的第一个视频结束,第二个视频开始播放,这实际上是一个循环。然后对于第三个,然后使用“mediaItemWillChange”属性实现一个事件监听器。这将确保视频一旦结束,同一视频的新副本就会添加到播放列表中。
player.addEventListener("mediaItemWillChange", function(e) {
player.playlist.push(mediaItem);
});
在使用
启动播放器之前,先放置事件监听器player.present();
请注意,Apple的讨论区已经提出/提供了这类问题和想法。我只是接受了这个想法,并在我自己的项目中实现了它,现在知道它可行,我正在发布解决方案。我发现,如果我从播放列表中弹出第一个视频并添加,然后在下面的链接线程中提到的播放列表中推送一个新视频,我的视频就不会循环播放。以下是原始帖子的链接。
答案 1 :(得分:1)
您还可以在播放列表对象上设置repeatMode
player.playlist.repeatMode = 1;
答案 2 :(得分:0)
确实没有必要将第二个媒体项目推送到。只需听媒体到达终点,然后将寻道时间设置回零。这是代码。
播放媒体。
func playerItemDidReachEnd(notification: NSNotification) {
let item = notification.object as? AVPlayerItem
item?.seekToTime(kCMTimeZero)
}
再次播放
{{1}}