在MUI框架中使用video.js插件,并在暂停的时候利用Asp.net将观看时长保存到sqlserver数据库
本次保存数据的情况有三种:
- 在视频播放的时候点击暂停,将本视频的进度保存到数据库
- 利用mui内部的控件,返回上一页操作时,进行保存
- 安卓手机触发返回键的时候,进行保存
示例一:
在video标签上面添加暂停(onpause)事件
<video id="example_video_1" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="none" width="" height="" poster="http://vjs.zencdn.net/v/oceans.png" data-setup='{ "aspectRatio":"640:267", "playbackRates": [1, 1.5, 2] }' onpause="current_time(this);">
<source src="..files/oceans.mp4" type="video/mp4">
</video>
js添加监听事件,video的currentTime属性可以获取当前视频的观看时间
//监听暂停事件
function current_time(video) {
//获取当前video的id
var id = video.id;
var timeDisplay;
//用秒数来显示当前播放进度
timeDisplay = Math.floor(video.currentTime);
//利用ajax将该video的id和视频已观看时长传递到后台控制器
$.ajax({
type: 'post',
data: "{id:'" + id + "',videoHasTime:'" + timeDisplay + "'}",
url: '../PlayVideo/SaveCurrentTime',
dataType: 'json',
contentType: 'application/json;charset=utf-8',
success: function (data) {
}
});
}
后台数据库存储
//id:编号
//视频时长
public int SaveCurrentTime(string id,int videoHasTime)
{
//经过调试,发现video的id都会在后面加上_html5_api后缀,所以在这里将后缀去除
string guid = id.Replace("_html5_api", "");
//利用传递过来的id,查找到对应的数据,将它的视频播放时长进行更改
videoSave vs = db.videoSave.Find(guid);
vs.videoHasTime = videoHasTime;
db.Entry(vs).State = EntityState.Modified;
db.SaveChanges();
return ;
}
示例二:

