【问题标题】:jwplayer 6 seeking on element in playlist doesn't workjwplayer 6 在播放列表中寻找元素不起作用
【发布时间】:2023-04-01 14:48:01
【问题描述】:

我们正在使用外部清理器(不是默认搜索栏的 UI 元素)进行搜索(通过 jquery ui draggable),并且它没有在应该更新 jwplayer 时更新。

我们的代码概要:

$('#scrubber').draggable({

    // ...

    stop: function (event, ui) {

        $('#scrubber').draggable('enable');

        var intSecFromEnd,
            intSeek,
            intTotalTime = 0,
            intScrubPosition = ui.position.left,
            intScrubTime = intScrubPosition;

        // Find which video in the playlist to use
        $.each(playlist, function (i, obj) {

            intTotalTime += parseInt(obj.duration);

            if (intTotalTime > (intScrubTime)) {

                intSecFromEnd = intTotalTime - parseInt(intScrubTime);
                intSeek = Math.floor((parseInt(obj.duration) - intSecFromEnd));

                jwplayer('videoPlayer').load(playlist);
                jwplayer('videoPlayer').playlistItem(i);
                jwplayer('videoPlayer').seek(intSeek);
                jwplayer('videoPlayer').pause();


                /*
                    Play the video for 1 second to refresh the video player, so it is correctly displaying the current point in the video
                    Does not work either
                */
                // setTimeout(function () {
                //     jwplayer('videoPlayer').pause();
                // }, 1000);

                return false;
            }
        });
    }
});

你会注意到关键位:

jwplayer('videoPlayer').load(playlist);
jwplayer('videoPlayer').playlistItem(i);
jwplayer('videoPlayer').seek(intSeek);
jwplayer('videoPlayer').pause();

当我用整数值将它直接放入控制台时,intSeek 是它应该完全正常工作,所以我很困惑可能断开连接的位置。

变体(仅适用于播放列表中的一项)

这仅适用于播放列表的第一个成员,因为 seek() 函数默认为播放列表中的元素 0

jwplayer('videoPlayer').load(playlist);
jwplayer('videoPlayer').seek(intSeek);
jwplayer('videoPlayer').pause();

当然,jwplayer('videoPlayer').playlistItem(i) 会在我们想要的索引处检索项目,并且根据文档,应该:

在指定索引处开始播放播放列表项。

但是,因为这实际上是第一个示例中的内容,所以它不起作用。

注意事项

  • 当从播放器外部触发.seek() 方法时,jwplayer 永远不会触发onSeek() 方法。

  • 如下所示,jwplayer onReady 事件永远不会被触发。 jwplayer(strVideo).playlistItem(i).onReady({ console.log('ready'); });

【问题讨论】:

  • .. 我什至迷失了它是如何工作的;据我所知,这是访问方法的无效语法。
  • 你指的是哪几行?
  • 每次访问都没有点。这不是有效的 js 语法。
  • 啊,好吧,哈哈
  • 你能把测试页面放到你运行它的地方吗?

标签: javascript jwplayer jwplayer6


【解决方案1】:

我们正在尝试 onPlaylistItem(index).seek(seconds) 但这不起作用。 这仅适用于活动播放列表项,当然-仅适用于第一个文件。

我们正在尝试为每个播放列表项目使用带有搜索按钮的预加载播放列表。 我们使用包含更多文件的播放列表,用户可以转到特定文件并第二次单击调用的按钮:

jwplayer().onPlaylistItem(<index_file>).seek(seconds);

这会跳转到秒,但不会跳转到正确的播放列表项。

通过使用“playListItem”的先前测试,播放器跳转到正确的文件,但从头开始,而不是寻找秒。 (但只能在 html5 模式下工作,不能使用 flash)。

现在我们已经测试了这段代码

<a onclick='var only_once =false;jwplayer().playlistItem(1);jwplayer().onPlay(function () {  
if (only_once == false) {
        only_once = true;
          jwplayer().seek(60);
    }
});' class="btn">HLS play 2nd file at 1 min</a>

但此解决方案仅适用于 Flash 模式,不适用于 html 5 模式播放器!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    相关资源
    最近更新 更多