• 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    项目需求: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();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    注意:打包webgl平台,视频流格式是m3u8,设置
    在这里插入图片描述
    在打包出来的 index.html 中加入(我将hls.min.js放在了Build文件夹下)
    在这里插入图片描述

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

  • 相关阅读:
    python通过socket 搭建极简web服务器
    java EE初阶 — 如何进行多线程编程
    物联网?快来看 Arduino 上云啦
    spark向hadoop写入文件后,查路径为目录,无法查值
    内存学习(4):内存分类与常用概念3(ROM)
    【漏洞复现】maccms苹果cms 命令执行漏洞
    论文阅读 Memory Enhanced Global-Local Aggregation for Video Object Detection
    HTML5 新元素
    ElasticJob 3.0.2 发布|优化 Failover、调度稳定性,支持 Java 19
    《大气压流注放电的二维PIC/MCC模拟研究》听讲笔记
  • 原文地址:https://blog.csdn.net/weixin_44238530/article/details/127799136