视频弹题、视频答题来实现视频防录屏和防挂机
1.视频播放到某个时间点,弹出问题卡,学员只有正确回答课件视频中弹出的问题之后才能继续观看视频。
2.通过互动问答的方式,不仅有利于巩固前边学习的知识点,评估学员的学习效果,也有效避免学员挂机的现象。
3.问答播放器还能起到一定的防录屏作用,大大降低盗版视频的观看体验。
实际效果参考:
图3:视频问答功能(观看效果)
图4:视频问答功能(观看效果)
图5:视频问答功能(观看效果)
HTML5代码调用实例
<div id="player"></div>
<script src="//player.polyv.net/script/player.js"></script>
<script>
var player = polyvPlayer({
wrap: '#player',
autoplay:'true',
width: '900',
height: '600',
ban_record_interaction_right_answer:'on',
vid: '138dcc966702d7afc87b5d08b1b4e696_1',
});
</script>
注:如果希望每次刷新都弹出问题,请添加 ban_record_interaction_right_answer:'on' 这行参数
JAVA SDK
@Test
public void testCreateOrUpdateVideoExam() throws IOException, NoSuchAlgorithmException {
VodCreateOrUpdateVideoExamRequest vodCreateOrUpdateVideoExamRequest = new VodCreateOrUpdateVideoExamRequest();
VodCreateOrUpdateVideoExamResponse vodCreateOrUpdateVideoExamResponse = null;
try {
List<VodCreateOrUpdateVideoExamRequest.Choices> choices = Arrays.asList(
new VodCreateOrUpdateVideoExamRequest.Choices(0, "萝卜", Boolean.TRUE),
new VodCreateOrUpdateVideoExamRequest.Choices(1, "青菜", Boolean.FALSE));
vodCreateOrUpdateVideoExamRequest.setExamId("17982289508")
.setVideoId("1b448be3234406608b7838c7ef6b597c_1")
.setShowTime(2)
.setQuestion("喜欢萝卜还是青菜")
.setChoices(choices)
.setCanSkip(Boolean.FALSE)
.setExplanationIfRight("回答正确后的解答详情")
.setShowExplanationIfWrong(Boolean.TRUE)
.setExplanationIfWrong("回答错误后的解答详情")
.setBackTime(-1);
vodCreateOrUpdateVideoExamResponse = new VodInfoServiceImpl().createOrUpdateVideoExam(
vodCreateOrUpdateVideoExamRequest);
Assert.assertNotNull(vodCreateOrUpdateVideoExamResponse);
if (vodCreateOrUpdateVideoExamResponse != null) {
log.debug("测试新增或修改视频问答成功,{}", JSON.toJSONString(vodCreateOrUpdateVideoExamResponse));
}
} catch (PloyvSdkException e) {
//参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
log.error(e.getMessage(), e);
// 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
throw e;
} catch (Exception e) {
log.error("SDK调用异常", e);
throw e;
}
}
请求入参描述
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
videoId | true | String | 视频ID【对应api文档的vid字段】 |
examId | false | String | 问答ID,为空时会新增一个题目。不为空时会修改已有的问答题目 |
showTime | true | Integer | 问答出现的时间,单位:秒 |
question | true | String | 问答题目描述 |
choices | true | Array | 问答选项json数组,每个题目最多5个选项。 |
canSkip | false | Boolean | 是否可跳过,默认值:false |
explanationIfRight | false | String | 回答正确后的解答详情 |
showExplanationIfWrong | false | Boolean | 回答答错误后是否显示解答详情,true:显示;false:不显示;默认为true显示 |
explanationIfWrong | false | String | 回答错误后的解答详情 |
backTime | false | Integer | 答错后回退到第几秒,-1代表不回退,默认为-1 |
Choices参数描述
参数名 | 类型 | 说明 |
---|---|---|
index | Integer | 选项序号,题目实际顺序为按此值的大小排序,不要重复 |
content | String | 选项内容 |
isRight | Boolean | 所有选项中必须至少有一个设置为正确答案,否则接口返回错误。 |
返回对象描述
参数名 | 类型 | 说明 |
---|---|---|
examId | String | 问答ID |
我的文章推荐:
- [视频+图文] 线上研讨会是什么,企业对内对外培训可以用线上研讨会吗?
- [图文] 企业直播对网络带宽有什么要求?
- [图文]OBS如何实现毫秒级超低延时直播
- 直播播放器API(播放器调用方法、参数、接口和事件)
- 企业内训课程视频加密防下载是如何做的?10种思路
- 超低延迟/无延迟直播(PRTC Web SDK移动端)兼容性说明