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

1.创建Media Player对象。在Hierarchy视图右击 Video->Media Player 或者选择菜单栏的GameObject菜单,然后选择 Video->Media Player。
创建Media Player

2.创建Display uGui对象。在Hierarchy视图右击 UI->Display uGui 或者选择菜单栏的Component菜单 AVPro Video->Display uGui。
创建Display uGui

3.给Display uGui指定Media Player组件
指定Media Player
4.Media Player组件
简单注解
在这里插入图片描述
使用最多的应该是Absolute Path Or URL和Relative To StreamingAssets Folder这俩个吧

5.指定视频资源或URL链接
指定视频资源
指定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
仅供学习交流,请勿用于商业用途

Unity 是一款主要用于游戏开发的跨平台开发引擎,但它也能用于其他领域,如虚拟现实视频制作。在Unity中,视频同步是指将多个视频在时间上进行同步,以实现多个视频在同一时间点播放。这在游戏开发中特别有用,比如当玩家观看游戏剧情视频或在多个屏幕上展示不同角度的游戏画面时。 Unity 提供了多种方法来实现视频同步。其中一种常用的方法是使用Unity的视频播放器组件事件系统。首先,开发者需要在Unity中导入要同步的多个视频文件,可以是以模型或素材的形式。然后,通过编写脚本,可以调用视频播放播放视频,并设置视频的起始时间播放速度。 同时,Unity的事件系统是实现视频同步的关键。开发者可以在特定的时间点触发自定义事件,以控制视频的播放等操作。例如,开发者可以通过编写脚本,使得当一个事件发生时,多个视频同时开始播放或暂停。这样,多个视频就能够在特定的时间点上保持同步。 此外,Unity还提供了网络同步功能,使得多个设备能够通过网络传输数据并同步多个视频的播放。这对于需要将视频同步到不同的设备上展示的场合非常有用,比如在一个 VR 头盔多个显示屏之间同步播放。 总之,Unity 视频同步是通过利用Unity的视频播放器组件、事件系统网络同步功能,将多个视频在时间上进行同步,以实现多个视频在同一时间点播放的功能。这使得开发者可以更灵活地控制多个视频的播放,为游戏开发其他领域提供了更多的可能性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值