UGUI中播放视频

Unity中支持的视频格式有 .mov , .mpg , .mpeg , .mp4 , .avi , .asf登,但是视频的大小最好别超过100MB,因为Unity3D对视频的导入是比较慢的。

首先创建RawImage(或者在其他UI对象上添加RawImage组件),然后在该对象上在添加Video Player组件(播放视频)和Audio Source组件(播放音频,添加就好不需要操作)

代码:

using UnityEngine;
using UnityEngine.Video;
using UnityEngine.UI;

/// <summary>
/// 播放视频
/// </summary>
public class PlayVideo : MonoBehaviour
{

    //定义参数获取VideoPlayer组件和RawImage组件
    private VideoPlayer videoPlayer;

    private RawImage rawImage;

    void Start()
    {

        //获取场景中对应的组件
        videoPlayer = this.GetComponent<VideoPlayer>();
        //视频循环播放
        videoPlayer.isLooping = true;

        rawImage = this.GetComponent<RawImage>();

    }

    void Update()
    {
        //如果videoPlayer没有对应的视频texture,则返回
        if (videoPlayer.texture == null)
        {
            return;
        }

        //把VideoPlayerd的视频渲染到UGUI的RawImage
        rawImage.texture = videoPlayer.texture;

    }

}

 

--------------------------------添加通过URL加载视频和多视频循环播放--------------------------------------------

using UnityEngine;

using UnityEngine.Video;

using UnityEngine.UI;
using System.Collections.Generic;

/// <summary>
/// 播放视频
/// </summary>
public class PlayVideo : MonoBehaviour
{

    //定义参数获取VideoPlayer组件和RawImage组件

    private VideoPlayer videoPlayer;

    private RawImage rawImage;      //用于播放视频的图片

    按照URL加载视频
    //public string URL;

    public VideoClip vides;

    加载多个视频
    //public List<VideoClip> VideoClipList;
    //int index = 0;

    int a = 0;
    void Start()
    {
        //获取场景中对应的组件
        videoPlayer = this.GetComponent<VideoPlayer>();

        //可以发送嵌入视频中的音频的位置
        videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
        //如果设置为true,在awake的时候就已经开始播放视频了
        videoPlayer.playOnAwake = false;
        //是否启用了音频轨道
        videoPlayer.IsAudioTrackEnabled(0);

        通过URL加载视频
        //videoPlayer.source = VideoSource.Url;
        //videoPlayer.url = (URL);

        视频列表
        //videoPlayer.clip = VideoClipList[index];

        videoPlayer.clip = vides;
        videoPlayer.Play();

        视频循环播放
        //videoPlayer.isLooping = true;

        rawImage = this.GetComponent<RawImage>();

    }

    void Update()
    {
        //可以判断视频是否播放完毕
        //if ((ulong)videoPlayer.frame >= videoPlayer.frameCount)
        //{
        //    index++;
        //判断视频播放完毕后播放下一个视频
        //if (index >= VideoClipList.Count)
        //{
        //    index -= VideoClipList.Count;
        //}
        //Debug.Log("111");
        //videoPlayer.clip = VideoClipList[index];
        //videoPlayer.Play();
        //}

        //如果videoPlayer没有对应的视频texture,则返回
        if (videoPlayer.texture == null)
        {
            return;
        }
        //把VideoPlayerd的视频渲染到UGUI的RawImage
        rawImage.texture = videoPlayer.texture;

    }

}

--------------------------------添加url播放视频问题--------------------------------------------

如果使用url播放视频,需要动态设置视频的数量

        videoPlayer = gameObject.GetComponent<VideoPlayer>();
        audioSource = gameObject.GetComponent<AudioSource>();
        rawImage = GetComponent<RawImage>();

        //用来设置视频中音频的数量
        videoPlayer.controlledAudioTrackCount = 2;
        //此处用来添加指定的AudioSource组件
        videoPlayer.SetTargetAudioSource(0, audioSource);
        //可以发送嵌入视频中的音频的位置
        videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
        
        //如果设置为true,在awake的时候就已经开始播放视频了
        videoPlayer.playOnAwake = false;
        audioSource.playOnAwake = false;

        //是否启用了音频轨道
        videoPlayer.IsAudioTrackEnabled(0);
        videoPlayer.EnableAudioTrack(0, true);

 

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值