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在线视频(监控,直播)解决方案相关推荐

  1. 如何实现web浏览器无插件播放视频监控直播?

    很多年前,监控视频的直播只能够进行单一的服务器传输,而如今,很多网站已经可以观看视频直播了,不过大多网站观看视频直播的时候还是需要下载插件,有时候就会碰到系统不兼容.版本不对应等问题,那么能不能实现w ...

  2. srs服务器播放文件,使用SRS+ffmpeg搭建流媒体服务器播放m3u8格式视频

    1.简介 srs是一个简单的流媒体开源直播软件,ffmpeg是完整的跨平台解决方案,用于记录,转换和流传输音频和视频. 2.相关 官网下载页面:点击我到达 在线演示播放页面:点击我到达 Git页面:点 ...

  3. video标签播放m3u8格式视频-------html页面

    m3u8是苹果公司推出一种视频播放标准,是m3u的一种,不过 编码方式是utf-8,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少I/o访问次数,一般 ...

  4. 网页无插件播放265/264视频/监控大屏/GPU解码

    网页无插件播放265/264视频/监控大屏/GPU解码 先看效果 特点 GPU解码,chrome网页播放32路 h256/hevc 直播视频流,毫无压力. 提供1分屏.4分屏.8分屏.9分屏.16分屏 ...

  5. uniapp H5 项目 播放 m3u8格式视频

    uniapp H5 项目 播放 m3u8格式视频 阐述 在项目中,可能会获取一些直播流地址,比如最常见的就是.m3u8视频格式.在小程序可以直接使用video 标签就可以直接播放,因为小程序有自己的引 ...

  6. Video 标签播放 m3u8 格式视频

    在不借助流媒体播放器的前提下,直接播放 m3u8 格式的视频文件 更多精彩 更多技术博客,请移步 IT人才终生实训与职业进阶平台 - 实训在线 写在前面的话 为什么要播放 m3u8 格式的视频 对于一 ...

  7. videojs播放m3u8后缀视频Demo

    videojs播放m3u8后缀视频Demo 转载自:https://segmentfault.com/a/1190000024447688 <!DOCTYPE html><html ...

  8. androidTV在html中集成饺子播放器并播放m3u8格式视频

    饺子播放器的默认引擎是MediaPlayer,只能播放一些常见格式的视频.想要播放m3u8格式,需要切换引擎 jzvdStd.setUp("http://youku.cdn-iqiyi.co ...

  9. video插件播放m3u8格式视频(存原生)

    video插件播放m3u8格式视频(存原生) 这里使用原生的javascript实现m3u8格式视频播放. 使用了包括video.min.js库和HLS插件. 1-基础使用 <!DOCTYPE ...

最新文章

  1. 第五节 suid/ sgid /sbit /which /locate / find /stat / ln / uname -a
  2. 字符串加括号问题(矩阵乘法组合问题)C++
  3. jvm性能调优实战 - 40 百万级数据误处理导致的频繁Full GC问题优化
  4. geth 以太坊钱包_以太坊Geth节点RPC API中文文档
  5. Meta AI 发布 data2vec!统一模态的新里程碑!
  6. 别琢磨了,企业高效灵活运作的秘密拿走:企业邮箱5折起!分享会场抽取苹果手机和猫超卡!
  7. 用C语言设置程序开机自启动
  8. 字节跳动想取消大下周,遭到部分员工激烈反对
  9. 浅谈渗透测试之前期信息搜集
  10. 镭速(Raysync)文件传输高可用部署介绍!
  11. php 获取季度起始日期,php获取昨天、今天、上周、本周、上月、本月、上季度、本季度、今年的起始时间...
  12. hdu 1241Oil Deposits(dfs模板)
  13. 聊聊你们关心的视频号
  14. 学习Hibernate框架笔记-第3天
  15. tk.mybatis.mapper.MapperException: 无法获取 com.zhao.mapper.BIllTypeMapper.selectCountByExample 方法的泛型信息
  16. [Other]规范的邮件签名格式及HTML代码
  17. android支付宝系统繁忙,支付宝支付 系统繁忙,请稍后再试 62008 难道没人碰到过吗...
  18. 物联网+Android(SeekBar)、RGB灯控制
  19. Spring的AOP切面编程
  20. head first java 最新版_Head First Java.(第2版)

热门文章

  1. 开源组件风险修复,升级版本就够了吗?
  2. 计算机毕业设计ssm基于Java通识课程管理系统v87xr系统+程序+源码+lw+远程部署
  3. win10默认浏览器设置中找不到谷歌浏览器
  4. eclipse老是building workspace及自动更新问题,eclipse加速
  5. 南卡新品Runner Pro3,骨传导耳机新高度,为超越而生
  6. 笔记本用了这么久,快捷键知多少?
  7. qt 设置ui窗口为固定大小_Qt 设置窗口居中显示和窗体大小
  8. linux中creat-file函数,c语言createfile函数用法?
  9. 多多自走棋改动_多多自走棋:体验服版本大更新,全新UI和新增两个龙族棋子...
  10. 堆与栈的区别详细总结