• 《前端开发实战 · videojs 视频需求开发》


    📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
    🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍

    CSDN.gif

    写在前面的话

    近期,博主朋友需要开发一个视频播放网站,就帮忙提供了前后端框架模板,后端 SB、前端 Nuxt、后台管理 Vite,各种练手项目丢给他,原以为剩下业务,对方老程序猿可以轻松搞定,没想到核心视频播放这块就遇到不少坑,于是协助处理了一下,顺道记录一篇博客。
    此篇文章就介绍一下,Video 关于视频开发中的一些问题。

    Tips:君问归期未有期,巴山夜雨涨秋池。何当共剪西窗烛,却话巴山夜雨时。。


    环境准备

    1、引入依赖
    npm i videojs-contrib-hls --save 
    npm i video.js --save
    
    2、main.js引入CSS
    import 'video.js/dist/video-js.css';
    
    3、页面引入组件
    import videojs from'video.js';
    import 'videojs-contrib-hls';
    

    页面示例

    
    
    
    
    
    
    

    移动端兼容

    描述:由于视频网站要在多端运行,还担心移动端不太兼容,事实发现主体功能都正常,就是各种IOS和安卓的奇葩问题不断,比如进度条的拖动控制等,这里分享一些,剩下遇到了尽情去搜吧。

    /* 使用 video::cue 伪元素自定义字幕样式,包括背景、字体颜色、字体大小、字体阴影和内边距等。自定义字幕样式 */
    video::-webkit-media-text-track-display {
      background: transparent !important;
    }
    video::cue {
      background: rgba(0, 0, 0, 0.7); /* 半透明黑色背景 */
      color: white; /* 字体颜色为白色 */
      font-size: 16px; /* 字体大小 */
      text-shadow:
        1px 1px 2px black,
        -1px -1px 2px black,
        1px -1px 2px black,
        -1px 1px 2px black; /* 字体阴影 */
      padding: 2px; /* 字体内边距 */
    }
    
    ::-webkit-scrollbar {
      width: 6px;
      height: 6px;
    }
    
    ::-webkit-scrollbar-thumb {
      background: #999;
      border-radius: 10px;
    }
    
    // 禁止拖动进度条
    //::v-deep .vjs-progress-control{
    //  pointer-events: none !important;
    //}
    
    // 自定义禁止拖动进度条
    ::v-deep .pointer {
      pointer-events: none !important;
    }
    

    字幕需求

    描述:原以为字幕很复杂,刚收到字幕需求,还以为遇到知识盲区了,没想到就几行代码,字幕文件本身也相当简单。

    首先搜了一下VTT格式的字幕文件,在H5开发中兼容性较好,可以,那也不纠结了,就它了,了解之后原来就这啊。
    上一段它的文件内容:

    WEBVTT
    
    1
    00:00:01.000 --> 00:00:04.000
    Hello, world!
    
    2
    00:00:05.000 --> 00:00:08.000
    This is an example of an English subtitle.
    

    那怎么使用呢?其实之前代码稍微改一下,加几行就可以了。

    
    

    当然,由于你用了video.js,也可以用它的方式加载:

    // 添加新的字幕track
    if(that.videoVttZh){
      const newTrack1 = myPlayer.addRemoteTextTrack({
        kind: 'subtitles',
        src: that.videoVttZh,
        srclang: 'zh',
        label: '汉语',
        default: true
      }, false);
    
      //确保轨道添加后立即显示字幕,设置 track.track.mode 为 showing。
      newTrack1.track.mode = 'showing';
    }
    

    内嵌Youtube

    描述:和video完全没关系的需求,要求部分视频切换成Youtube的,可能为了省一点流量,真正了解一下,其实就一段H5代码的事情,记录一下。

    主要是如何拿到视频地址,可能要说明一下,参考网上一张图。

    <iframe id="ytplayer" type="text/html" width="640" height="360" allowfullscreen=""
                  src="https://www.youtube.com/embed/9Yqd2HUWyUI?si=ZKNi9H4svFNrbEqG"
                  frameborder="0">iframe>
    

    image.png

    Tips:探索未知领域,并不断输出成果,真的很有意思,这个可能也是程序猿行业的魅力所在,每天CRUD真的会让人窒息。


    总结陈词

    此篇文章介绍了使用Video.js 进行网站视频需求开发的相关经历,仅供学习参考。
    💗 后续会逐步分享企业实际开发中的实战经验,有需要交流的可以联系博主。

    CSDN_END.gif

  • 相关阅读:
    linux内核启动过程分析
    【Redis】五大数据类型 、历史概述、nosql分类
    基于JAVA课程答疑系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    AT2366-[AGC012F]Prefix Median【dp】
    rocketMQ 安装与启动
    开发这么久,gradle 和 gradlew 啥区别、怎么选?
    使用代理IP常见问题及解答
    发现一款PDF转换成翻页电子书的网站
    [python 刷题] 4 Median of Two Sorted Arrays
    如何将已经安装的 WSL(Ubuntu)移动到其他的盘或位置
  • 原文地址:https://blog.csdn.net/syb513812/article/details/140441881