最近做的项目有一个需求,在不确定视频的情况下,制作视频缩略图,总体思路是,获取所有视频路径,根据路径加载到播放器中,根据这个播放器一个一个的加载视频的缩略图,废话不多说看代码
public RawImage raw;
public List<Texture2D> thumbnail = new List<Texture2D>();//存放缩略图列表
int i = 0;//计算视频长度
//在视频未播放前 把所有的视频缩略图都加载出来
IEnumerator IESaveVideoThumb(MediaPlayer mediaPlayer)//缩略图
{
yield return null; //视频路径
mediaPlayer.OpenVideoFromFile(MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder, VideoManager._instance.videoNameList[i], false);
i++;
// mediaPlayer.Info.GetDurationMs() 取的是毫秒
//这个地方不加延迟的话就获取不到他的帧数
yield return new WaitForSeconds(0.12f);
float durationMs = mediaPlayer.Info.GetDurationMs()/1000;
float ms = durationMs < 1 ? durationMs : 1;
//取视频中1秒位置保存为图片
Texture2D t = mediaPlayer.ExtractFrame(null, ms);
thumbnail.Add(t);
raw.texture = t;
if (i< VideoManager._instance.videoNameList.Count)
{
StartCoroutine(IESaveVideoThumb(mediaPlayer)) ;
}
else
{
//当所有缩略图制作完成执行...
}
}