mui的返回事件的触发,必须在class里面添加mui-action-back,例:
<header class="mui-bar mui-bar-nav">
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
<h1 class="mui-title">视频</h1>
</header>
然后重写back函数,在点击返回上一页按钮时,弹出提示框,点击确定会将当前页面中所有的的video的观看时间存储到数据库,后台处理程序和上面的一致
mui.back = function(){
mui.confirm("确定要退出吗?", "提示", btnArray, function (e) {
if (e.index == 0) {
//获取页面中所有的video
var video = document.getElementsByClassName("videos");
for (var i = 0; i < video.length; i++) {
var id = video[i].id;
var timeDisplay;
//用秒数来显示当前播放进度
timeDisplay = Math.floor(video[i].currentTime);
$.ajax({
type: 'post',
data: "{id:'" + id + "',videoHasTime:'" + timeDisplay + "'}",
url: '../PlayVideo/SaveCurrentTime',
dataType: 'json',
contentType: 'application/json;charset=utf-8',
success: function (data) {
if (data == 1) {
mui.alert("视频进度保存成功");
window.location = "Test";
}
}
});
}
}
});
}
示例三:
安卓手机的返回键的监听事件,在页面初始化的时候,必须先添加一个历史记录(后台处理程序和示例一一致)
//添加历史记录
pushHistory();
//安卓手机返回键事件
window.addEventListener("popstate", function (e) {
mui.confirm("确定要退出吗?", "提示", btnArray, function (e) {
if (e.index == 0) {
var video = document.getElementsByClassName("videos"); for (var i = 0; i < video.length; i++) {
var id = video[i].id;
var timeDisplay;
//用秒数来显示当前播放进度
timeDisplay = Math.floor(video[i].currentTime);
$.ajax({
type: 'post',
data: "{id:'" + id + "',videoHasTime:'" + timeDisplay + "'}",
url: '../PlayVideo/SaveCurrentTime',
dataType: 'json',
contentType: 'application/json;charset=utf-8',
success: function (data) {
if (data == 1) {
window.location = "Test";
}
}
});
}
}
else {
//再次添加历史记录,否则确认框只能弹出一次(第一次点击返回键之后,如果取消,下一次点击返回键,就不弹出确认框)
pushHistory();
}
}); }, false)
//添加历史记录
function pushHistory() {
var state = {
title: "title",
url: "#"
};
window.history.pushState(state, "title", "#");
} })
在MUI框架中使用video.js插件,并在暂停的时候利用Asp.net将观看时长保存到sqlserver数据库的更多相关文章
- 微信 vue中使用video.js播放m3u8视频,解决安卓自动全屏的问题。
最近一个项目中需要在微信中播放m3u8格式的视频,刚开始用了 vue-video-player 这个插件,在IOS手机体验良好,本以为完事了, 结果安卓手机一点播放就自动全屏,心态略崩.查了资料说是安 ...
- mui框架中底部导航的跳转1
mui框架极大的方便了app的开发但是我们在做页面之间的切换时发现不能实现 a 链接的跳转,这是应为mui相关的一些控件是通过拦截a标签上的href来实现的,所以mui.js会阻止a标签上的href跳 ...
- 使用BootStrap框架中的轮播插件
在使用bootstrap框架中的轮播插件时,效果做出来后,无法通过点击小圆行的按钮来选择特定的图片. 后面发现是最开始的<div>标签中少写了一个id.一开始<div>标签是这 ...
- 大文件视频断点续传插件resumabel.js,优化上传速度,缩短最后一片等待时长。
在angular中使用resumable.js遇到的一个问题:大视频上传到99-100%时,此时正在上传最后一片,最后一片的xhr一直是pending状态.原因插件会检查第一片和最后一片的元数据,检测 ...
- node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中
步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...
- Python实现将图片以二进制格式保存到MySQL数据库中,以及取出:
创建数据库表格式: CREATE TABLE photo ( photo_no int(6) unsigned NOT NULL auto_increment, image MEDIUMBLOB, P ...
- 移动端 mui框架中input输入框或任何输入框聚焦后页面自动上移
一.mui框架中点击input后,安卓手机弹出自带的输入键盘时,页面自动上移 实现方法: (1)只要把input标签放在mui-content这个类里面就可以了 <div class=" ...
- TP5.1:将外部资源引入到框架中(css/js/font文件)
为了让我们的框架形式变得更加好看,我们需要加入Bootstrap和Jq文件到框架中 1.通过Bootstrap和jq官网进行相关文件的下载 (1)Bootstrap下载地址:https://v3.bo ...
- 在ThinkPHP框架(5.0.24)下引入Ueditor并实现向七牛云对象存储上传图片同时将图片信息保存到MySQL数据库,同时实现lazyload懒加载
这是我花了很多天的时间才得以真正实现的一组需求. 文章后面有完整Demo的GitHub链接. 一. 需求描述 1. 应用是基于ThinkPHP5开发的: 2. 服务器环境是LNMP,PHP版本是7.2 ...
随机推荐
- iOS 网络请求中的空类型字符串转换
创建一个工具类, .h: #import <Foundation/Foundation.h> @interface MySetNullWithStrTool : NSObject +( ...
- UVa 230 Borrowers(map和set)
I mean your borrowers of books - those mutilators of collections, spoilers of the symmetry of shelve ...
- 给乱序的链表排序 · Sort List, 链表重排reorder list LoLn...
链表排序 · Sort List [抄题]: [思维问题]: [一句话思路]: [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入): [画图]: quick ...
- discuz回贴通知插件实现-页面嵌入点(钩子)
1.如何保证主题被回复时业务代码被执行. 2.获得主题,主题发布者,贴子等信息. 3.discuz发送email邮件. discuz使用嵌入点(钩子)来处理代码的执行时机. 当用户开启插件开发者模 ...
- hreeJS加载Obj资源后如何实现内存释放?
问题: 我利用ThreeJS做了一个在同一个场景下动态加载Obj的页面,具体功能是:点击按钮A:加载A模型,点击按钮B:加载B模型...现在的问题是,前面已经加载过的模型,无法实现释放,内存一直在累加 ...
- UI设计是青春饭?今天告诉你真相!
最近有学员来问,“我想转行学习UI设计,但是听很多人说,UI设计是吃青春饭的,互联网公司是不是只选择年轻的血液而淘汰年纪大的?”今天,我来统一回答一下. UI设计是不是青春饭? 我们先来思考一个问题: ...
- 合成冷色黑暗恐怖魔法师图片的PS教程
教程主要使用Photoshop合成黑暗风格的魔法师施法场景,整体的场景效果以冷色风格为主,加上素材的叠加完成最终效果图,希望朋友可以喜欢.效果图: 先把背景拖进去,用工具吧字母弄掉. 加一个调色图层 ...
- 网站SEO优化的方法
网站SEO优化的方法: 1.url静态化和规范化:url中都去掉了index.php这样的后缀网址形式,目的就是让网站的层级更浅,获得的权重更高 代码中可以使用urlrewrite重写. 2.域名30 ...
- tp5月统计的bug
月统计求和时 本月第一天没有统计到
- hdu-2955(01背包+逆向思维+审题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 思路:注意p和m[i]是被抓的概率,不能直接用,要转换为逃跑的概率,然后将得到的钱视为背包体积再 ...