私は一連のビデオチュートリアルを作成しており、ユーザーがセクションを進めたりスキップしたりできないようにしたいと考えています。デスクトップおよびiPadブラウザで使用されるHTML5ビデオプレーヤーを使用します。理想的には、これをiPhoneでも機能させたいのですが、iPhoneのビデオプレーヤーを使用しているため、電話のビデオを制御できないことに気付きました。
ユーザーがHTML5ビデオプレーヤーで前方にシークするのを防ぐにはどうすればよいですか?
私は一連のビデオチュートリアルを作成しており、ユーザーがセクションを進めたりスキップしたりできないようにしたいと考えています。デスクトップおよびiPadブラウザで使用されるHTML5ビデオプレーヤーを使用します。理想的には、これをiPhoneでも機能させたいのですが、iPhoneのビデオプレーヤーを使用しているため、電話のビデオを制御できないことに気付きました。
ユーザーがHTML5ビデオプレーヤーで前方にシークするのを防ぐにはどうすればよいですか?
私は前方へのシークを防ぎたかっただけです。システムには、一時停止して後で戻ることができるコードがさらにあります。現在の位置を記録し、ロード時にビデオの位置を設定します。
私はvideo.jsを使用しています。timechange イベントを使用しようとしましたが、シークする前に発生します。そこで、間隔を使用して現在の位置を毎秒取得することにしました。シーク位置が現在の位置より大きい場合は、元に戻します。よく働く。
var player = null;
var curpos = 0;
videojs('player').ready(function(){
player = this;
});
player.on('seeking', function () {
var ct = player.currentTime();
if(ct > curpos) {
player.currentTime(curpos);
}
});
function getpos() {
curpos = player.currentTime();
}
onesecond = setInterval(getpos, 1000);
ご回答ありがとうございます。
ユーザーがシーカーをドラッグ アンド ホールドして続行できることに気付いたので、getPos 関数にシークしていない場所を追加しました。HTML 5 と jQuery。
var video = document.getElementsByTagName('video')[0];
function allowMove() {
$('input[id$="btnNext"]').removeAttr('disabled');
$('input[id$="videoFlag"]').val("1");
}
function getpos() {
if (!(video.seeking)) {
curpos = video.currentTime;
}
console.log(curpos)
}
onesecond = setInterval('getpos()', 1000);
function setPos() {
var ct = video.currentTime;
if (ct > curpos) {
video.currentTime = curpos;
}
}
この驚くほどユーザーに敵対的なことを本当にしたい場合は、controls属性を利用できます。JS の使用を許可したいコントロールを実装する必要があります。
もちろん、ユーザーはいつでも[表示] > [ソース] をクリックしてビデオの URI を取得し、ダウンロードすることができます。
これはあまり良い考えではないという @Bart Kiers の意見に同意しますが、そうしなければならない場合は、1 つの方法を考えることができます。それは、コントロールを非表示にして、JavaScript を使用してビデオを開始する独自の再生ボタンを提供することです。