使用ckplayer控制视频播放

news2024/9/27 23:25:32

目录

1、加载视频流

1.1、html模块

1.2、js模块

2、其他功能

2.1、缩放窗口

 2.2、旋转窗口

2.3、卸载播放器

2.4、监听播放时间进度

2.5、定位播放

3、初始化属性说明

4、使用功能一览


ckplayer是一款在网页上播放视频的软件,基于javascript和css,其特点是开源,功能强大,不依赖其它插件,二次开发简单方便。

当前使用X3版本 

1、加载视频流

以下代码需要依赖bootstrap、layui前端框架。

实现播放、暂停、全屏、截屏、跳转指定时间段的操作按钮

1.1、html模块

<div class="layui-card">
                <div class="layui-card-header">
                    原始视频 <span style="margin-left: 5px">总时长:</span>
                    <span style="margin-left: 5px" id="totalMs"></span>秒
                </div>
                <div class="layui-card-body">
                    <div class="video" style="width: 100%; height: 600px;">播放容器</div>

                    <div class="layui-btn-container video-tools" style="padding:10px 10px">
                        <button type="button" class="layui-btn layui-btn-sm" onclick="player.play()">播放</button>
                        <button type="button" class="layui-btn layui-btn-sm" onclick="player.pause()">暂停</button>

                        <button type="button" class="layui-btn layui-btn-sm" onclick="player.webFull()">全屏</button>

                        <button type="button" class="layui-btn layui-btn-sm" onclick="videoSc()">截图</button>
                        <button type="button" class="layui-btn layui-btn-sm" onclick="seek()"
                                style="margin-left: 10px">
                            跳转
                        </button>
                        <input type="number" value="5" id="txtSeek" style="width: 50px">秒
                    </div>
                </div>
            </div>

1.2、js模块

var played = false;
var player = null;
var videoObject = {};

function initPlayer(url){
        //调用开始
        videoObject = {
            container: '.video', //视频容器
            //poster: 'video/poster.png',//封面图片
            video: url,//视频地址
            screenshot: true,
            menu: [
                {
                    title: '技术',
                    click: 'aboutShow'
                },
                {
                    title: '关于',
                    click: 'aboutShow'
                }
            ]
        };
        player = new ckplayer(videoObject)//调用播放器并赋值给变量player

        player.play(function () {
            played = true;
        });
        player.pause(function () {

        });
        player.duration(function (t) {
            $('#totalMs').text(t);
            $('.video-tools button').removeAttr('disabled');
            $('.video-tools button').removeClass("layui-btn-disabled");
        });

        player.full(function (b) {
            console.log('监听到全屏状态:' + b);
        });
        player.ended(function () {
            console.log('监听到全屏状态:' + b);
        });
        player.time(function (t) {
            $('#timeEnd').val(t);
            //t=当前播放时间});
        })
        player.seek(function (obj) {
                obj['state']=跳转状态,有两个,分别是seeking和seeked
                if (obj['state'] == 'seeked') {
                    $('#timeStart').val(obj['time']);
                }
                player.pause()
            }
        );
    }

 function seek() {
        if ($('#txtSeek').val()) {
            player.seek(($('#txtSeek').val() * 1));
        }
    }

    function videoSc() {
        /* var html='<img src="'+player.screenshot()+'" style="max-width:20%">';
         document.getElementById('content').innerHTML=html;*/
        if (played) {
            player.screenshot();
        } else {
            layer.msg('请先点击播放', {time: 500, icon: 0})
        }
    }

2、其他功能

2.1、缩放窗口

<div class="btn-group btn-group-toggle">
	<button type="button" class="btn btn-success">缩放:</button>
	<button type="button" class="btn btn-success" onclick="player.zoom(50)">50%</button>
	<button type="button" class="btn btn-success" onclick="player.zoom(75)">75%</button>
	<button type="button" class="btn btn-success" onclick="player.zoom(100)">100%</button>
</div>

 2.2、旋转窗口

