iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >如何实现自定义html5播放器
  • 838
分享到

如何实现自定义html5播放器

2024-04-02 19:04:59 838人浏览 八月长安
摘要

这篇文章给大家分享的是有关如何实现自定义HTML5播放器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。效果预览点我查看 源码仓库 。核心思路我相信一定会有些没有接触过制作自定义播

这篇文章给大家分享的是有关如何实现自定义HTML5播放器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

效果预览

如何实现自定义html5播放器

点我查看 源码仓库 。

核心思路

我相信一定会有些没有接触过制作自定义播放器的童鞋对于 标签的认识会停留在此。

<video controls="controls" autoplay="autoplay">
  <source src="movie.ogg" type="video/ogg" />
</video>

其中controls属性经过设定,会在界面中显示一个浏览器自带的控制条。如果对于UI没有要求的需求,其内置控制器已经可以满足大部分的需求。当然了如果是这样你们也不会看到这篇分享了=。=

隐藏控制条并模拟

那么实现一个自定义功能的播放器关键就在于,我们不使用原生的控制器,将其隐藏掉之后,在下方同样的位置通过htmlCSS来模拟所需样式,同时通过js来调用vedio标签所暴露给我们的接口函数及属性,以及检测用户的操作行为来同步的模拟UI与视频播放数据的相应变化。

几个核心函数及属性的用法

myVid=document.getElementById("video1");
//控制视频开关
myVid.play() //播放
myVid.pause() //暂停
//模拟视频进度条
myVid.currentTime=5; //返回或设定当前视频播放位置
myVid.duration // 返回视频总长度
//模拟视频音量
myVid.volume //音量
//获取视频当前状态后判断何时从loading切换为播放
myVid.readyState
//0 = HAVE_NOTHING - 没有关于音频/视频是否就绪的信息
//1 = HAVE_METADATA - 关于音频/视频就绪的元数据
//2 = HAVE_CURRENT_DATA - 关于当前播放位置的数据是可用的,但没有足够的数据来播放下一帧/毫秒
//3 = HAVE_FUTURE_DATA - 当前及至少下一帧的数据是可用的
//4 = HAVE_ENOUGH_DATA - 可用数据足以开始播放

在所有实现中的关键点,较为繁琐的是对于进度条的模拟。其中使用了video标签中的currentTime以及duration属性,通过当前播放时间与总播放时间的比值,就可以计算出进度条相对于总长的位置。同时用户通过拖拽进度条所最后设置的长度也可以用来反向推算出此时视频应该播放的位置。

拖拽代码思路

//核心代码示例
var dragDis = 0
var processWidth = xxx //拖拽条总长
$('body').mousedown(function(e) {
    startX = e.clientX
    dragDis = startX - leftInit //leftInit为拖拽条起始点巨屏幕左侧的距离
    dragTarget.css({ //拖拽按钮
        left: dragDis
    })
    dragProcess.css({ //进度条(蓝色进度条)
        width: dragDis
    }) // 令进度条和拖拽按钮渲染在同一位置
    videoSource.pause()
}).mousemove(function(e) {
    moveX = e.clientX
    disX = moveX - startX
    var left = dragDis + disX
    if(left > processWidth) {
        left = processWidth
    } else if(left < 0) {
        left = 0
    }
    dragTarget.css({
        left: left
    })
    dragProcess.css({
        width: left
    })
}).mouseup(function(e) {
    videoSource.play()
    videoSource.currentTime = $('蓝色拖拽条').width() / processWidth * duration //拖拽后计算视频的正确播放位置
})

同理音量的控制与其上行为基本一致,故在源码中作者将音量与进度部分通过不同元素进行判断是进行进度还是音量的拖拽控制。

通过查询视频流状态控制播放前的加载动画

function ifState() {
    var state = videoSource.readyState
    if(state === 4) { //状态为4即可播放
        videoPlayer()
    } else {
        $('.play-sym-wrapper').remove()
        $('body').append('<div class="play-sym-wrapper"><img class="play-sym" src="./images/loading.gif"></div>')
        //添加loading动画
        setTimeout(ifState, 10)
    }
}
setTimeout(ifState, 10)

核心的控制部分已经说完了,有兴趣的同学可以去源码的html中点击播放,其中被迫有很多零碎的需求,比如点击暂停,保存音量等等。整个视频播放器的基础功能实现的还算完善。

感谢各位的阅读!关于“如何实现自定义html5播放器”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 如何实现自定义html5播放器

