当前位置: 首页 > news >正文

uniapp m3u8格式视频加载

uniapp一:mui-player:三方  h5 web app

 

uniapp 使用 mui-player 插件播放 m3u8/flv 视频流_翘翘红的博客-CSDN博客

uniapp 开发的h5项目,需要播放m3u8/flv后缀的视频,网上有很多视频插件,但是样式和效果不尽如人意,博主最后选择mui-player插件:

定制化稍微强一点以及有官方文档可以阅读,官网文档介绍 | MuiPlayer

二:Dplayer.js:三方  h5 web

uniapp项目引入Dplayer.js以及hls.js用来解析播放m3u8直播流视频文件,文末有项目代码可供下载_wang_9909的博客-CSDN博客

在项目中,可能会获取一些直播流地址,比如最常见的就是.m3u8视频格式。在小程序可以直接使用video 标签就可以直接播放,因为小程序有自己的引擎,可以直接使用。H5页面是运行在浏览器上面的,不能直接播放

​​​​​​​

this.dp = new Dplayer({//播放器的一些参数container: document.getElementById('dplayer'),autoplay: false, //是否自动播放theme: '#FADFA3', //主题色loop: true,//视频是否循环播放lang: 'zh-cn',screenshot: false,//是否开启截图hotkey: true,//是否开启热键preload: 'auto',//视频是否预加载volume: 0.7,//默认音量mutex: true,//阻止多个播放器同时播放,当前播放器播放时暂停其他播放器playbackSpeed: [0.5, 1, 1.5, 2], //可选的播放速率,可以设置成自定义的数组  几倍速// 自定义右键菜单contextmenu:[],ban_drag: true // 缩略底部可拖动进度条,true,隐藏 false显示video: {url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-uni4934e7b/c4d93960-5643-11eb-a16f-5b3e54966275.m3u8 ', //视频地址type: 'customHls',customType: {customHls: function(video, player) {const hls = new Hls()  //实例化Hls  用于解析m3u8hls.loadSource(video.src)hls.attachMedia(video)}},},bulletSecret: { // 随意跳动标签,防伪enabled: parseInt(this.newconfig.player.enabled_bullet_secret) === 1,text: this.newconfig.player.bullet_secret.text.replace("${user.mobile}", this.commentUsers.mobile).replace("${user.id}", this.commentUsers.id),size: bulletSecretFontSize + "px",color: !this.newconfig.player.bullet_secret.color ?"red" : this.newconfig.player.bullet_secret.color,opacity: this.newconfig.player.bullet_secret.opacity,},});// 微信同层播放 :https://blog.csdn.net/superKM/article/details/87603255/setTimeout(() => {const dplay = document.querySelector(".dplayer-video");const u = navigator.userAgent;let isAndroid = u.indexOf("Android") > -1 || u.indexOf("Adr") > -1;if (isAndroid) {dplay.setAttribute("x5-video-player-type", "h5-page");dplay.removeAttribute("playsinline");dplay.removeAttribute("webkit-playsinline");} else {dplay.removeAttribute("x5-video-player-type", "h5-page");dplay.setAttribute("playsinline", "");dplay.setAttribute("webkit-playsinline", "");}}, 200);

​​​​​​​

设置dplayer内部属性:vue 仿抖音视频列表(兼容微信内置X5浏览器)_vue仿抖音_superKM的博客-CSDN博客

dplayer官网:​​​​​​​指南 | DPlayer

三:video:uniapp官方video 格式有点限制

video | uni-app官网

  • 视频播放格式说明:

    • H5平台:支持的视频格式视浏览器而定,一般通用的都支持:mp4、webm 和 ogg。(<video/> 组件编译到 H5 时会替换为标准 html 的 video 标签)。H5端也可以自行在条件编译里使用video.js等三方库,这些库可以自动判断环境兼容以决定使用标准video或flash来播放。
    • 小程序平台:各小程序平台支持程度不同,详见各家文档:微信小程序视频组件文档、支付宝小程序video组件、百度小程序视频组件文档、字节跳动小程序视频组件文档、QQ小程序视频组件文档、华为快应用视频组件文档
    • App平台: 支持本地视频(mp4/flv)、网络视频地址(mp4/flv/m3u8)及流媒体(rtmp/hls/rtsp)。

h5 video可以加载m3u8格式:h5的video标签播放m3u8格式的视频流

四、HLS 文件视频介绍

原文:浅析HTML5点播m3u8(hls)格式视频和flv.js播放flv视频流_技术分享_五块二  

这两年来越来越多的视频应用使用了m3u8格式的视频,因为可以兼容PC、移动端。相比mp4等视频源,m3u8可以减轻服务器压力(按需加载)。HLS是由苹果公司率先提出的一种协议标准,可用于直播。

  查看演示:https://www.helloweba.net/demo/2018/hls/

  项目地址:https://github.com/video-dev/hls.js

  m3u8是一种基于HLS(HTTP Live Streaming) 文件视频格式,它主要是存放整个视频的基本信息和分片(Segment)组成。不同于mp4大文件,m3u8是由一系列的 ts 文件组成,一般一个ts文件大概5-10秒,这些ts文件通过一个.m3u8文件做索引。用户播放视频时,可随意拖动视频进度,会读取相应进度的ts文件继续观看视频,不必等到下载完整的视频。因此在播放m3u8的时候很少有卡顿的现象。

  本文只做HLS点播讲解,与直播不同,点播是指视频文件已经在编辑好,随时可播放。

  由于HLS是由Apple公司提出的,所以在iOS电脑或手机上,你可以直接使用Safari浏览器的<video>播放m3u8格式视频文件。而其他浏览器则需要借助hls.js来兼容m3u8。

  使用hls.js,不需要任何定制的播放器,只需要<video>元素就能播放m3u8

四、如何使用 继续上面video使用

1、加载js和播放元素

  在需要放置视频的页面位置上加入video元素和hls.js文件。

<video id="video" controls width="100%"></video>
<script src="hls.js"></script>

2、调用hls.js

  首先判断浏览器是否支持hls,如果支持就实例化new Hls(),加载m3u8源,然后播放。如果不支持hls,而支持苹果原生应用,则播放另一个m3u8源。

var video = document.getElementById('video');if(Hls.isSupported()) {var hls = new Hls();hls.loadSource('https://yunqivedio.alicdn.com/2017yq/v2/0x0/96d79d3f5400514a6883869399708e11/96d79d3f5400514a6883869399708e11.m3u8');hls.attachMedia(video);hls.on(Hls.Events.MANIFEST_PARSED,function() {video.play();});} else if (video.canPlayType('application/vnd.apple.mpegurl')) {video.src = 'https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8';video.addEventListener('loadedmetadata',function() {video.play();});}

  运行,试着用PC浏览器和手机访问,你会发现m3u8的播放很流畅

四、在Vue中使用hls.js

// 1、使用Vue框架的同学可以用npm先安装hls。
npm install --save hls.js
// 2、然后添加组件
<video ref="videoRef" width="400" controls></video>
// 3、最后挂载代码:
<script>
import Hls from 'hls.js'; 
export default {mounted: function() {var hls = new Hls();hls.loadSource('https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8');hls.attachMedia(this.$refs.videoRef);hls.on(Hls.Events.MANIFEST_PARSED,function() {this.$refs.videoRef.play();});}
}
</script>

五、使用flv.js实现flv格式的监控视频流播放

1、flv.js常用方法

  flvjs.isSupported():判断当前浏览器是否支持播放

  flvPlayer = flvjs.createPlayer(mediaDataSource: MediaDataSource, config?: Config):创建一个播放实例

  flvPlayer.attachMediaElement(mediaElement: HTMLMediaElement):将播放实例注册到video节点

  flvPlayer.load():加载视频

  flvPlayer.play():播放视频

  flvPlayer.pause():视频暂停

  flvPlayer.unload():去除视频加载

  flvPlayer.detachMediaElement():将播放实例从节点中取出

  flvPlayer.destroy():销毁播放实例

2、flv.js简单使用

// html
<video id="my-player" preload="auto" muted autoplay type="rtmp/flv"><source src="">
</video>
// 引入flv.js
<script src="./flv.js/flv.min.js"></script>
// 使用flv.js实现播放flv格式流
// 获取video节点
videoElement = document.getElementById('my-player');
if (flvjs.isSupported()) {flvPlayer = flvjs.createPlayer({type: 'flv',isLive: true,url: 'XXXX',//flv格式流地址},{enableWorker: false, //不启用分离线程enableStashBuffer: false, //关闭IO隐藏缓冲区reuseRedirectedURL: true, //重用301/302重定向url,用于随后的请求,如查找、重新连接等。autoCleanupSourceBuffer: true //自动清除缓存);flvPlayer.attachMediaElement(videoElement);flvPlayer.load(); //加载flvPlayer.play();//播放
}// 关闭视频流
flvPlayer.pause();
flvPlayer.unload();
flvPlayer.detachMediaElement();
flvPlayer.destroy();
flvPlayer = null;

  rtmp 视频流不支持的,可以转为 flv 视频流(http://1011.hlsplay.aodianyun.com/demo/game.flv)

相关文章:

uniapp m3u8格式视频加载

uniapp一&#xff1a;mui-player&#xff1a;三方 h5 web app uniapp 使用 mui-player 插件播放 m3u8/flv 视频流_翘翘红的博客-CSDN博客 uniapp 开发的h5项目&#xff0c;需要播放m3u8/flv后缀的视频&#xff0c;网上有很多视频插件&#xff0c;但是样式和效果不尽如人意&am…...

iOS描述文件(.mobileprovision)一键申请

iOS描述文件(.mobileprovision)一键申请 在主界面上点击描述文件按钮。 新建ios描述文件 然后点击新建&#xff0c;然后输入描述文件名称&#xff0c;描述文件名称字符和数字&#xff0c;自己好辨识就可以。然后选择描述文件类型&#xff0c;再选择bundle ID&#xff0c;如果…...

进行性能压力测试的原因、目的和好处

性能压力测试是指在模拟高负载、高并发情况下对软件系统进行测试&#xff0c;以衡量系统在实际使用过程中的性能表现。这些测试可以为生产环境中的应用程序提供关键数据&#xff0c;并帮助开发人员从根本上了解系统的实际性能。在本文中&#xff0c;我们将探讨进行性能压力测试…...

【计算机视觉】如何利用 CLIP 做简单的人脸任务?(含源代码)

文章目录 一、数据集介绍二、源代码 结果三、代码逐行解读 一、数据集介绍 CELEBA 数据集&#xff08;CelebFaces Attributes Dataset&#xff09;是一个大规模的人脸图像数据集&#xff0c;旨在用于训练和评估人脸相关的计算机视觉模型。该数据集由众多名人的脸部图像组成&a…...

基于显扬科技3D视觉相机的医疗试管分拣系统

行业现状&#xff1a; 医疗试管分拣是医疗行业中的一个重要环节&#xff0c;指将医疗实验室或生物技术研究中的试管按照一定的规则进行分拣&#xff0c;并对试管的类型、位置、数量等信息进行识别和管理。 随着医疗技术的不断发展和诊断治疗的精细化&#xff0c;医疗试管分拣…...

编译zlib

zlib被设计为一个免费的&#xff0c;通用的&#xff0c;法律上不受限制的-即不受任何专利保护的无损数据压缩库&#xff0c;几乎可以在任何计算机硬件和操作系统上使用。 官网&#xff1a;http://www.zlib.net/ 下载zlib源码:http://www.zlib.net/zlib1213.zip 备用地址&#x…...

如何让“ChatGPT自己写出好的Prompt的“脚本在这里

写个好的Prompt太费力了 在网上&#xff0c;你可能会看到很多人告诉你如何写Prompt&#xff0c;需要遵循各种规则&#xff0c;扮演不同的角色&#xff0c;任务明确、要求详细&#xff0c;还需要不断迭代优化。写一个出色的Prompt需要投入大量的时间和精力。甚至有一些公开的Pr…...

菜单选择shell

[rootes3 data]# vi action.sh #!/bin/bash . /etc/init.d/functionsecho -en "\E[$[RANDOM%731];1m"cat <<EOF请选择&#xff1a;1) 备份数据库2)清理日志3)软件升级4)软件回滚5)删库跑路EOFecho -en \E[0mread -p "请选择上面的项对应的数字1-5&#xf…...

Redis高可用性详解

目录 ​编辑 高可用性&#xff1a; 主从复制&#xff08;Master-Slave Replication&#xff09;&#xff1a; 主从复制的一般工作流程&#xff1a; 哨兵模式&#xff08;Sentinel Mode&#xff09;&#xff1a; 哨兵模式的一般工作流程&#xff1a; 集群模式&#xff08…...

MySQL(1) ---- 数据库介绍与MySQL概述

介绍 1、什么是数据库&#xff1f; 数据库&#xff1a;DateBase&#xff08;DB&#xff09;&#xff0c;是存储和管理数据的仓库。数据库管理系统&#xff1a;DataBase Management System&#xff08;DBMS&#xff09;&#xff0c;操纵和管理数据库的大型软件。SQL&#xff1…...

面试题之软件测试流程

说说公司的软件测试流程&#xff0c;这&#xff0c;是常考的面试题之一。 不同公司的流程不一样&#xff0c;现状决定流程&#xff0c;没有绝对的对错。 以结果为导向&#xff0c;保证产品质量&#xff0c;提高测试效率&#xff0c;才是王道。 以下的流程为业界比较标准的流程&…...

MyBatis中#{}与${}的区别,与各自的应用场景

#{}和${}的区别&#xff1a; #{}: 底层使用PreparedStatement。特点&#xff1a;先进行SQL语句的编译&#xff0c;然后给SQL语句的占位符问号?传值。可以避免SQL注入的风险。 ${}&#xff1a;底层使用Statement。特点&#xff1a;先进行SQL语句的拼接&#xff0c;然后再对SQL语…...

泛型类相关

package com.test.test02;/* * GenericTest就是一个普通的类 * GenericTest<E>就是一个泛型类 * <>里面就是一个参数类型&#xff0c;但是这个类型是什么呢&#xff1f;这个类型现在是不确定的&#xff0c;相当于一个占位。 * 但是现在确定的是这个类型一定是一…...

一文速学数模-季节性时序预测SARIMA模型详解+Python实现

目录 前言 一、季节时间序列模型概述 二、SARIMA模型定义 三.SARIMA模型算法原理...

二叉树与图(C++刷题笔记)

二叉树与图&#xff08;C刷题笔记&#xff09; 113. 路径总和 II 力扣 从根节点深度遍历二叉树&#xff0c;先序遍历时&#xff0c;将节点存储至path栈中&#xff0c;使用path_val累加节点值 当遍历到叶子节点&#xff0c;检查path_val是否为sum&#xff0c;若是&#xff0c…...

STM32-ADC多通道输入实验

之前已经介绍了几个ADC的笔记和实验了&#xff0c;链接如下&#xff1a; 关于ADC的笔记1_Mr_rustylake的博客-CSDN博客 STM32-ADC单通道采集实验_Mr_rustylake的博客-CSDN博客 STM32-单通道ADC采集&#xff08;DMA读取&#xff09;实验_Mr_rustylake的博客-CSDN博客 接下来…...

javaIO流之文件流

目录 简介一、File的构造方法二、File的常用方法1、获取功能的方法2、绝对路径和相对路径3、判断功能的方法4、创建、删除功能的方法5、目录的遍历6、递归遍历 三、RandomAccessFile1、主要方法 四、Apache FileUtils 类1、复制文件或目录&#xff1a;2、删除文件或目录&#x…...

DMA-STM32

DMA-STM32 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节省了CPU的资源 12个独立可配置的通道:DMA1 (7个通道),DMA2 (5个通道) 每个通道都支持软件触发和特定的硬件触发 STM32…...

代码随想录算法训练营第二十七天|39. 组合总和、40.组合总和II、131.分割回文串

目录 39. 组合总和 40.组合总和II 131.分割回文串 39. 组合总和 本题是 集合里元素可以用无数次&#xff0c;那么和组合问题的差别 其实仅在于 startIndex上的控制 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法-组合总和&#xff08;对应…...

泛型(Generic) <? extends T>,<? super T>

通配符边界引入背景 使用泛型的过程中&#xff0c;经常出现一种很别扭的情况。我们有 Fruit 类&#xff0c;和它的派生类 Apple 类。 class Fruit {}class Apple extends Fruit {}然后有一个最简单的容器&#xff1a;Plate 类。盘子里可以放一个泛型的 “东西”. class Plat…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来&#xff0c;我国的工业领域正经历一场前所未有的数字化变革&#xff0c;从“双碳目标”到工业互联网平台的推广&#xff0c;国家政策和市场需求共同推动了制造业的升级。在这场变革中&#xff0c;数字孪生技术成为备受关注的关键工具&#xff0c;它不仅让企业“看见”设…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...

高保真组件库:开关

一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...

使用VMware克隆功能快速搭建集群

自己搭建的虚拟机&#xff0c;后续不管是学习java还是大数据&#xff0c;都需要集群&#xff0c;java需要分布式的微服务&#xff0c;大数据Hadoop的计算集群&#xff0c;如果从头开始搭建虚拟机会比较费时费力&#xff0c;这里分享一下如何使用克隆功能快速搭建一个集群 先把…...