Unity AVPro Video使用和WebGL播放视频流

1.创建Media Player对象。在Hierarchy视图右击 Video->Media Player 或者选择菜单栏的GameObject菜单,然后选择 Video->Media Player。
Unity AVPro Video使用和WebGL播放视频流_第1张图片

2.创建Display uGui对象。在Hierarchy视图右击 UI->Display uGui 或者选择菜单栏的Component菜单 AVPro Video->Display uGui。
Unity AVPro Video使用和WebGL播放视频流_第2张图片

3.给Display uGui指定Media Player组件
Unity AVPro Video使用和WebGL播放视频流_第3张图片
4.Media Player组件
Unity AVPro Video使用和WebGL播放视频流_第4张图片
Unity AVPro Video使用和WebGL播放视频流_第5张图片
使用最多的应该是Absolute Path Or URL和Relative To StreamingAssets Folder这俩个吧

5.指定视频资源或URL链接
Unity AVPro Video使用和WebGL播放视频流_第6张图片
Unity AVPro Video使用和WebGL播放视频流_第7张图片

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,设置
Unity AVPro Video使用和WebGL播放视频流_第8张图片
在打包出来的 index.html 中加入(我将hls.min.js放在了Build文件夹下)
Unity AVPro Video使用和WebGL播放视频流_第9张图片

hls.js和hls.min.js
提取码:7drh
AVPro 2版本插件
提取码:ujf3
仅供学习交流,请勿用于商业用途
AVPro 1版本插件
提取码:4460
仅供学习交流,请勿用于商业用途

你可能感兴趣的:(工作记录,unity,unity插件,webgl)