Для этого лучше всего полагаться на события JW Player, в частности на событие on ('time').
let totalTimeWatched = 0;
let previousPosition = 0;
jwplayer().on('time', (e) => {
const { position } = e;
totalTimeWatched += (position - previousPosition);
previousPosition = position;
});
Если вы хотите посчитать время и для рекламы, вы можете использовать событие adTime
, которое также имеет свойство position
.
EDIT
Для учета поведения поиска вы можете использовать дополнительный слушатель, on('seek')
для сброса previousPosition
. Смотрите ниже:
let totalTimeWatched = 0;
let previousPosition = 0;
jwplayer().on('time', (e) => {
const { position } = e;
totalTimeWatched += (position - previousPosition);
previousPosition = position;
});
jwplayer().on('seek', (e) => {
previousPosition = e.offset;
});