2017-02-19 12 views
1

現在、どのくらいのビデオが視聴され、再生されたかを特定しようとしていますが、特定の時点で機能をトリガーしたいと考えています。ビデオの再生数を保存する

私が発生する問題は、どのくらい監視されたかを把握する方法がわからないことです。たとえば、30秒間視聴して10秒間巻き戻した場合、本質的に30秒間で20回は視聴されませんでしたが、currentTimeと表示されます。

const video = document.getElementById("video"); 
 
const set = new Set(); 
 
const percent = .8; 
 
let toWatch; 
 

 
function mediaWatched (curr) { 
 
    alert(`${curr}% of media watched`) 
 
} 
 

 
function handleMetadata(e) { 
 
    toWatch = Math.ceil(video.duration * percent); 
 
    console.log(toWatch, video.duration); 
 
} 
 

 
function handleTimeupdate (e) { 
 
    set.add(Math.ceil(video.currentTime)); 
 
    let watched = Array.from(set).pop(); 
 
    if (set.has(toWatch) && watched === toWatch) { 
 
    video.removeEventListener("timeupdate", handleTimeupdate); 
 
    console.log(watched); 
 
    mediaWatched(
 
     Math.round(watched/Math.ceil(video.duration) * 100) 
 
    ); 
 
    } 
 
} 
 

 
video.addEventListener("loadedmetadata", handleMetadata); 
 

 
video.addEventListener("timeupdate", handleTimeupdate);
<video width="400" height="300" controls="true" poster="" id="video"> 
 
    <source type="video/mp4" src="http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_2mb.mp4" /> 
 
</video>

どのように私は、もし80%が見てきたし、少なくとも再生された機能を起動するために、このような振る舞いを追加することができますか?

ありがとうございます!

答えて

0

だから、ユーザーがマーカーをたどってから何かしたいと思っているのですか?だから、彼らがビデオの途中で80%を打つと、あなたは何かしたいのですか?そのような場合は、それぞれのtimeupdateをチェックして、マーカーが何かをしたら何かをしてください。彼らがマーカーを過ぎて巻き戻しても、それは問題ではありません(あなたの望んでいないものなら、あなたの行動をやり直すことを忘れないでください)。

あなたが言っていることは、ユーザは、彼らが見たビデオの量とは対照的に、一定時間ビデオを見ている。次に、setIntervalを使用して、どれだけの時間が経過したかを記録します。

const timer = setInterval(() => { 
    videoWatchedFor += 1; 

    if (videoWatchedFor === someTime) { 
    //doSomething; 
    } 

}, 1000); 
+0

私は何をしようとしていることであるビデオが(自動またはプレイクリックで)開始されると、私は(set.has(toWatch)&&見た場合のとき 'に耳を傾ける必要があり、私の' timeupdate'イベントを持っていること===ウォッチ&& videoWatchedFor> = toWatch){'。今私があなたのアプローチで持っている問題は、 'timeupdate'が1秒間に3〜4回呼び出されるので、' setInterval'は1000msのタイムアウトを持たないということです。私は 'play'イベントにアタッチすることを考えましたが、ビデオが一時停止してもタイマーはカウントされます。 –

+0

それからあなたはそれを演奏に付けることができ、一時停止すると間隔をクリアします。それから演劇でそれは続けるだろう。 – Carlo

関連する問題