旋转角度只支持4个值:0,90,180,270。

<div class="btn-group btn-group-toggle">
	<button type="button" class="btn btn-orange">旋转:</button>
	<button type="button" class="btn btn-orange" onclick="player.rotate(0)">0</button>
	<button type="button" class="btn btn-orange" onclick="player.rotate(90)">90</button>
	<button type="button" class="btn btn-orange" onclick="player.rotate(180)">180</button>
	<button type="button" class="btn btn-orange" onclick="player.rotate(270)">270</button>
</div>

2.3、卸载播放器

建议在每次创建播放器前,调用。

if(player){//如果播放器已存在

        player.remove();//卸载播放器

}

2.4、监听播放时间进度

使用全局变量暂存播放进度

注:

1)在初始加载播放器,不触发。

2)在播放过程,暂停、拖动进度条等触发

var currentTime= 0;
player.time(function (t) {
      currentTime= t;
 })

2.5、定位播放

player.seek(time); 

3、初始化属性说明

var videoObject = {

    container: '',//视频容器的ID

    volume: 0.8,//默认音量,范围0-1

    poster: '',//封面图片地址

    autoplay: false,//是否自动播放

    loop: false,//是否需要循环播放

    rotate:0,//视频旋转角度

    zoom:0,//默认缩放比例

    live: false,//是否是直播

    ad:null,//广告

    backLive:false,//显示返回直播按钮

    seek: 0,//默认需要跳转的秒数

    next: null,//下一集按钮动作

    loaded: '',//加载播放器后调用的函数

    plug:'',//使用插件,目前支持hls.js:用于在pc端播放m3u8,flv.js:播放flv,mpegts.js:播放ts

    duration:0,//如果强制使用点播,而视频里不存在总时间,可以手动指定

    preview: null,//预览图片对象

    prompt: null,//提示点功能

    crossOrigin:'',//发送跨域信息,示例:Anonymous

    video: null,//视频地址

    type:'',//视频类型

    playbackrate: 1,//默认倍速

    ended:null,//结束显示的内容

    webFull:false,//是否启用页面全屏按钮,默认不启用

    theatre:null,//是否启用剧场模式按钮,默认不启用

    controls:false,//是否显示自带控制栏

    rightBar:null,//是否开启右边控制栏

    smallWindows:null,//是否启用小窗口模式

    smallWindowsDrag:true,//小窗口开启时是否可以拖动

    screenshot:false,//截图功能是否开启

    timeScheduleAdjust:1,//是否可调节播放进度,0不启用,1是启用,2是只能前进(向右拖动),3是只能后退,4是只能前进但能回到第一次拖动时的位置,5是看过的地方可以随意拖动

    logo:'',//logo

    menu:null,//右键菜单

    information:{//关于

    'Load:':'{loadTime} second',

    'Duration:':'{duration} second',

    'Size:':'{videoWidth}x{videoHeight}',

    'Volume:':'{volume}%',

    'Sudio decoded:':'{audioDecodedByteCount} Byte',

    'Video decoded:':'{videoDecodedByteCount} Byte'

    },

    track:null,//字幕

    title:'',//视频标题

    language:'',//语言包文件

    barHideTime:1500,//控制栏隐藏时间

    playbackrateOpen:true,//是否开启控制栏倍速选项

    playbackrateList:[0.75,1,1.25,1.5,2,4],//倍速配置值

    cookie:null,//cookie名称,在同一域中请保持唯一

    domain:null,//cookie保存域

    cookiePath:'/',//cookie保存路径

    documentFocusPause:false,//窗口失去焦点后暂停播放

    mouseWheelVolume:2,//是否启用鼠标滚轮调节音量功能,0=不启用,1=启用,2=全屏时才启用

    keyVolume:2//是否启用键盘控制音量调节,0=不启用,1=启用,2=全屏时才启用

    };

4、使用功能一览

参考文档:

ckplayer 官方网站

