概述
说明:
最近项目需要循环播放一个视频列表,使用的是【AVProVideo插件】,发现只能一个视频的循环播放,不能实现一个文件夹下的所有视频的循环播放。
解决如下:
插件下载 提取码:bdgh
根据上图所示声明一个事件方法,形参与之对应。为MediaPlayer添加事件,这里实现的是当前视频播放完成后,在【FinishedPlaying】里实现播放下一个视频的逻辑。
补充说明:在切换视频时,会看到UI后面的界面,可以在AVPro Video下的【Display UGUI】组件上设置默认纹理,我这里设置的时【 displayUGUI.color】,在播完完当前视频后(FinishedPlaying)颜色设为黑色,在第一帧准备完成后(FirstFrameReady)颜色设为白色
public void OnAddEvents(MediaPlayer mp,MediaPlayerEvent.EventType eventType,ErrorCode errorCode)
{
switch (eventType)
{
case MediaPlayerEvent.EventType.MetaDataReady:
break;
case MediaPlayerEvent.EventType.ReadyToPlay:
print("ReadyToPlay状态");
break;
case MediaPlayerEvent.EventType.Started:
print("Started状态");
break;
case MediaPlayerEvent.EventType.FirstFrameReady:
print("第一帧准备完成");
if (displayUGUI != null)
displayUGUI.color = new Color(255, 255, 255);
break;
case MediaPlayerEvent.EventType.FinishedPlaying:
print("完成当前的视频播放");
videoIndex++;
if (videoIndex>=videoCount)
videoIndex = 0;
displayUGUI.color = new Color(0, 0, 0);
mp.m_VideoPath = videoPaths[videoIndex];
mp.OpenVideoFromFile(MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder, mp.m_VideoPath);
break;
default:
break;
}
}
MediaPlayerEvent.EventType 枚举类型如下,可以自行了解
以上已经实现了当前视频播放完后播放下一个视频的逻辑,所以我们需要有一个视频列表,在播放完当前,将播放地址更换为下一个。
/// <summary>
/// 获取视频路径
/// </summary>
/// <param name="path">视频的根文件夹</param>
/// <param name="suffix">后缀</param>
/// <param name="videoLists">存放路径的列表</param>
private void GetVideoList(string path,string suffix,ref List<string> videoLists)
{
string videoName;
DirectoryInfo dir = new DirectoryInfo(path);
FileInfo[] fileInfo = dir.GetFiles();
foreach (FileInfo item in fileInfo)
{
videoName = item.FullName;
//print(fileName);
if (videoName.EndsWith(suffix))
{
//添加到列表中
videoLists.Add(videoName);
print("当前添加到列表中的路径为"+videoName);
}
}
}
完整脚本如下:
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using RenderHeads.Media.AVProVideo;
/// <summary>
/// 控制视频的循环播放
/// </summary>
public class VideoLoop : MonoBehaviour
{
private int videoIndex; //播放视频的索引
private int videoCount; //视频数量
private MediaPlayer mediaPlayer;
private DisplayUGUI displayUGUI;
//当前的视频播放列表
private List<string> videoPaths = new List<string>();
string videoRootPath;
string path;
private void Awake()
{
videoRootPath = Application.streamingAssetsPath + "/Video";
GetVideoList(videoRootPath, "mp4", ref videoPaths);
videoCount = videoPaths.Count;
}
void Start()
{
videoIndex=0;
displayUGUI = GameObject.Find("AVPro Video").GetComponent<DisplayUGUI>();
mediaPlayer = transform.GetComponent<MediaPlayer>();
InitPlay();
}
//初始化 默认播放第一个
private void InitPlay()
{
if (videoCount>0)
path = videoPaths[0];
mediaPlayer.OpenVideoFromFile(MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder, path);
}
public void OnAddEvents(MediaPlayer mp,MediaPlayerEvent.EventType eventType,ErrorCode errorCode)
{
switch (eventType)
{
case MediaPlayerEvent.EventType.MetaDataReady:
break;
case MediaPlayerEvent.EventType.ReadyToPlay:
print("ReadyToPlay状态");
break;
case MediaPlayerEvent.EventType.Started:
print("Started状态");
break;
case MediaPlayerEvent.EventType.FirstFrameReady:
print("第一帧准备完成");
if (displayUGUI != null)
displayUGUI.color = new Color(255, 255, 255);
break;
case MediaPlayerEvent.EventType.FinishedPlaying:
print("完成当前的视频播放");
videoIndex++;
if (videoIndex>=videoCount)
videoIndex = 0;
displayUGUI.color = new Color(0, 0, 0);
mp.m_VideoPath = videoPaths[videoIndex];
mp.OpenVideoFromFile(MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder, mp.m_VideoPath);
break;
default:
break;
}
}
/// <summary>
/// 获取视频路径
/// </summary>
/// <param name="path">视频的根文件夹</param>
/// <param name="suffix">后缀</param>
/// <param name="videoLists">存放路径的列表</param>
private void GetVideoList(string path,string suffix,ref List<string> videoLists)
{
string videoName;
DirectoryInfo dir = new DirectoryInfo(path);
FileInfo[] fileInfo = dir.GetFiles();
foreach (FileInfo item in fileInfo)
{
videoName = item.FullName;
//print(fileName);
if (videoName.EndsWith(suffix))
{
//添加到列表中
videoLists.Add(videoName);
print("当前添加到列表中的路径为"+videoName);
}
}
}
}
最后
以上就是傲娇西装为你收集整理的AVProVideo插件实现文件夹中的视频文件循环播放说明:的全部内容,希望文章能够帮你解决AVProVideo插件实现文件夹中的视频文件循环播放说明:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复