pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

從零實現一個自定義html5播放器的示例代碼

本篇文章主要介紹了從零實現一個自定義html5播放器的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本次的分享是一個基于HTML5標簽實現的一個自定義視頻播放器。其中實現了播放暫停、進度拖拽、音量控制及全屏等功能。

效果預覽

從零實現一個自定義html5播放器的示例代碼

點我查看 源碼倉庫 。

核心思路

我相信一定會有些沒有接觸過制作自定義播放器的童鞋對于 標簽的認識會停留在此。

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

其中controls屬性經過設定,會在界面中顯示一個瀏覽器自帶的控制條。如果對于UI沒有要求的需求,其內置控制器已經可以滿足大部分的需求。當然了如果是這樣你們也不會看到這篇分享了=。=

隱藏控制條并模擬

那么實現一個自定義功能的播放器關鍵就在于,我們不使用原生的控制器,將其隱藏掉之后,在下方同樣的位置通過html、css來模擬所需樣式,同時通過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中點擊播放,其中被迫有很多零碎的需求,比如點擊暫停,保存音量等等。整個視頻播放器的基礎功能實現的還算完善。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

主站蜘蛛池模板: 减速机三参数组合探头|TSM803|壁挂式氧化锆分析仪探头-安徽鹏宸电气有限公司 | 【中联邦】增稠剂_增稠粉_水性增稠剂_涂料增稠剂_工业增稠剂生产厂家 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 置顶式搅拌器-优莱博化学防爆冰箱-磁驱搅拌器-天津市布鲁克科技有限公司 | 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 全自动固相萃取仪_高通量真空平行浓缩仪-勤业永为 | 众能联合-提供高空车_升降机_吊车_挖机等一站工程设备租赁 | 杭州顺源过滤机械有限公司官网-压滤机_板框压滤机_厢式隔膜压滤机厂家 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | 不锈钢钢格栅板_热浸锌钢格板_镀锌钢格栅板_钢格栅盖板-格美瑞 | pbootcms网站模板|织梦模板|网站源码|jquery建站特效-html5模板网 | 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | uv机-uv灯-uvled光固化机-生产厂家-蓝盾机电 | 熔体泵|换网器|熔体齿轮泵|熔体计量泵厂家-郑州巴特熔体泵有限公司 | 浇钢砖,流钢砖_厂家价低-淄博恒森耐火材料有限公司 | 粉末包装机,拆包机厂家,价格-上海强牛包装机械设备有限公司 | 四川成都干燥设备_回转筒干燥机_脉冲除尘器_输送设备_热风炉_成都川工星科机电设备有限公司 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 双吸泵,双吸泵厂家,OS双吸泵-山东博二泵业有限公司 | 移动机器人产业联盟官网 | 薄壁轴承-等截面薄壁轴承生产厂家-洛阳薄壁精密轴承有限公司 | HYDAC过滤器,HYDAC滤芯,现货ATOS油泵,ATOS比例阀-东莞市广联自动化科技有限公司 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 液压升降货梯_导轨式升降货梯厂家_升降货梯厂家-河南东圣升降设备有限公司 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 杭州ROHS检测仪-XRF测试仪价格-百科 | 天然气分析仪-液化气二甲醚分析仪|传昊仪器 | 华中线缆有限公司-电缆厂|电缆厂家|电线电缆厂家 | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | Type-c防水母座|贴片母座|耳机接口|Type-c插座-深圳市步步精科技有限公司 | 山楂片_雪花_迷你山楂片_山楂条饼厂家-青州市丰源食品厂 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 国际高中-国际学校-一站式择校服务-远播国际教育 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 沈阳液压泵_沈阳液压阀_沈阳液压站-沈阳海德太科液压设备有限公司 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 吸污车_吸粪车_抽粪车_电动三轮吸粪车_真空吸污车_高压清洗吸污车-远大汽车制造有限公司 |