重复打开同一个网站怎么做,开发公司与物业服务合同范本,百度竞价排名费用,wordpress采集图片大家好#xff0c;我是阿赵。今天来学习一下Unity引擎怎样播放自适应码率视频的方法。
一、 HLS是什么HLS是什么#xff0c;各位可以自己百度一下。简单的概括#xff0c;HLS是一种自适应码率流媒体传输协议#xff0c;实现的是分片下载和动态码率切换。它的原理是把一段视… 大家好我是阿赵。今天来学习一下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引擎怎样播放HLSUnity自带的VideoPlayer用于播放mp4视频是非常好用的我们可以试试它是否能播放HLS的m3u8文件很可惜VideoPlayer是不能播放m3u8文件的于是这里要用到一个视频播放插件叫做AVPro Video具体的AVPro用法不是这次的重点所以请自行下载和查询。设置一下AVPro的MediaPlayerMediaSource设置成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 srcTemplateData/hls.min.js/script由于WebGL是不能直接在本地播放的所以把刚才生成的文件全部放到服务器去比如本地搭一个阿帕奇服务器这时候可以通过ip地址去访问刚才的index.html。这个时候网页打开了会看到视频并没有播放而是停留在了第一帧这里有个WebGL本身的问题就是视频和音频不能自己播放要在用户操作后才能播放。为了测试我简单的加了个播放按钮点击之后视频就正常开始播放了