Ответ 1
Я взломал быстрый фрагмент Javascript, который взаимодействует с объектами Flowplayer Player
и Clip
, чтобы определить прогресс видео.
var videoProgressInterval;
flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.15.swf");
flowplayer("player").onStart(startVideoProgressChecking);
flowplayer("player").onResume(startVideoProgressChecking);
flowplayer("player").onStop(stopVideoProgressChecking);
flowplayer("player").onPause(stopVideoProgressChecking);
flowplayer("player").onFinish(stopVideoProgressChecking);
function startVideoProgressChecking() {
videoProgressInterval = setInterval(checkVideoProgress, 1000);
videoProgressInterval();
}
function stopVideoProgressChecking() {
clearInterval(videoProgressInterval);
}
function checkVideoProgress() {
var time_completed = flowplayer("player").getTime();
var total_time = flowplayer("player").getClip().fullDuration;
var percent_done = Math.floor((time_completed / total_time) * 100);
console.log(percent_done + "% of video done");
}
Вы можете увидеть демонстрацию на JSFiddle.
Он регистрирует события для событий start
и resume
игрока. Как только воспроизведение видео начинается, оно регистрирует интервал, который запускается каждую секунду (не стесняйтесь модифицировать это, чтобы работать чаще). Интервал вызывает checkVideoProgress()
каждый раз, когда он выполняется, а затем получает текущее время воспроизведения и общую продолжительность от объекта Clip
для вычисления прогресса.
Кроме того, обработчик событий также зарегистрирован для событий stop
, pause
и finish
, чтобы очистить интервал после приостановки/остановки видео.