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

Unity引擎播放HLS自适应码率流媒体视频

  大家好,我是阿赵。今天来学习一下Unity引擎怎样播放自适应码率视频的方法。

一、 HLS是什么

在这里插入图片描述

  HLS是什么,各位可以自己百度一下。简单的概括,HLS是一种自适应码率流媒体传输协议,实现的是分片下载和动态码率切换。
它的原理是把一段视频切分开很多段,然后分段加载,如果遇到网速不好或者其他适应性问题,可以动态的切换到不同的码率去播放。

二、 视频怎样转换HLS

  如果需要本地把mp4之类的文件转换成HLS协议播放,需要用到ffmpeg。
可以去官网下载:https://ffmpeg.org/
下载的时候,比如是Windows系统,可以选择下面的Windows,然后选择一个别人build好的exe版本:
在这里插入图片描述

  当下载完成之后,解压缩,会是这样:
在这里插入图片描述

  其中bin文件夹里面会有exe可执行文件:
在这里插入图片描述

  接下来使用ffmpeg来转换视频试试:
比如我拿了一个这样的mp4文件:
在这里插入图片描述

  然后用cmd控制台找到ffmpeg.exe存放的路径,然后:

ffmpeg.exe -i d:/video/orig/Cones.mp4 -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls d:/video/hls/Cones.m3u8

  这个命令的意思是,我的原始mp4文件放在d:/video/orig/Cones.mp4,然后想要转换后的文件放在d:/video/hls/Cones.m3u8,然后是打算把视频切片成10秒一段。
转换后的文件是这样的,包括一个m3u8文件,然后还有一个或者多个ts文件。
在这里插入图片描述

  这里只有一个ts文件,是因为我选择的这个mp4文件本身就比较短,不到10秒,所以只能剪出一段。于是我改一下,改成3秒一段:

ffmpeg.exe -i d:/video/orig/Cones.mp4 -codec: copy -start_number 0 -hls_time 3 -hls_list_size 0 -f hls d:/video/hls/Cones.m3u8

  这时候就剪出3个ts文件了:
在这里插入图片描述

  打开m3u8文件看看:
在这里插入图片描述

  里面只是几率了这个视频的一些情况和ts文件的分布。
所以实际播放的视频是在ts文件里面的。

三、 Unity引擎怎样播放HLS

  Unity自带的VideoPlayer用于播放mp4视频是非常好用的,我们可以试试它是否能播放HLS的m3u8文件:
在这里插入图片描述

  很可惜,VideoPlayer是不能播放m3u8文件的:
在这里插入图片描述

  于是这里要用到一个视频播放插件,叫做AVPro Video:
在这里插入图片描述

  具体的AVPro用法不是这次的重点,所以请自行下载和查询。
设置一下AVPro的MediaPlayer,MediaSource设置成Path,然后类型改成Absolute PathOrUrl,把刚才不能播放的m3u8文件填入MediaPlayer里面:

在这里插入图片描述

  可以看到,这次在Unity引擎里面已经顺利的播放出HLS协议的m3u8文件了:
在这里插入图片描述

四、 WebGL怎样播放HLS

  下面试试把Unity项目导出成WebGL还保持播放视频。先把刚才的项目试试导出WebGL:

在这里插入图片描述

  由于WebGL的特殊性,所以在MediaPlayer上面要选择一下平台特性,找到WebGL,设置External Library为Hls js。
在这里插入图片描述

  这里的意思是,需要通过Hls Js文件来播放WebGL下的视频。

  这里主要需要hls.min.js
可以去这里下载:https://gitee.com/mirrors/hls-js/
下载下来之后会找到它:
在这里插入图片描述

  这时候用Unity打包WebGL,打包完是这样的:
在这里插入图片描述

  然后打开TemplateData文件夹,把hls.min.js文件放到里面:
在这里插入图片描述

  再用编辑器打开Index.html:
在这里插入图片描述

  在head标签里面加上一句调用:

<script src="TemplateData/hls.min.js"></script>

  由于WebGL是不能直接在本地播放的,所以把刚才生成的文件全部放到服务器去,比如本地搭一个阿帕奇服务器,这时候可以通过ip地址去访问刚才的index.html。这个时候,网页打开了,会看到视频并没有播放,而是停留在了第一帧:
在这里插入图片描述

  这里有个WebGL本身的问题,就是视频和音频不能自己播放,要在用户操作后才能播放。为了测试,我简单的加了个播放按钮,点击之后,视频就正常开始播放了:
在这里插入图片描述

http://www.lryc.cn/news/624350.html

相关文章:

  • Hi3519DV500 AIISP源码分享 臻全彩 黑光全彩摄像机源码
  • python的课外学习生活活动系统
  • JavaWeb 获取应用根路径的全面指南
  • 深度学习 --- 基于MobileNetV3 实现的花卉识别
  • C 语言数据结构与算法的复杂度分析:从理论到实战的效率衡量指南
  • OCR技术全景解析:从传统模板到认知智能的跃迁
  • 8 文本分析
  • JavaSE——高级篇
  • Django 请求生命周期
  • 网络间的通用语言TCP/IP-网络中的通用规则2
  • QNX 性能分析工具(hogs pidin tracelogger)
  • 规避(EDR)安全检测--避免二进制文件落地
  • django+Vue3实现前后端分离式实时聊天室
  • linux应用软件编程:线程
  • 【C++✨】多种 C++ 解法固定宽度右对齐输出(每个数占 8 列)
  • 【Java基础】反射,注解,异常,Java8新特性,object类-详细介绍
  • 鸿蒙中应用框架和应用模型
  • 【P18 3-10】OpenCV Python—— 鼠标控制,鼠标回调函数(鼠标移动、按下、。。。),鼠标绘制基本图形(直线、圆、矩形)
  • CVPR 2025|英伟达联合牛津大学提出面向3D医学成像的统一分割基础模型
  • rust 从入门到精通之变量和常量
  • 视觉语言导航(14)——VLN ON ROBOTIC 4.4
  • 多线程初阶-线程安全 (面试和工作的重点!!!)
  • Gartner发布2025年AI与网络安全成熟度曲线:用AI增强网络安全计划的27项技术与创新
  • 猫头虎AI分享|一款智能量化交易系统:QuantCell,从数据收集到策略执行全流程自动化
  • #Datawhale 组队学习#8月-工作流自动化n8n入门-1
  • 牛子图论进阶
  • ChatGPT-5 对教育行业的影响与案例研究
  • 【领码课堂】AI写码不再“盲跑”,方案先行,自动化高效落地
  • 【完整源码+数据集+部署教程】无人机目标检测系统源码和数据集:改进yolo11-efficientViT
  • MQTT(轻量级消息中间件)基本使用指南