demo演示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2067107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑神话:悟空!爆了很多猴头! 借力,借智,借势(深度好文)——早读(逆天打工人爬取热门微信文章解读)

黑神话&#xff1a;悟空 怎么这么多猴头呢&#xff1f; 引言Python 代码第一篇 洞见 借力&#xff0c;借智&#xff0c;借势&#xff08;深度好文&#xff09;第二篇 股市风云结尾 引言 天哪 我昨天忘记发了 原因有二 一是比较忙 大家明白那种 3000块工资干2W的活的感觉吧 一开…

PyTorch使用------模型的定义和保存方法(带你讯速掌握构建线性回归,保存模型的方法!!!)

&#x1f43b; PyTorch使用合集&#xff1a; PyTorch使用------张量的创建和数值计算-CSDN博客 PyTorch使用------张量的类型转换&#xff0c;拼接操作&#xff0c;索引操作&#xff0c;形状操作-CSDN博客 目录 &#x1f354; 模型定义方法 &#x1f498; 使用PyTorch构建线性…

RISC-V vector(1) --- vector的引入与register说明

Vector相较于SIMD的优势 这两种实现方案&#xff0c;都是为了实现数据级并行性&#xff08;存在大量的数据可供程序同时计算&#xff09;&#xff1b; SIMD&#xff08;Single Instruction Multiple Data&#xff09; SIMD是将数据宽度和操作类型&#xff0c;都放在了指令中&a…

网络初识部分

1.网络 单机时代-局域网时代-广域网时代-移动互联网时代 局域网时代&#xff1a;通过路由器把几个电脑连接起来。 广域网时代&#xff1a;把更多的局域网连接到一起&#xff0c;构成的网络更庞大&#xff0c;可能已经覆盖了一个城市/国家/全世界。 2.什么是路由器&#xff…

关于武汉芯景科技有限公司的多协议收发芯片XJ526(第二篇RS422模式)开发指南(兼容SP526)

一、设置芯片为RS422模式 SP526 包含高度集成的串行收发器。SP526 提供 RS-232 &#xff08;V.28&#xff09;、RS-423 &#xff08;V.10&#xff09;、RS-422 &#xff08;V.11&#xff09; 和 RS-485 的硬件接口模式。接口模式选择通过两个控制引脚D0、D1完成。 我们将D0接…

【简历】25届青岛某一本JAVA简历:中厂不要强调算法,面试官听不懂

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 今天我们要看的是一位来自25届青岛某一本硕士同学的Java简历。 依旧是先判断自己要投什么层次的厂&#xff0c;也就是我们校招第一法则…

Netty04-优化与源码

四. 优化与源码 1. 优化 1.1 扩展序列化算法 序列化&#xff0c;反序列化主要用在消息正文的转换上 序列化时&#xff0c;需要将 Java 对象变为要传输的数据&#xff08;可以是 byte[]&#xff0c;或 json 等&#xff0c;最终都需要变成 byte[]&#xff09;反序列化时&…

SQL进阶技巧:如何按任意时段分析时间区间问题? | 区间重叠问题应用

目录 0 场景描述 1 数据准备 2 问题分析 方法1:分情况讨论,找出重叠区间 方法2:暴力美学法。按区间展开成日期明细表 3 小结 0 场景描述 现有用户还款计划表 user_repayment ,该表内的一条数据,表示用户在指定日期区间内 [date_start, date_end] ,每天还款 repay…

成为顶尖1%前端开发者的10项必备技能

从你可能已经熟悉的前端基础开始&#xff1b;然后进入关键技能&#xff0c;如使用浏览器开发工具和利用AI快速编码。包括99%的开发者忽视的宝贵通用技能。 从你可能已经熟悉的前端基础开始&#xff1b;然后进入关键技能&#xff0c;如使用浏览器开发工具和利用AI快速编码。 包…

【youcans论文精读】KAN 2.0:面向科学的KAN网络

