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,添 ...
随机推荐
- 【Keil5 MDK】armar工具的基本用法(armar --help)
ARM Librarian, 5.03 [Build 76] - archive creation and maintenance tool Command format: armar options ...
- mod_conference ESL控制二(事件)
根据上篇所述功能需求,esl需要处理以下几类事件: ESL_EVENT_CHANNEL_* #channel相关事件,用户判断参会者是否应答.计费 DTMF事件 #识别参会者按键,根据按键进行操作( ...
- django模型系统一
django模型系统一 1.数据库的连接配置 django连接mysql的配置流程 安装pymysql ** pip install pymysql 修改配置 修改setting的配置文 ...
- java_oop_方法1
方法 方法概念 封闭业务逻辑 提高代码复用定义类的方法 类的方法定义类的某种行为(或功能) 方法返回的数据类型 方法的名称 (方法的参数也叫形参) {方法的主体} 方法的 ...
- GanttProject 项目管理软件的优点
GanttProject 的优点 GanttProject 是一款基于 GPL 协议的开源软件,代码完全开源,使用的是 Java 语言编写. 最近在试用,有以下一些优大. 文件格式为 xml,这个是我 ...
- js 判断是否可以打开本地软件
js判断时候可以打开本地的软件或者插件 点击一个按钮,打开本地的软件,比如问题反馈,需要调起本地的邮箱,填入一些信息. 这个功能<a>标签有提供支持,但是如果本地没有安装邮箱,则无法打开, ...
- centos-rpm安装的mariadb,php52源码编译安装时注意点
1.不要静态指定with-mysql 以扩展的mysql.so的形式安装 2.找不到header file之类的 要yum install mysql-devel find / -name mysql ...
- laravel框架容器管理
来自http://www.cnblogs.com/chy1000/p/7072936.html 本文面向php语言的laravel框架的用户,介绍一些laravel框架里面容器管理方面的使用要点.文章 ...
- dapper List SqlBulkCopy
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- SpringBoot项目单元测试
关于SpringBoot的单元测试,描述一下三种单元测试的方式. 1.约定 单元测试代码写在src/test/java目录下单元测试类命名为*Test,前缀为要测试的类名 2. 使用mock方式单元测 ...