我的编程空间,编程开发者的网络收藏夹
学习永远不晚

前端H5中Video的使用场景有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

前端H5中Video的使用场景有哪些

这篇文章主要介绍前端H5中Video的使用场景有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1.原生H5 video标签

<video id="mse" autoplay=true playsinline controls="controls">   <source class="lazy" data-src="实机视频地址" type="video/mp4">   你的浏览器不支持Video标签</video>

2.第三方插件video.js

_this.player = videojs(    _this.videoNode,    {        autoplay: true,        bigPlayButton : false,        controls: true,        preload: 'auto',        poster: poster,        notSupportedMessage: '视频加载失败,请刷新再试试',        sources: [            {                class="lazy" data-src: videoUrl,                type: 'video/mp4',            },        ],    },    function onPlayerReady() {        this.play();    })<video  ref={(node) => (this.videoNode = node)}  className="video-js vjs-big-play-centered"  preload="auto"  autoplay="autoplay"  playsinline='true'  webkit-playsinline='true'  x5-video-player-type='h6'  x5-video-player-fullscreen='false'  x5-video-orientation='portraint'></video>

2.1 支持原生H5 video标签的所有配置参数,并且更加丰富的配置。

2.2 多环境兼容性

3.业务开发中的场景

目前基本表现良好

3.1 自动播放实现

1.1 非微信端

目前主要方法是在videojs 的onPlayerReady回调中调用play方法,以及特殊环境下需要用户手动触发

1.2 微信端

微信端(特别是ios)为了能够实现自动播放功能,目前主要通过增加微信WeixinJSBridgeReady事件回调的方式来触发

document.addEventListener("WeixinJSBridgeReady", function () {    this.player.play();}, false);

4.播放过程

前端H5中Video的使用场景有哪些

一次播放三次请求

请求头信息

前端H5中Video的使用场景有哪些

响应信息

前端H5中Video的使用场景有哪些

range: bytes=0- 首部信息,该信息用于检测服务端是否支持 Range 请求

Accept-Ranges 首部(并且它的值不为 “none”),那么表示该服务器支持范围请求

Content-Length 也是有效信息,因为它提供了要下载的视频的完整大小

Content-Range 响应首部则表示这一部分内容在整个资源中所处的位置

range - 可以分片段请求,此时的Content-Range则返回的对应请求区间的大小

5.其他场景

5.1 如何实现视频本地预览

视频本地预览的功能主要利用 URL.createObjectURL() 方法来实现。URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的 URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的 URL 对象表示指定的 File 对象或 Blob 对象。

