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
仅供学习交流,请勿用于商业用途

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Unity WebGL项目中播放视频,你需要使用HTML5标签,例如`<video>`标签。你可以通过以下步骤来实现: 1. 将视频文件添加到Unity项目中,并将其放置在WebGL Build Settings中指定的WebGL输出文件夹中。 2. 在Unity中创建一个UI画布,并添加一个RawImage组件。 3. 在画布中创建一个UI按钮,并将其与一个新的脚本组件相关联。 4. 在脚本中,使用HTML5 `<video>`标签和JavaScript API创建一个视频对象,并将其与RawImage组件关联。 5. 在按钮的OnClick事件中,使用JavaScript API播放视频。 以下是一个示例脚本的基本结构: ```csharp using UnityEngine; using UnityEngine.UI; using System.Collections; public class VideoPlayer : MonoBehaviour { RawImage image; string videoURL = "your_video_url.mp4"; IEnumerator Start() { image = GetComponent<RawImage>(); // Load and wait for the video to be ready UnityWebRequest videoRequest = UnityWebRequest.Get(videoURL); yield return videoRequest.SendWebRequest(); // Create a video object and assign it to the RawImage var videoPlayer = gameObject.AddComponent<UnityEngine.Video.VideoPlayer>(); videoPlayer.playOnAwake = false; videoPlayer.source = UnityEngine.Video.VideoSource.Url; videoPlayer.url = videoURL; videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.RenderTexture; videoPlayer.targetTexture = new RenderTexture(1920, 1080, 16, RenderTextureFormat.ARGB32); image.texture = videoPlayer.targetTexture; // Play the video videoPlayer.Prepare(); while (!videoPlayer.isPrepared) { yield return null; } videoPlayer.Play(); } public void PlayVideo() { var videoPlayer = GetComponent<UnityEngine.Video.VideoPlayer>(); videoPlayer.Play(); } } ``` 你可以在按钮的OnClick事件中调用PlayVideo()函数来播放视频。请注意,在这个示例中,视频的URL是硬编码在代码中的,你应该将其替换为你自己的视频URL。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值