Unity WebGl播放m3u8在线视频(监控,直播)解决方案
WebGL版本播放视频是很大的一个坑,教程也不多。以下为工作中使用的两个方法。
一、使用AVProVideo插件
新版AVProVideo插件支持WebGl播放
倒入插件,我用的版本是1.9.4,文章结尾会放链接。
1.修改SourcePath为 Absolute Path Or URL
在下面写上播放的链接,
测试链接为CCTV1:
http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
2.打开Platform Specific,添加Js脚本
—————————
选择WebGl;
(1)External Library选择None,则只能在IEge浏览器播放,火狐 ,谷歌不能解码m3u8。
(2)External Library选择Hls Js选项,
需要在打包出来的项目Build中添加一个js脚本,链接:https://pan.baidu.com/s/1UzIaq4Lbx6zu8BaV0AfrIw 密码:k8lm
并且需要在火狐和谷歌下载对应插件。
以火狐为例,
安装以下俩个插件,即可解析m3u8格式。
需要注意,火狐和谷歌需要跨域之后,才可以打开网站,不然会报错。
火狐跨域链接教程:https://blog.csdn.net/tjj3027/article/details/81354350
谷歌跨域链接教程:
https://www.cnblogs.com/wang-sai-sai/p/10875652.html
3.修改Index.html代码
在head中添加上
对应刚才添加的hls.min.js脚本路径
4.打包测试即可。
WebGL内嵌网页实现
参考链接https://blog.csdn.net/qq_37114869/article/details/103010446
1.使用html插件,打开在线视频
————————————————————————
打开记事本,复制以下代码,将后缀改为html
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>PC端 Chimee-Player解决方案</title><script src="http://lib.baomitu.com/chimee-player/1.1.10/chimee-player.browser.js"></script>
</head>
<div id="wrapper"></div>
<body><script>new ChimeePlayer({wrapper: '#wrapper', // video dom容器src: 'http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8',box: 'hls',isLive: true,autoplay: true,controls: true});
</script></body></html>
其中<script src="http://lib.baomitu.com/chimee-player/1.1.10/chimee-player.browser.js"></script>
这行代码为html调用直播插件
可以直接在浏览器打开
2.Unity与WebGl互通
可以参考:https://blog.csdn.net/yuan9a/article/details/90640498
2.1新版方案
2.1.1 创建一个名字任意,后缀为.jslib的文件。
需要放在Plugins文件夹下
注意 若是mac版本需要注意文本的编码问题,可以改完后缀用vs打开看看,是否乱码。
注意 若传输字符串,需要使用Pointer_stringify(参数),否则传输会出现问题。
mergeInto(LibraryManager.library, {Hello: function (str) {Nq(Pointer_stringify(str));},
});
其中Hellow在unity中使用,Nq对应html中js方法
2.1.2 创建C#脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Runtime.InteropServices;public class NewTest : MonoBehaviour
{//引用jslib的Hello()方法//注意是两个_[DllImport("__Internal")]private static extern void Hello(string str);public void New(string str){Hello(str);}
}
挂载到unity中的Button的OnClick上
2.1.3
打包出WebGl包,将之前创建的播放视频的html,与打包出来的index.html放到同一目录下。
2.1.4
修改index.html
添加如下代码
<script src="https://cdn.bootcss.com/jquery/1.11.0/jquery.min.js"></script><script src="https://cdn.bootcss.com/layer/2.3/layer.js"></script><script>function Nq(str) {alert(str);layer.open({type: 2,title: false,area: ['800px', '460px'],shade: 0.8,closeBtn: 0,shadeClose: true,content: './indexZhibo.html'});}</script>
前两个<script>中调用的js为内腔网页所需要的js插件。
最后一个则是对应了.jslib文件中的Nq()方法,实现内嵌网页的生成。
完整版index.html代码
<!DOCTYPE html>
<html lang="en-us"><head><meta charset="utf-8"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Unity WebGL Player | NewNQWeb</title><link rel="shortcut icon" href="TemplateData/favicon.ico"><link rel="stylesheet" href="TemplateData/style.css"><script src="TemplateData/UnityProgress.js"></script><script src="Build/UnityLoader.js"></script><script src="https://cdn.bootcss.com/jquery/1.11.0/jquery.min.js"></script><script src="https://cdn.bootcss.com/layer/2.3/layer.js"></script><script>function Nq(str) {alert(str);layer.open({type: 2,title: false,area: ['800px', '460px'],shade: 0.8,closeBtn: 0,shadeClose: true,content: './indexZhibo.html'});}</script><script>var gameInstance = UnityLoader.instantiate("gameContainer", "Build/nqtest.json", {onProgress: UnityProgress});</script></head><body><div class="webgl-content"><div id="gameContainer" style="width: 960px; height: 600px"></div><div class="footer"><div class="webgl-logo"></div><div class="fullscreen" onclick="gameInstance.SetFullscreen(1)"></div><div class="title">NewNQWeb</div></div></div></body>
</html>
2.1.5打开效果
点击黑色区域返回
2.2旧版方案
2.2.1
不需要编写.jslib文件
只需要在C#中使用下面代码即可调用html中js方法
public void Old(string str){Application.ExternalCall("Nq", str);}
2.2.2
同新版本一样的修改html代码
添加如下代码。
<script src="https://cdn.bootcss.com/jquery/1.11.0/jquery.min.js"></script><script src="https://cdn.bootcss.com/layer/2.3/layer.js"></script><script>function Nq(str) {alert(str);layer.open({type: 2,title: false,area: ['800px', '460px'],shade: 0.8,closeBtn: 0,shadeClose: true,content: './indexZhibo.html'});}</script>
2.2.3
将C#方法绑定到Button的OnClick上即可。
AVProVideo视频播放插件1.9.4
链接:https://pan.baidu.com/s/1ixEzU-5TkAWhhEm02Nh0yA 密码:y2s5
AVProVideo方法在webgl需要的js文件
链接:https://pan.baidu.com/s/1UzIaq4Lbx6zu8BaV0AfrIw 密码:k8lm
两种方法的工程链接:
https://download.csdn.net/download/boyZhenGui/12328690
内嵌网页方法链接(含Demo):
https://download.csdn.net/download/boyZhenGui/12328653
感谢阅读,如果对你有帮助可以给我点个赞和收藏,谢谢啦
Unity WebGl播放m3u8在线视频(监控,直播)解决方案相关推荐
- 如何实现web浏览器无插件播放视频监控直播?
很多年前,监控视频的直播只能够进行单一的服务器传输,而如今,很多网站已经可以观看视频直播了,不过大多网站观看视频直播的时候还是需要下载插件,有时候就会碰到系统不兼容.版本不对应等问题,那么能不能实现w ...
- srs服务器播放文件,使用SRS+ffmpeg搭建流媒体服务器播放m3u8格式视频
1.简介 srs是一个简单的流媒体开源直播软件,ffmpeg是完整的跨平台解决方案,用于记录,转换和流传输音频和视频. 2.相关 官网下载页面:点击我到达 在线演示播放页面:点击我到达 Git页面:点 ...
- video标签播放m3u8格式视频-------html页面
m3u8是苹果公司推出一种视频播放标准,是m3u的一种,不过 编码方式是utf-8,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少I/o访问次数,一般 ...
- 网页无插件播放265/264视频/监控大屏/GPU解码
网页无插件播放265/264视频/监控大屏/GPU解码 先看效果 特点 GPU解码,chrome网页播放32路 h256/hevc 直播视频流,毫无压力. 提供1分屏.4分屏.8分屏.9分屏.16分屏 ...
- uniapp H5 项目 播放 m3u8格式视频
uniapp H5 项目 播放 m3u8格式视频 阐述 在项目中,可能会获取一些直播流地址,比如最常见的就是.m3u8视频格式.在小程序可以直接使用video 标签就可以直接播放,因为小程序有自己的引 ...
- Video 标签播放 m3u8 格式视频
在不借助流媒体播放器的前提下,直接播放 m3u8 格式的视频文件 更多精彩 更多技术博客,请移步 IT人才终生实训与职业进阶平台 - 实训在线 写在前面的话 为什么要播放 m3u8 格式的视频 对于一 ...
- videojs播放m3u8后缀视频Demo
videojs播放m3u8后缀视频Demo 转载自:https://segmentfault.com/a/1190000024447688 <!DOCTYPE html><html ...
- androidTV在html中集成饺子播放器并播放m3u8格式视频
饺子播放器的默认引擎是MediaPlayer,只能播放一些常见格式的视频.想要播放m3u8格式,需要切换引擎 jzvdStd.setUp("http://youku.cdn-iqiyi.co ...
- video插件播放m3u8格式视频(存原生)
video插件播放m3u8格式视频(存原生) 这里使用原生的javascript实现m3u8格式视频播放. 使用了包括video.min.js库和HLS插件. 1-基础使用 <!DOCTYPE ...
最新文章
- 第五节 suid/ sgid /sbit /which /locate / find /stat / ln / uname -a
- 字符串加括号问题(矩阵乘法组合问题)C++
- jvm性能调优实战 - 40 百万级数据误处理导致的频繁Full GC问题优化
- geth 以太坊钱包_以太坊Geth节点RPC API中文文档
- Meta AI 发布 data2vec!统一模态的新里程碑!
- 别琢磨了,企业高效灵活运作的秘密拿走:企业邮箱5折起!分享会场抽取苹果手机和猫超卡!
- 用C语言设置程序开机自启动
- 字节跳动想取消大下周,遭到部分员工激烈反对
- 浅谈渗透测试之前期信息搜集
- 镭速(Raysync)文件传输高可用部署介绍!
- php 获取季度起始日期,php获取昨天、今天、上周、本周、上月、本月、上季度、本季度、今年的起始时间...
- hdu 1241Oil Deposits(dfs模板)
- 聊聊你们关心的视频号
- 学习Hibernate框架笔记-第3天
- tk.mybatis.mapper.MapperException: 无法获取 com.zhao.mapper.BIllTypeMapper.selectCountByExample 方法的泛型信息
- [Other]规范的邮件签名格式及HTML代码
- android支付宝系统繁忙,支付宝支付 系统繁忙,请稍后再试 62008 难道没人碰到过吗...
- 物联网+Android(SeekBar)、RGB灯控制
- Spring的AOP切面编程
- head first java 最新版_Head First Java.(第2版)
热门文章
- 开源组件风险修复,升级版本就够了吗?
- 计算机毕业设计ssm基于Java通识课程管理系统v87xr系统+程序+源码+lw+远程部署
- win10默认浏览器设置中找不到谷歌浏览器
- eclipse老是building workspace及自动更新问题,eclipse加速
- 南卡新品Runner Pro3,骨传导耳机新高度,为超越而生
- 笔记本用了这么久,快捷键知多少?
- qt 设置ui窗口为固定大小_Qt 设置窗口居中显示和窗体大小
- linux中creat-file函数,c语言createfile函数用法?
- 多多自走棋改动_多多自走棋:体验服版本大更新,全新UI和新增两个龙族棋子...
- 堆与栈的区别详细总结