<!DOCTYPE html><html>  <head>    <meta charset="UTF-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    <title>视频本地预览示例</title>  </head>  <body>    <input type="file" accept="video/*" onchange="loadFile(event)" />    <video      id="previewContainer"      controls      width="480"      height="270"      style="display: none;"    ></video>    <script>      const loadFile = function (event) {        const reader = new FileReader();        reader.onload = function () {          const output = document.querySelector("#previewContainer");          output.style.display = "block";          output.class="lazy" data-src = URL.createObjectURL(new Blob([reader.result]));        };        reader.readAsArrayBuffer(event.target.files[0]);      };    </script>  </body></html>

5.2 如何实现播放器截图

播放器截图功能主要利用 CanvasRenderingContext2D.drawImage() API 来实现。Canvas 2D API 中的 CanvasRenderingContext2D.drawImage() 方法提供了多种方式在 Canvas 上绘制图像。

drawImage API 的语法如下:

void ctx.drawImage(image, dx, dy); void ctx.drawImage(image, dx, dy, dWidth, dHeight); void ctx.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);
<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    <title>播放器截图示例</title>  </head>  <body>    <video id="video" controls="controls" width="460" height="270" crossorigin="anonymous">      <!-- 请替换为实际视频地址 -->      <source class="lazy" data-src="请替换为实际视频地址" />    </video>    <button onclick="captureVideo()">截图</button>    <script>      let video = document.querySelector("#video");      let canvas = document.createElement("canvas");      let img = document.createElement("img");      img.crossOrigin = "";      let ctx = canvas.getContext("2d");      function captureVideo() {        canvas.width = video.videoWidth;        canvas.height = video.videoHeight;        ctx.drawImage(video, 0, 0, canvas.width, canvas.height);        img.class="lazy" data-src = canvas.toDataURL();        document.body.append(img);      }    </script>  </body></html>

5.3 如何实现 Canvas 播放视频

使用 Canvas 播放视频主要是利用 ctx.drawImage(video, x, y, width, height) 来对视频当前帧的图像进行绘制,其中 video 参数就是页面中的 video 对象。所以如果我们按照特定的频率不断获取 video 当前画面,并渲染到 Canvas 画布上,就可以实现使用 Canvas 播放视频的功能。

<!DOCTYPE html><html>  <head>    <meta charset="UTF-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    <title>使用 Canvas 播放视频</title>  </head>  <body>    <video id="video" controls="controls" style="display: none;">      <!-- 请替换为实际视频地址 -->      <source class="lazy" data-src="请替换为实际视频地址" />    </video>    <canvas      id="myCanvas"      width="460"      height="270"      style="border: 1px solid blue;"    ></canvas>    <div>      <button id="playBtn">播放</button>      <button id="pauseBtn">暂停</button>    </div>    <script>      const video = document.querySelector("#video");      const canvas = document.querySelector("#myCanvas");      const playBtn = document.querySelector("#playBtn");      const pauseBtn = document.querySelector("#pauseBtn");      const context = canvas.getContext("2d");      let timerId = null;      function draw() {        if (video.paused || video.ended) return;        context.clearRect(0, 0, canvas.width, canvas.height);        context.drawImage(video, 0, 0, canvas.width, canvas.height);        timerId = setTimeout(draw, 0);      }      playBtn.addEventListener("click", () => {        if (!video.paused) return;        video.play();        draw();      });      pauseBtn.addEventListener("click", () => {        if (video.paused) return;        video.pause();        clearTimeout(timerId);      });    </script>  </body></html>

以上是“前端H5中Video的使用场景有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

前端H5中Video的使用场景有哪些

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

下载Word文档

猜你喜欢

前端H5中Video的使用场景有哪些

这篇文章主要介绍前端H5中Video的使用场景有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.原生H5 video标签
2023-06-09

vuex中有哪些使用场景

这篇文章将为大家详细讲解有关vuex中有哪些使用场景,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区别是,使
2023-06-14

java中SPI的使用场景有哪些

这期内容当中小编将会给大家带来有关java中SPI的使用场景有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现
2023-06-14

​Cassandra的使用场景有哪些

Cassandra是一款分布式数据库,主要用于数据仓库和分析、物联网(IoT)、日志分析、社交媒体、电子商务、移动应用后端、广告技术、金融科技、医疗保健和云计算等场景。它具有可扩展性、高可用性和低延迟的特点,适合处理海量数据、实时数据流和高并发的访问需求。
​Cassandra的使用场景有哪些
2024-04-11

kafka的使用场景有哪些

Kafka的使用场景有以下几个:1. 数据流处理:Kafka被广泛应用于数据流处理系统中,可用于处理实时流数据,并将数据传递给下游处理器。它支持高吞吐量的数据流处理,能够快速处理大规模的数据。2. 日志收集和聚合:Kafka可以作为日志收集
2023-09-14

java中ThreadLocal的使用场景有哪些

今天就跟大家聊聊有关java中ThreadLocal的使用场景有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。常用的java框架有哪些1.SpringMVC,Spring Web
2023-06-14

Java中WeakHashMap的使用场景有哪些

Java中WeakHashMap是一种可以自动删除不再使用的键值对的Map实现,它的使用场景包括:1. 缓存:WeakHashMap适用于缓存实现中,当缓存的对象不再被其他对象引用时,WeakHashMap会自动删除该缓存对象,从而释放内存
2023-09-29

JavaScript中this的使用场景有哪些

本篇文章给大家分享的是有关JavaScript中this的使用场景有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JavaScript是什么JavaScript是一种直译式
2023-06-14

redis中set的使用场景有哪些

Redis中的Set数据结构常用于以下场景:1. 去重:Set中的元素是唯一的,可以用来存储一组唯一的值,比如用户的标签、IP地址等。2. 计数:Set中的元素不重复,可以用来统计某个事件的不同用户数、不同IP数等。3. 关联关系:Set中
2023-09-04

redis中hash的使用场景有哪些

存储对象的属性和值:可以将一个对象的属性和值存储在一个hash中,方便对对象进行存储和检索。缓存数据:可以将一些需要频繁访问的数据存储在hash中,以提高访问速度。计数器:可以使用hash来实现一个计数器,对某个事件的数量进行统计。用户信息
redis中hash的使用场景有哪些
2024-04-03

webworker的使用场景有哪些

Web Worker 是一种可以在后台运行的 JavaScript 线程,主要用于处理高性能计算和长时间运行的任务,以避免阻塞主线程,提高网页的响应性能。以下是一些 Web Worker 的使用场景:1. 大数据处理:Web Worker
2023-09-21

mq使用场景有哪些

今天小编给大家分享一下mq使用场景有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。MQ的介绍及特点MQ 称为消息队列。消
2023-06-29

android中广播的使用场景有哪些

在Android中,广播(Broadcast)的使用场景包括以下几种:1. 系统级广播:系统级广播是由Android系统发送的广播,可以用于监听系统级事件,如设备启动、网络状态变化、电池电量变化等。2. 自定义广播:开发者可以自定义广播,并
2023-09-04

android ndk使用场景有哪些

Android NDK主要用于以下几个场景:1. 提高性能:使用NDK可以将一些性能敏感的部分代码通过C或C++编写,以提高执行效率。例如,图像和视频处理、游戏引擎、音频处理等应用。2. 移植已有的C/C++库:某些情况下,可能已经存在一些
2023-08-23

Java中线程池的使用场景有哪些

今天就跟大家聊聊有关Java中线程池的使用场景有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 一、如下方式存在的问题new Thread() { @Override
2023-06-16

linux中lscpu命令的使用场景有哪些

查看系统中CPU相关信息:使用lscpu命令可以查看系统中CPU的相关信息,包括CPU型号、架构、核心数、线程数、缓存大小等。查看系统中的NUMA节点信息:lscpu命令还可以查看系统中的NUMA节点信息,包括节点数量、节点间的亲和性等。
linux中lscpu命令的使用场景有哪些
2024-03-07

MongoDB中hash索引的使用场景有哪些

存储密码:在用户认证系统中,通常会将用户的密码存储为哈希值,以增加安全性。使用哈希索引可以加快对密码的查找速度。数据去重:在数据中存在重复值的情况下,可以使用哈希索引来快速查找和去重重复数据。数据分片:在分布式系统中,可以使用哈希索引来对数
MongoDB中hash索引的使用场景有哪些
2024-04-19

java集合的使用场景有哪些

Java集合框架提供了一组接口和类,用于存储和操作数据。以下是一些常见的Java集合使用场景:1. 存储和操作一组对象:Java集合可以用来存储和操作一组对象,例如List、Set和Queue等接口及其实现类。2. 保存键值对:Java的M
2023-08-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录