本文链接: https://www.lsjlt.com/news/70869.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何实现自定义html5播放器
    这篇文章给大家分享的是有关如何实现自定义html5播放器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。效果预览点我查看 源码仓库 。核心思路我相信一定会有些没有接触过制作自定义播...
    99+
    2024-04-02
  • html5如何实现自定义播放器
    这篇文章主要为大家展示了“html5如何实现自定义播放器”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html5如何实现自定义播放器”这篇文章吧。  ...
    99+
    2024-04-02
  • 如何在HTML5中自定义一个mp3播放器
    如何在HTML5中自定义一个mp3播放器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。audio对象src兼容.ogg .wav .mp3<audio co...
    99+
    2023-06-09
  • html5中如何实现video全屏播放/自动播放
    这篇文章主要介绍了html5中如何实现video全屏播放/自动播放,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。近期开始开发公司新版官网, 首页顶部(header)是一个全屏...
    99+
    2023-06-09
  • html5自定义播放器核心代码怎么写
    今天就跟大家聊聊有关html5自定义播放器核心代码怎么写,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 网页html ...
    99+
    2024-04-02
  • Angular中如何自定义视频播放器
    本篇内容主要讲解“Angular中如何自定义视频播放器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Angular中如何自定义视频播放器”吧!实现的功能如下:播...
    99+
    2024-04-02
  • 怎么在HTML5中自定义一个视频播放器
    这期内容当中小编将会给大家带来有关怎么在HTML5中自定义一个视频播放器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。video对象兼容性写法<video controls>&nbs...
    99+
    2023-06-09
  • html5如何实现视频播放
    这篇文章主要为大家展示了“html5如何实现视频播放”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html5如何实现视频播放”这篇文章吧。一、html5技术优势...
    99+
    2024-04-02
  • 如何实现HTML5 video播放器全屏
    本篇内容介绍了“如何实现HTML5 video播放器全屏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先...
    99+
    2024-04-02
  • html5中如何实现嵌入视频自动播放
    这篇文章主要介绍了html5中如何实现嵌入视频自动播放,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。各种查资料,找到一个方法,记录一下。核心是监听了canplaythroug...
    99+
    2023-06-09
  • 如何实现HTML5 video播放控制
    本篇内容主要讲解“如何实现HTML5 video播放控制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现HTML5 video播放控制”吧!本文的目录:&...
    99+
    2024-04-02
  • HTML5中Video属性及自定义播放器的示例分析
    这篇文章主要介绍了HTML5中Video属性及自定义播放器的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 使用方法: &nbs...
    99+
    2024-04-02
  • C# WPF实现的语音播放自定义控件
    目录主界面xaml控件设计XAML控件CS代码原理很简单,利用Path画一个图,然后用动画进行播放,播放时间由依赖属性输入赋值与控件内部维护的一个计时器进行控制。 控件基本是玩具,无...
    99+
    2024-04-02
  • Python创建一个自定义视频播放器的实现
    要创建一个自定义视频播放器的实现,可以使用Python的多媒体库pygame。以下是一个简单的示例代码:```pythonimpor...
    99+
    2023-08-08
    Python
  • 怎么在HTML5中通过自定义元素实现播放焦点图动画
    这期内容当中小编将会给大家带来有关怎么在HTML5中通过自定义元素实现播放焦点图动画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。HTML代码<div class="parall...
    99+
    2023-06-09
  • Python如何创建一个自定义视频播放器
    这篇文章主要讲解了“Python如何创建一个自定义视频播放器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何创建一个自定义视频播放器”吧!1、安装vlc的64位版本。2、安装p...
    99+
    2023-07-05
  • Android怎么自定义视频播放器
    要自定义Android视频播放器,可以按照以下步骤进行: 创建一个新的Android项目,并在布局文件中添加一个SurfaceVi...
    99+
    2023-10-26
    Android
  • react-player如何实现视频播放与自定义进度条效果
    这篇文章将为大家详细讲解有关react-player如何实现视频播放与自定义进度条效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。环境react.js   ant de...
    99+
    2023-06-28
  • HTML5如何实现视频播放功能
    这篇文章将为大家详细讲解有关HTML5如何实现视频播放功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。hivideo是一款基于html5的视频播放器,摒弃video原有...
    99+
    2024-04-02
  • HTML5中如何实现背景音乐自动播放功能
    小编给大家分享一下HTML5中如何实现背景音乐自动播放功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!音乐的自动播放属性,这里...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作