Получить пользователь просмотрел общее время видео в jwplayer - PullRequest
3 голосов
/ 13 февраля 2020

Я хочу захватить общее время воспроизведения / просмотра видео с jwplayer. используя приведенный ниже пример кода.

jwplayer("player").setup({
    "playlist": [
        {
            "sources": [
                {
                    "default": false,
                    "file": 'https://content.jwplatform.com/manifests/yp34SRmf.m3u8',
                    "label": "0",
                    "type": "hls",
                    "preload": "meta"
                }
            ]
        }
    ],
    "height": "240",
    "width": "100%",
    "aspectratio": "16:9",
    "stretching": "uniform",
    "controls": true,
    "autostart": true
});

jwplayer("player").on('time', function (e) {
    var count = this.getPosition();        
});

Не могли бы вы помочь мне сделать это.

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Для этого лучше всего полагаться на события 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;
});
1 голос
/ 13 февраля 2020

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

// In ms
var totalPlayBackTime = 0

setInterval(
    function() {
        if(player.getState() == "playing") {
            totalPlayBackTime = totalPlayBackTime + 500
        }
    },
    500
);

Здесь код будет выполняться каждые 500 мс, чтобы проверить, играет ли игрок. Если это так, добавьте 500 мс к общему времени воспроизведения. Прочитайте переменную totalPlayBackTime, чтобы узнать время воспроизведения.

Таким образом, вам не нужно полагаться на события jwplayer

ПРИМЕЧАНИЕ. Я не проверял это с рекламой.

...