原文地址: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播放器的更多相关文章

  1. ckplayer播放器去掉右边的开关灯分享插件

    在上一篇文章中介绍了如何使用ckplayer播放器,但是有的人不需要CK播放器右边的开关灯分享插件,那么就需要把该插件给去掉,方法也很简单. 第一步:先打开ckplayer.js里找到下面三行删除掉 ...

  2. Angular 个人深究(一)【Angular中的Typescript 装饰器】

    Angular 个人深究[Angular中的Typescript 装饰器] 最近进入一个新的前端项目,为了能够更好地了解Angular框架,想到要研究底层代码. 注:本人前端小白一枚,文章旨在记录自己 ...

  3. 夺命雷公狗---微信开发59----在线点播电影网1之ckplayer播放器

    我们节课程就要开始写一个小项目了,这项目主要是写一个在线点播电影影网的,我们用到的播放器是ckplayer ckplayer基本介绍: ckplayer的全称是:超酷flv播放器,他是一款用于网页上播 ...

  4. 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍

    一.video的js知识点: controls(控制器).autoplay(自动播放).loop(循环)==video默认的: 自定义播放器中一些JS中提供的方法和属性的记录: 1.play()控制视 ...

  5. 驳Linux不娱乐 堪比Win平台中十款播放器

    播放器在我们日常生活中扮演着非常重要的角色,在Windows操作系统中,播放器被应用的非常广泛,不但我们可以听音乐,甚至还可以听广播,制作铃声,下载音乐等等.而在Linux发行版中,缺少娱乐性一直性W ...

  6. vue+element-ui中引入阿里播放器

    1.在public文件下的index.html文件中插入以下代码: <link rel="stylesheet" href="https://g.alicdn.co ...

  7. [JS] 动态修改ckPlayer播放器宽度

    //设置播放器宽度var play_width=0;$(function(){ play_width = $(window).width() - $(".stu-video-r") ...

  8. dskms改为ckplayer播放器

    将ckplayer代码文件夹上传到/var/www/html/public/static/plugins/目录下修改/var/www/html/application/home/view/defaul ...

  9. angular2或angular4中使用ckplayer播放rtmp和m3u8视频直播流

    1. 下载ckpalyer整个包并导入, 将ckplayer放到src/assets/下 2. 引入ckplayer.js angular2中,在angular-cli.json中找到script,添 ...

随机推荐

  1. RN用蓝牙接入热敏打印机和智能电子秤(转载)

    最近要为app用蓝牙接入便携热敏打印机和读蓝牙电子秤.作为一名前端,能涉及到硬件的开发让我觉得兴奋不已,所以我立刻着手开始相应的预研.并把遇到的知识点和问题记录下来. btw,大部分知识点未深入可能有 ...

  2. 3.5 unittest生成测试报告HTMLTestRunner

    3.5 unittest生成测试报告HTMLTestRunner 前言批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的.unittest里面是不 ...

  3. 机器视觉:SSD Single Shot MultiBox Detector

    今天介绍目标检测中非常著名的一个框架 SSD,与之前的 R-CNN 系列的不同,而且速度比 YOLO 更快. SSD 的核心思想是将不同尺度的 feature map 分成很多固定大小的 box,然后 ...

  4. flask自定义处理错误方法

    自定义错误处理方法: 当客户端访问浏览器是,得到相对应的状态码,服务器通过状态码给用户相对应的页面. @app.errorhandler(404) def handle_404_error(err): ...

  5. js: var定义域问题

  6. SP四种作用范围pageContext、request、session、application 一看就懂

      作用域规定的是变量的有效期限: 1.如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里. 从把变量放到pageContext开始,到jsp页面结束 ...

  7. Java注解总结2

    注解是Java元数据,可以理解成代码的标签,正确使用能极大的简化代码的编写逻辑,在各种框架代码中使用也越来越多. 一.注解的应用场景 生成doc文档: 编译器类型格式检查: 运行时处理如注入依赖等 二 ...

  8. 3.2 MathType插入竖省略号

    法1:鼠标单击位于上方菜单栏下面的空格和椭圆模版,然后在下拉模版下选择垂直省略号,如下图所示. 按照上面的操作选择垂直省略号模版后,这样在下面的编辑区域就会打出该符号了. 法2:在插入符号下查找 如果 ...

  9. oidc User.Identity.Name 为空解决方法

    public override Task TicketReceived(TicketReceivedContext context) { var result = base.TicketReceive ...

  10. js EL 正则表达式

    <script> //校验是否全由数字组成20位数 var patrn=/^[0-9]{1,20}$/; alert(patrn.test("-30000000000" ...