看過幾個開源的在線教育平台系統,關於學習課程的進度沒有進行處理.選擇一個課程后進行播放,播放幾分鍾后退出,再進入的時候課程進度顯示100%或者是無進度顯示,手動點擊已完成結束課程的學習.這個對於強制學習的項目就顯得不合理了,由於對web視頻播放不是很了解,該問題沒有想到好的方法解決.
如果是控件進行播放視頻,控件如果能統計播放時間的話就可以了.但是找了幾個視頻播放控件,API中沒有正在播放的視頻實際播放時間的統計功能.
后來又調查了騰訊課堂和網易雲課堂,網易雲課堂和開源的項目處理是一樣的,只有課程進行中的顯示,騰訊課堂是有進度百分比顯示的.於是打開Firebug查看網絡交互,發現每隔30s,瀏覽器會POST report_study_record,參數有持續時間(30S或31S),課程id,用戶id等相關信息.應該是在視頻播放的時候通過javascrpt定時發送POST消息,此外還有暫停視頻播放的時候也會有該消息,如果直接關閉頁面的話就沒有了,這樣的話最多少30S的計時時間.然后我在Firebug中右鍵選擇POST消息,再選擇重現發送,發送多次后返回課程列表后課程的已學習時間已經相應增加了.
剩下的問題就是JS對視頻播放和暫停狀態的獲取以及計時(setTimeout和clearTimeout)的功能實現了.