angular中使用ckplayer播放器
原文地址:https://www.cnblogs.com/jying/p/9519557.html ,转载请说明出处。
ckplayer官网:http://www.ckplayer.com
使用ckplayer 需要引用ckplayer.js,不管你是直接html中引入还是按需加载都必不可少,此处我们以html引入为例
<script src="你项目的路径/ckplayer.js" charset="UTF-8"></script>
方式一:直接 html 页面 <script> 标签中使用,实例可查看官网:http://www.ckplayer.com/manualX/17.html
方式二:单独 js 文件中使用,形式其实与方式一无异,但切记不可放在 (function(){})() 中使用,否则自定义的监听事件无效。
方式三(推荐):自定义指令 directive 使用。
/**
* 自定义视频指令文件samVideo.ts,相当于app.directive("samVideo",...);
*/
export default class directive implements ng.IDirective {
static $instance = (): ng.IDirective => {
return new directive();
};
constructor() {}
scope = {
video: "=",//来自服务器的视频参数可以放在这
videocb: "=" //回调函数写在这
};
restrict = 'AE'; //属性或控件方式
replace = true;
link(scope: ng.IScope, element: ng.IRootElementService, attrs: any, ctrl: any) {
// console.log("scope = ", scope, scope.video);
if (scope.video) {//判断是否包含视频路径等参数 var ckplayer = window["ckplayer"];//html引入ckplayer.js文件后window中可查看到ckplyer的dom
var videoObject = {
// autoplay: true,//自动执行
container: "#video_view",//绑定容器id
debug: true, //是否开启调试模式
// drag: 'start', //拖动的属性
// flashplayer: true,//强制flash
// loaded: 'loadedHandler', //当播放器加载后执行的函数,设定一些监听,官方js中的写法
loaded: scope.videocb.videocallback(scope.videocb),//此处是重点回调
// loop: true, //播放结束是否循环播放
//mobileCkControls:true,//是否在移动端(包括ios)环境中显示控制栏
//poster: 'o_1cku5daia5vroa4psl17pipm5m.jpg', //封面图片
// seek: 0, //默认跳转的时间
variable: "player",//初始函数
// video: "CK:" + scope.video.video_url,//加密后强制变为flash方式,无法在移动端观看视频,移动端不支持flash。
video: scope.video.video_url //来自服务器的视频地址
} var player = new ckplayer(videoObject);
scope.videocb.player = player; }
};
}
<sam-Video id="video_view" style="width:100%;" ng-if="vm.videoDetails" video="vm.videoDetails" videocb="vm.videocb"></sam-Video>
//在Controller中
//参数的定义回调
//定义视频对象,可以来自服务器
videoDetails = {
content: "测试外网视频",
create_date: 1534316308000,
img_url: "o_1cku5ia5vroa4psl17pipm5m.jpg",//封面图片
title: "外网视频",
video_url: "视频地址.mp4 或CK:加密的视频地址(强制flash模式)"//视频地址
};
//回调参数,里面定义了一个回调函数,然后由directive回调的时候回传ckplayer对象own,并使用$timeout延迟加载以确保不为null
videocb = {
videocallback: (own) => {
if (this.timeout) {
this.$timeout.cancel(this.timeout);
}
this.timeout = this.$timeout(x => { // console.log("timeout player = ", this.videocb["player"], own.player);
own.player.addListener('ended', this.endedHandler); //监听播放结束 }, 0);
// console.log("player = ", this.videocb, player.player.CB);
}
};
//监听是否结束播放,使用lambda表达式可以使用整个controller的this
endedHandler = () => {
console.log("播放结束2", this);
}
移动端浏览器播放视频会自动全屏,无法限制其拖动快进,可以参照我的另一篇文章解决:https://www.cnblogs.com/jying/p/9642445.html
angular中使用ckplayer播放器的更多相关文章
- ckplayer播放器去掉右边的开关灯分享插件
在上一篇文章中介绍了如何使用ckplayer播放器,但是有的人不需要CK播放器右边的开关灯分享插件,那么就需要把该插件给去掉,方法也很简单. 第一步:先打开ckplayer.js里找到下面三行删除掉 ...
- Angular 个人深究(一)【Angular中的Typescript 装饰器】
Angular 个人深究[Angular中的Typescript 装饰器] 最近进入一个新的前端项目,为了能够更好地了解Angular框架,想到要研究底层代码. 注:本人前端小白一枚,文章旨在记录自己 ...
- 夺命雷公狗---微信开发59----在线点播电影网1之ckplayer播放器
我们节课程就要开始写一个小项目了,这项目主要是写一个在线点播电影影网的,我们用到的播放器是ckplayer ckplayer基本介绍: ckplayer的全称是:超酷flv播放器,他是一款用于网页上播 ...
- 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍
一.video的js知识点: controls(控制器).autoplay(自动播放).loop(循环)==video默认的: 自定义播放器中一些JS中提供的方法和属性的记录: 1.play()控制视 ...
- 驳Linux不娱乐 堪比Win平台中十款播放器
播放器在我们日常生活中扮演着非常重要的角色,在Windows操作系统中,播放器被应用的非常广泛,不但我们可以听音乐,甚至还可以听广播,制作铃声,下载音乐等等.而在Linux发行版中,缺少娱乐性一直性W ...
- vue+element-ui中引入阿里播放器
1.在public文件下的index.html文件中插入以下代码: <link rel="stylesheet" href="https://g.alicdn.co ...
- [JS] 动态修改ckPlayer播放器宽度
//设置播放器宽度var play_width=0;$(function(){ play_width = $(window).width() - $(".stu-video-r") ...
- dskms改为ckplayer播放器
将ckplayer代码文件夹上传到/var/www/html/public/static/plugins/目录下修改/var/www/html/application/home/view/defaul ...
- angular2或angular4中使用ckplayer播放rtmp和m3u8视频直播流
1. 下载ckpalyer整个包并导入, 将ckplayer放到src/assets/下 2. 引入ckplayer.js angular2中,在angular-cli.json中找到script,添 ...
随机推荐
- RN用蓝牙接入热敏打印机和智能电子秤(转载)
最近要为app用蓝牙接入便携热敏打印机和读蓝牙电子秤.作为一名前端,能涉及到硬件的开发让我觉得兴奋不已,所以我立刻着手开始相应的预研.并把遇到的知识点和问题记录下来. btw,大部分知识点未深入可能有 ...
- 3.5 unittest生成测试报告HTMLTestRunner
3.5 unittest生成测试报告HTMLTestRunner 前言批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的.unittest里面是不 ...
- 机器视觉:SSD Single Shot MultiBox Detector
今天介绍目标检测中非常著名的一个框架 SSD,与之前的 R-CNN 系列的不同,而且速度比 YOLO 更快. SSD 的核心思想是将不同尺度的 feature map 分成很多固定大小的 box,然后 ...
- flask自定义处理错误方法
自定义错误处理方法: 当客户端访问浏览器是,得到相对应的状态码,服务器通过状态码给用户相对应的页面. @app.errorhandler(404) def handle_404_error(err): ...
- js: var定义域问题
- SP四种作用范围pageContext、request、session、application 一看就懂
作用域规定的是变量的有效期限: 1.如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里. 从把变量放到pageContext开始,到jsp页面结束 ...
- Java注解总结2
注解是Java元数据,可以理解成代码的标签,正确使用能极大的简化代码的编写逻辑,在各种框架代码中使用也越来越多. 一.注解的应用场景 生成doc文档: 编译器类型格式检查: 运行时处理如注入依赖等 二 ...
- 3.2 MathType插入竖省略号
法1:鼠标单击位于上方菜单栏下面的空格和椭圆模版,然后在下拉模版下选择垂直省略号,如下图所示. 按照上面的操作选择垂直省略号模版后,这样在下面的编辑区域就会打出该符号了. 法2:在插入符号下查找 如果 ...
- oidc User.Identity.Name 为空解决方法
public override Task TicketReceived(TicketReceivedContext context) { var result = base.TicketReceive ...
- js EL 正则表达式
<script> //校验是否全由数字组成20位数 var patrn=/^[0-9]{1,20}$/; alert(patrn.test("-30000000000" ...