在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 ...
随机推荐
- android SQLiteDatabase数据库使用的时候 常见问题
用数据库的时候有时候一定要用_id否则会报错 对于Contentprovider的查询用contentResolver.insert() 一般的数据库操作用db.insert();
- php多进程 防止出现僵尸进程
对于用PHP进行多进程并发编程,不可避免要遇到僵尸进程的问题. 僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程(zombie)进程.任何进程在退出前(使用exit退出) ...
- dede 复制文章,远程图片无法本地化
解决方法: 1.找到dede的后台目录,在后台目录下的inc下找到inc_archives_functions.php 2.搜索GetCurContent函数,找到如下这段代码: preg_match ...
- 前后台交互(打开前端页面,不传递任何数据,发送ajax请求)
1.打开前端,不传递任何数据 <script src="./jquery.min.js"></script> <script> $(docume ...
- 什么是@guid
我将给大家讲解史上最通俗一同guid与ID的区别...
- 马婕 2014年MBA,mpacc备考 报刊宣读2 美国对互联网的控制威胁着网络自由(转)
http://blog.sina.com.cn/s/blog_3e66af4601015qmk.html US controls threaten Internet freedom 美国对互联网的控制 ...
- python小练习--属性
箭头这个作业: class Box:#定义一个类名为Box,类名后不必有括号,类包含类属性和类方法,这个类没有定义类属性 '''这是一个计算体积的类'''#这是这个类的__doc__属性,执行类后就可 ...
- 用jQ实现一个简易计算器
HTML和CSS结构: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- UVa 11210 Chinese Mahjong (暴力,递归寻找)
题意:这个题意.有点麻烦,就是说给定13张牌,让你求能“听”的牌.(具体的见原题) 原题链接: https://uva.onlinejudge.org/index.php?option=com_onl ...
- java中的实例化
java中的new用于实例化一个对象 T1 a= new T1(); T2 b= new T1(); 区别: 问题1:不是实例化一个a,是实例化一个T1 T1 的一个 对象的引用 a 指向了堆空间里的 ...