ビデオが正確な瞬間に停止することを保証することはできないと思います.
メディアコントローラーのドキュメントによると:
15 ~ 250 ミリ秒ごと、または MediaController のメディア コントローラーの位置が変化するたびに、発生頻度の低い方で、ユーザー エージェントはタスクをキューに入れ、MediaController で timeupdate という名前の単純なイベントを発生させる必要があります。
timeupdate イベントは、最も頻度の低いシナリオを使用できる場合に発生します。更新の正確な起動時間を選択するオプションはありません。
あなたができるトリックは次のとおりです: timeupdate イベントを削除し、独自の間隔を設定し、それを使用して時間を確認します。
setInterval(function () {
var ct = video.currentTime;
current_time_el.innerHTML = 'Current time : ' + ct;
if(ct >= 3) {
video.pause();
}
}, 40);
ただし、このアプローチでは、コードにもっと注意を払う必要があります。(例えば、不要になったときに clearInterval() で間隔をクリーンアップします)