1.创建Media Player对象。在Hierarchy视图右击 Video->Media Player 或者选择菜单栏的GameObject菜单,然后选择 Video->Media Player。
2.创建Display uGui对象。在Hierarchy视图右击 UI->Display uGui 或者选择菜单栏的Component菜单 AVPro Video->Display uGui。
3.给Display uGui指定Media Player组件
4.Media Player组件
使用最多的应该是Absolute Path Or URL和Relative To StreamingAssets Folder这俩个吧
5.指定视频资源或URL链接
MP4测试地址
驯龙高手 http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4
《紧急救援》 http://vfx.mtime.cn/Video/2019/03/21/mp4/190321153853126488.mp4
m3u8测试地址
计时器 http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8
项目需求:webgl展示视频流(摄像头)
视频格式:原先给的视频流格式是flv,经过各种尝试,无法在webgl上播放,经过协商,提供了一份m3u8格式的视频流
实现原理:创建Media Player对象和创建Display uGui对象,代码控制播放哪一个视频
代码片段
using UnityEngine;
using UnityEngine.UI;
using RenderHeads.Media.AVProVideo;
[SerializeField] private MediaPlayer mediaPlayer; //加载视频流
[SerializeField] private DisplayUGUI displayUGUI; //显示视频
void Awake()
{
Init();
}
private void Init()
{
if (mediaPlayer == null)
{
mediaPlayer = transform.Find("MediaPlayer")?.GetComponent<MediaPlayer>();
}
mediaPlayer.Events.AddListener(OnMediaPlayerEvent); //事件监听
if (displayUGUI == null)
{
displayUGUI = transform.Find("Bg/VideoDisplay")?.GetComponent<DisplayUGUI>();
if (displayUGUI.CurrentMediaPlayer == null)
{
displayUGUI.CurrentMediaPlayer = mediaPlayer;
}
}
}
private void OnMediaPlayerEvent(MediaPlayer arg0, MediaPlayerEvent.EventType arg1, ErrorCode arg2)
{
switch (arg1)
{
case MediaPlayerEvent.EventType.Started: //开始播放的事件
//做一些其他操作,我这里的功能是视频还没加载完成,有一个转圈的UI,加载完成后,我把状态更改,隐藏该UI
break;
}
}
//伪代码
//播放视频, 提供URL(自动开始)
mediaPlayer.OpenMedia(new MediaPath(url, MediaPathType.AbsolutePathOrURL));
//停止播放
mediaPlayer.Stop();
//暂停播放
mediaPlayer.Pause();
注意:打包webgl平台,视频流格式是m3u8,设置
在打包出来的 index.html 中加入(我将hls.min.js放在了Build文件夹下)
hls.js和hls.min.js
提取码:7drh
AVPro 2版本插件
提取码:ujf3
仅供学习交流,请勿用于商业用途
AVPro 1版本插件
提取码:4460
仅供学习交流,请勿用于商业用途