Untiy的Webgl端网页端视频播放,又不想直接mp4格式等格式的。

针对Untiy的Webgl端网页端视频播放,又不想直接mp4格式等格式的一些小技巧方式。

1.安装AVPro Video插件。

2.场景ui布局类似如下图:

3.UI中新建image,改名VideoDisplay,把image组件删除,添加Displayugui组件,关联mediaplayer。

4.UI中新建gameobject,添加mediapalyer组件,并关联你要播放的某个视频。

5.新建gameobject,添加HTML5VideoPlayer组件,并设置如下,videofilename的名称就是你的视频名称,视频位置webgl网页端主要是放在StreamingAssets中,视频的后缀名可以改为我这个名称。然后你同步设置也要同名称。

6.这个组件可以播放多个视频,你只要有多个panel拷贝下就行了。

相关的HTML5VideoPlayer代码如下:

csharp 复制代码
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
using System.Collections;
using RenderHeads.Media.AVProVideo;

[System.Serializable]
public class VideoGroup
{
    public UnityEngine.UI.Button playButton;
    public UnityEngine.UI.Button pauseButton;
    public UnityEngine.UI.Button stopButton;
    public DisplayUGUI displayUGUI;
    public MediaPlayer mediaPlayer;  
    public string videoFileName = "11.longyugxq";
    
    [HideInInspector] public bool isLoaded = false;
}

public class HTML5VideoPlayer : MonoBehaviour
{
    [SerializeField] private List<VideoGroup> videoGroups = new List<VideoGroup>();

    private void Start()
    {
        StartCoroutine(InitializeAsync());
    }

    private IEnumerator InitializeAsync()
    {
        for (int i = 0; i < videoGroups.Count; i++)
        {
            yield return InitializeVideoGroupAsync(videoGroups[i], i);
        }
    }

    private IEnumerator InitializeVideoGroupAsync(VideoGroup group, int groupIndex)
    {
        // 检查MediaPlayer是否已在Inspector中设置
        if (group.mediaPlayer == null)
        {
            Debug.LogError($"VideoGroup {groupIndex} 未配置 MediaPlayer");
            yield break;
        }

        // 打开视频文件
        bool opened = group.mediaPlayer.OpenMedia(
            new MediaPath(group.videoFileName, MediaPathType.RelativeToStreamingAssetsFolder),
            autoPlay: false
        );

        if (!opened)
        {
            Debug.LogError($"打开视频失败: {group.videoFileName}");
            yield break;
        }

        // 等待加载完成
        yield return new WaitForSeconds(0.01f);

        Debug.Log($"VideoGroup {groupIndex} - {group.videoFileName} 加载完成");

        // 绑定按钮事件
        if (group.playButton != null)
            group.playButton.onClick.AddListener(() => PlayVideo(groupIndex));
        if (group.pauseButton != null)
            group.pauseButton.onClick.AddListener(() => PauseVideo(groupIndex));
        if (group.stopButton != null)
            group.stopButton.onClick.AddListener(() => StopVideo(groupIndex));

        group.isLoaded = true;
    }

    public void PlayVideo(int groupIndex)
    {
        if (groupIndex >= 0 && groupIndex < videoGroups.Count && videoGroups[groupIndex].isLoaded && videoGroups[groupIndex].mediaPlayer != null)
        {
            videoGroups[groupIndex].mediaPlayer.Play();
        }
    }

    public void PauseVideo(int groupIndex)
    {
        if (groupIndex >= 0 && groupIndex < videoGroups.Count && videoGroups[groupIndex].mediaPlayer != null)
        {
            videoGroups[groupIndex].mediaPlayer.Pause();
        }
    }

    public void StopVideo(int groupIndex)
    {
        if (groupIndex >= 0 && groupIndex < videoGroups.Count && videoGroups[groupIndex].mediaPlayer != null)
        {
            MediaPlayer mediaPlayer = videoGroups[groupIndex].mediaPlayer;
            mediaPlayer.Stop();
            mediaPlayer.Control.Seek(0.0);
        }
    }
}
相关推荐
小贺儿开发5 小时前
Unity 家居视频遥控(细节优化)
科技·unity·程序员·udp·视频·工具·通信
淡海水6 小时前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
linux_cfan7 小时前
videojs v10 源代码系列解读:14 · 谓词守卫:在运行时安全地调用能力
前端·javascript·音视频
赛博仓鼠8 小时前
秋叶ComfyUI 3.2整合包实测:Python 3.13+Torch 2.13全栈升级,一键跑通MiniMax H3(附完整部署)
ai·ai作画·aigc·音视频
乐橙开放平台10 小时前
从「多套客户端」到一套开放能力:乐橙视频监控能力复盘
笔记·物联网·自动化·音视频·智能家居
linux_cfan15 小时前
videojs v10 源代码系列解读:13 · 能力型媒体契约:`Media` 的组合接口
前端·javascript·音视频
勤劳X码农16 小时前
2026年TTS工具技术测评:7款方案实测,从免费额度到API集成全解析
人工智能·音视频·实时音视频
m0_6145235517 小时前
Log视频导入发灰,先查颜色链
音视频·视频编辑
小小数媒成员18 小时前
UGUI 性能优化(详细,全,深入)
开发语言·unity·游戏引擎
linux_cfan1 天前
17 · 引擎适配器全景:HLS/DASH/Vimeo/Mux/Cast
前端·javascript·音视频