原文地址: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. 使用Ajax+jQuery来实现前端收到的数据在console上显示+简单的主页设计与bootstrap插件实现图片轮播

    1.实现前端输入的数据在console上显示 上一篇是解决了在前端的输入信息在cygwin上显示,这次要给前台们能看见的数据,因为数据库里插入的数据少,所以写的语句翻来覆去就那几个词,emmm···当 ...

  2. 3.3 unittest批量执行

    3.3 unittest批量执行 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了.加载用例后,用un ...

  3. 初学java集合框架笔记

    List接口常用方法: 方法名 说    明 boolean add(Object o) 在列表的末尾顺序添加元素, 起始索引位置从0开始 void add(int index,Object o) 在 ...

  4. python3 基础整理

    基础语法 1.python中区分大小写 2.查看关键字用 import keyword print (keyword.kwlist) 3.注释 #  单行注释,多行注释的快捷键是ctr+/,取消注释的 ...

  5. Arcgis属性表出现乱码

    解决方案一:导入符号化字体: 在C:\Windows\Fonts文件夹下放入.TTF格式的字体库(此时加入农村二调_0.TTF和TDT10142007.ttf),便可使符号化的乱码显示正常. 解决方案 ...

  6. sql语言 含有包含关系的查询 (含mysql 和sql sever)

    一.sql中查询包含关系的查询 sql语句中包含关系可以使用 in 和exist,但有些时候仅仅用这两个是不够的,还有表示方法是  not exist(b expect a )可以表示a包含b. 二. ...

  7. CodeForce 517 Div 2. B Curiosity Has No Limits

    http://codeforces.com/contest/1072/problem/B B. Curiosity Has No Limits time limit per test 1 second ...

  8. jQuery 点击后退(返回)执行函数

    <html> <head> <meta charset="UTF-8"> <meta name="viewport" ...

  9. yum源搭建

    1:vim /etc/yum.repo.d/ll.repo [local]   这里不能有空格,如[local yum] name=local baseurl=file:///yum gpgcheck ...

  10. OkHttp官方中文文档

    https://blog.csdn.net/jackingzheng/article/details/51778793 https://www.cnblogs.com/ldq2016/p/879630 ...