私の顧客は、教師と生徒の両方が登録できるビデオ チュートリアル サイトを提供しています。教師にフィードバックを提供するために、各ビデオの生徒のビデオ視聴時間を追跡する必要があります。このサイトは、純粋な HTML/PHP/JS/MySQL を使用して開発されています。ビデオはビデオ ホスティング事業者によって配信され、特別な JavaScript-API は提供されません。誰かが実際に動画を見て内容を理解していることを確認する方法がないことはわかっています (試験やクイズを提供する場合を除きます)。したがって、「見る」とは、次の技術的事実を組み合わせて時間を追跡することを意味します。
- ブラウザ ウィンドウが表示されている (最小化されていないか、バックグラウンドでタブが表示されている)
- ビデオが実行されている (一時停止/停止していない)
ビデオの長さは 6 分以上であるため、正確な秒数を取得する必要はありません。ここでは、おおよその値 +-10 秒で十分です。私はすでに次のアプローチを作成しましたが、まだ考えていない大きな欠点があるかどうかはわかりません: ビデオの再生が開始されると、たとえば 10 秒ごとに間隔が発生します。ビデオの状態が「running」で、document.visibilityState が「hidden」でない場合、間隔はデータベースへの ajax リクエストを起動し、エントリ「user_id、video_id、datetime」を保存します。そのため、cronjob はこれらのマイルストーンを 1 日 1 回収集し、ユーザー/動画ベースで合計視聴時間を計算できます。もちろん、これらのエントリ間の時間が特定の値 (この場合は 15 秒) を超えないようにする必要があります。
よりスマートで安全な方法を知っている人はいますか、それとも大きな欠点はありますか
- 信頼性
- 機能 (デスクトップ/モバイル ブラウザー)
- パフォーマンス (データベース?)
私とあなたの考えを共有してくれてありがとう!