JW Player 7 делает паузу в точное время

Я играю с видео для встраивания на YouTube. Я хочу, чтобы игрок остановился на третьей секунде. Код ниже:

playerInstance.on('time', function(x) {
    if (x.position === 3){
        playerInstance.pause();
    }
});

Но это не работает каждый раз. Иногда это работает, а иногда нет. Это совершенно случайно. Почему?


person slk500    schedule 12.11.2015    source источник


Ответы (3)


В зависимости от воспроизводимого типа мультимедиа и других событий, связанных с экземпляром проигрывателя JW, событие onTime запускается несколько раз в секунду и сообщается с большим числом знаков после запятой.

Поэтому очень маловероятно, что «позиция» когда-либо будет ровно 3 (это то, что вы фактически говорите со следующим: '==' & '===').

Было бы более надежным использовать '>=':

playerInstance.on('time', function(x) {
    if (x.position >= 3){
        playerInstance.pause();
    }
});

Однако это означает, что игрок не сможет играть более 3 секунд, поэтому в зависимости от ваших требований вам также может потребоваться включить дополнительную логику для удовлетворения следующего:

  • продолжение воспроизведения после точки паузы
  • что делать, если пользователь ищет более 3 секунд
  • поиск назад, а затем достижение точки паузы во второй раз
  • и т.д...

Вероятно, лучшим решением было бы преобразовать «позицию» в целочисленное значение и выполнить прямое сравнение. Это означает, что вам не понадобится логика для обработки прохождения точки паузы. Однако вам потребуется логика, чтобы убедиться, что он был приостановлен только один раз в точке паузы. Этому способствует следующее:

playerInstance.on('time', function(x){
    if(parseInt(x.position,10)===3){
        if(!playerInstance["pauseOnce"]){
            playerInstance["pauseOnce"]=true;
            playerInstance.pause();
        }
    }else{
        playerInstance["pauseOnce"]=false;
    }
});
person jherrieven    schedule 15.12.2015
comment
Думаю, это было бы хорошим решением. Я пытался использовать ›=, но не думал о включении дополнительной логики. Я думал, что точное положение поможет. Но это работает случайным образом. - person slk500; 15.12.2015
comment
Думая об этом дальше, я предоставил обновление с лучшим решением. - person jherrieven; 16.12.2015

Раньше я сталкивался с проблемами при добавлении моего объекта jwplayer в переменную. У меня нет объяснения, но рискну предположить, что вам повезет больше, если вы просто продолжите использовать функцию jwplayer(); звонить явно. Надеюсь, это даст вам более стабильные результаты. Также, возможно, попробуйте использовать «==» вместо «===». Можете ли вы показать нам, как вы объявляете playerInstance?

person Elon Zito    schedule 09.12.2015