欢迎关注『youcans论文精读』系列 本专栏内容和资源同步到 GitHub/youcans 【youcans论文精读】KAN 2.0&#xff1a;面向科学的KAN网络 1. KAN2.0 简介1.1 KAN 2.0 论文发布1.2 KAN2.0 的新特点&#xff1a;1.3 KAN 回顾 2. MultiKAN&#xff1a;用乘法增强 KAN 网络的表达能力…

足底筋膜炎专用药

足底筋膜炎专用药“古顺*敷堂筋膜*贴”通过其独特的药效和用法&#xff0c;能够针对足底筋膜炎进行有效治疗&#xff0c;缓解患者疼痛和不适感&#xff0c;促进炎症消退和肌肉恢复。长时间站立、行走或进行高强度的跑步、跳跃等活动&#xff0c;会使足底筋膜受到持续的牵拉和压…

MEMS 传感器 4GDTU 说明书

本系统经过精心设计&#xff0c;可无缝对接三石峰的振动管理系统平台。通过该平台&#xff0c;用户可直观查看传感器数据、分析振动趋势、预警潜在故障&#xff0c;并依据分析结果制定针对性的维护策略&#xff0c;从而有效提升设备运行的可靠性与安全性。 本产品广泛应用于工…

日常开发规范

日常开发规范 一.git提交规范 开发代码之前&#xff0c;需有管理员通过系统新建功能分支&#xff0c;如feature/one&#xff0c; 此时开发人员方可拉取feature/one到本地进行开发&#xff0c; 开发人员在本地环境测试稳定后&#xff0c;方可由管理员通过系统发布到开发环境…

宠物空气净化器不是智商税!希喂、352宠物空气净化器真实测评

前端时间我出差了&#xff0c;把小猫寄养在朋友家里&#xff0c;回来后去接它们&#xff0c;结果到朋友家差点没认出来...碰上换毛季猫咪疯狂脱毛&#xff0c;朋友没有及时清理&#xff0c;就全堆在身上了&#xff0c;简直是胖若两猫。到家后&#xff0c;我连忙用梳子把它身上的…

Wi-Fi发射功率简介

目录 一、概念 1.1 射频发射与组合功率 1.2 天线增益 1.3 信道影响 二、常用单位及转换 2.1 dB 与 dBm 2.2 dBi 与 dBd 三、发射功率 3.1 发射功率调节 3.1.1 TPC 3.2 国家码与信道功率 一、概念 ① 和 ⑦ 表示射频发送端处的功率,单位是 dBm。其中 ① 表示AP端的…

《通义千问AI落地—下》:WebSocket详解

一、前言 文本源自 微博客 且已获授权,请尊重版权。 《通义千问AI落地——下篇》如约而至。Websocket在这一类引用中,起到前后端通信的作用。因此,本文将介绍websocket在这类应用场景下的配置、使用、注意事项以及ws连接升级为wss连接等;如下图,本站已经使用了wss连接…

ssrf,csrf漏洞复现

印象深刻的csrf利用&#xff1a; 在phpwind下&#xff1a;漏洞点&#xff08;但是都是在后台的漏洞&#xff09; 代码追&#xff1a; task到unserialize&#xff0c;然后重写PwDelayRun的构造函数&#xff0c;给callback和args赋值&#xff0c;然后当程序执行结束&#xff0c…

请问lammps怎么做两种金属连接的原子浓度分布图??

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

未知单播泛洪原因

未知单播&#xff1a;交换机是收到数据包后&#xff0c;读取数据包的目的MAC&#xff0c;并查找自已的MAC表&#xff0c;查找目的MAC对应的端口&#xff0c;从而判断从哪个口端口转发出此数据包&#xff0c;若MAC表里没有此目的MAC&#xff0c;那对于此交换机来说就是未知单播&…

Day46 | 101孤岛的总面积 102沉没孤岛 103水流问题 104建造最大岛屿

语言 Java 101.孤岛的总面积 101. 孤岛的总面积 题目 题目描述 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域&#xff0c;且完全被水域单元格包围。孤岛是那些…