发布时间:2025-06-24 17:44:53 作者:北方职教升学中心 阅读量:193
播放器实用事件
通过跟踪超级播放器提供的监听事件,实现我们的开发需求,其关键事件说明如下:
序号 | 事件 | 说明 |
---|---|---|
1 | timeupdate | 播放时间更新事件,可记录播放时间,其结构体如下: player.on('timeupdate',function(){ }) |
2 | play | 开始播放时事件,其结构体如下: player.on('play',function(){ }) |
3 | fullscreenchange | 切换全屏状态事件,其结构体如下: player.on('fullscreenchange',function(){ }) |
4 | seeked | 拖动播放进度结束事件,其结构体如下: player.on('seeked',function(){ }) |
5 | pause | 播放暂停时事件,其结构体如下: player.on('pause',function(){ }) |
6 | ended | 播放结束时事件,其结构体如下: player.on('ended',function(){ }) |
7 | canplay | 播放能力执行成功事件,其结构体如下: player.on('canplay',function(){ }) |
8 | loadeddata | 音视频数据加载完毕时事件,其结构体如下: player.on('loadeddata',function(){ }) |
9 | ratechange | 改变快进倍速完成时事件,其结构体如下: player.on('ratechange',function(){ }) |
类实现代码如下:
public class QR_LIMIT_STR_SCENE{ public string AccessToken { get; set; } public string ticket { get; set; } public string url { get; set; } public string ResultJson = ""; public QR_LIMIT_STR_SCENE() { } public string getUrl(string scene_str) { string PostJson = "{\"action_name\": \"QR_LIMIT_STR_SCENE\", \"action_info\": {\"scene\": {"scene_str": "" + scene_str + ""}}}"; String action = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + AccessToken; WebService ws = new WebService(); string rs = ws.GetResponseResult(action, Encoding.UTF8, "POST", PostJson); Newtonsoft.Json.Linq.JObject jsonObj = Newtonsoft.Json.Linq.JObject.Parse(rs); ticket = jsonObj["ticket"] != null ? jsonObj["ticket"].ToString() : ""; url = jsonObj["url"] != null ? jsonObj["url"].ToString() : ""; ResultJson = rs; return "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + ticket; }}
一些兼容性判断
浏览器支持
编写浏览器是否支持终端H5播放的判断,实现代码如下:
function checkVideo() { if (!!document.createElement('video').canPlayType) { var vidTest = document.createElement("video"); oggTest = vidTest.canPlayType('video/ogg; codecs="theora, vorbis"'); if (!oggTest) { h264Test = vidTest.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"'); if (!h264Test) { return false; } else { if (h264Test == "probably") { return true; } else { return false; } } } else { if (oggTest == "probably") { return true; } else { return false; } } } else { return false; } return true; } if (!checkVideo()) { alert('您的浏览器不支持Video播放,请使用支持H5技术的浏览器!'); }
关于华为手机
在某些华为手机我们发现倍速快进组件样式显示异常,因此引入 JS 函数,对机型增加了一些判断 ,代码如下:
function judgeBrand(sUserAgent) { var isIphone = sUserAgent.match(/iphone/i) == "iphone"; var isHuawei = sUserAgent.match(/huawei/i) == "huawei"; var isHonor = sUserAgent.match(/honor/i) == "honor"; var isOppo = sUserAgent.match(/oppo/i) == "oppo"; var isOppoR15 = sUserAgent.match(/pacm00/i) == "pacm00"; var isVivo = sUserAgent.match(/vivo/i) == "vivo"; var isXiaomi = sUserAgent.match(/mi\s/i) == "mi "; var isXiaomi2s = sUserAgent.match(/mix\s/i) == "mix "; var isRedmi = sUserAgent.match(/redmi/i) == "redmi"; var isSamsung = sUserAgent.match(/sm-/i) == "sm-"; if (isIphone) { return 'iphone'; } else if (isHuawei || isHonor) { return 'huawei'; } else if (isOppo || isOppoR15) { return 'oppo'; } else if (isVivo) { return 'vivo'; } else if (isXiaomi || isRedmi || isXiaomi2s) { return 'xiaomi'; } else if (isSamsung) { return 'samsung'; } else { return 'default'; } }
对华为手机的判断处理代码如下:
if(judgeBrand(navigator.userAgent.toLowerCase())=='huawei'){ $("#b_rate").html="1x"; $("#b_rate").css("display",""); }else{ $("#b_rate").css("display","none"); }
实现代码
相对完整的实现代码(包括样式引入、
(3)实现代码中的前端控件,只为演示实例使用,可根据需要改造符合自己的开发规范。