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);