Unity中怎么播放视频

Posted 北边一颗小星星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity中怎么播放视频相关的知识,希望对你有一定的参考价值。

一.首先在场景中新建UI中的Raw Image

可以按住Alt再点击下图红色箭头所示将Raw Image铺满游戏全屏(也可以自己调整大小)

 

二.给Raw Image添加Video Player组件

三.在Assets或者自己想要的文件夹中创建Render Texture

 四.将准备好的视频(这里用到的视频格式是mp4)拖入项目中并做如下修改

这里我把新建的Render Texture命名为2,拖入的视频也命名为2(随便命的,不要在意)

 这里我们看到这个Render Texture默认是256*256的,这里我将它改成1024*1024让视频更清晰点

然后对视频做如下修改,先把Transcode打上勾,再选择Square 1024(与Render Texture保持一致,当然也可以取其他值,不过相应的Render Texture中的值也得跟着改),我这里也选了Stretch为了铺满画面 。

五.将Render Texture和视频拖入Raw Image的相应位置 

然后再点击游戏的运行即可播放视频啦! 

最后再附上怎么判断视频播放完毕的代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;

public class Video_change : MonoBehaviour

    double video_time, currentTime;
    //这里的video_img我是用来放RawImage的,挂载脚本后将RawImage拖入即可
    public GameObject video_img;
    void Start()
    
        video_time = video_img.GetComponent<VideoPlayer>().clip.length;
    

    // Update is called once per frame
    void Update()
    
        currentTime += Time.deltaTime;
        if (currentTime >= video_time)
        
            //视频播放结束,这里可以写视频播放结束后的事件
        
    

在 Unity 中播放一系列 360 度视频

【中文标题】在 Unity 中播放一系列 360 度视频【英文标题】:Play a sequence of 360-degree videos in Unity 【发布时间】:2019-08-14 14:23:56 【问题描述】:

我希望通过 C# 脚本。每个视频都有相应的持续时间相同的音频(使用 Ffmpeg 提取)并且应该与视频同步播放。我还想在每个视频之间显示一个持续时间为 1 秒的灰屏。

我尝试了 *** 中提供的类似脚本(稍作修改),可以按顺序播放普通视频。该脚本使用画布上的 RawImage 来渲染视频。我正在尝试将其修改为 Sphere 而不是 RawImage,然后在球体上使用 Flipverticals 着色器并将 360 视频渲染到球体。不确定这种方法。

// Raw Image to Show Video Images [Assign from the Editor]
public RawImage image;
public List<VideoClip> videoClipList;
private List<VideoPlayer> videoPlayerList;
private int videoIndex = 0;

// Assign the Texture from Video to RawImage to be displayed
image.texture = videoPlayerList[videoIndex].texture;

我希望能够播放一系列 360 度视频 - 视频的编号和名称应在运行时提供。

【问题讨论】:

【参考方案1】:
    private GameObject textureObj; // Your sphere with a MeshRenderer
    private Texture2D storeTexture; // Just a texture from assets thats use to transport the stream
    private Renderer textureRenderer;

    private void Start() 
        this.storeTexture = videoPlayerList[videoIndex].texture;

        this.textureRenderer = this.textureObj.GetComponent<Renderer>();
        this.textureRenderer.material.mainTexture = this.storeTexture;
    

【讨论】:

感谢您的建议@Musaka。它帮助我进一步进步。 @AmitHirway 一定要竖起大拇指:D 我该如何竖起大拇指?我在哪里可以找到它? 您可以在我的答案左侧看到一个数字,如果您发现答案/问题有用,则应始终按数字的上箭头:D

以上是关于Unity中怎么播放视频的主要内容,如果未能解决你的问题,请参考以下文章

Unity 抠 绿幕视频 -- 效果极好

Unity用代码控制音乐暂停后怎么继续播放?

Unity 视频播放

unity 中播放视频

Unity3D两种方式播放视频

在 Unity 中播放一系列 360 度视频