需要使用AVProVideo插件,插件地址为:互联网拒绝收费,点击免费下载
注意不同版本的AVProVideo 的API变动较大,请尽量使用我提供的插件
我使用的版本是1.11.4
截取第一帧保存到本地的代码为
/// <summary>
/// 获取视频的第一帧,并保存到本地
/// </summary>
/// <param name="fileName">封面的名字</param>
/// <param name="fileInfo">视频文件</param>
/// <returns></returns>
private IEnumerator getImg(string fileName,FileInfo fileInfo)
{
GameObject temp = new GameObject("temp");
MediaPlayer mediaPlayer_Local = temp.AddComponent<MediaPlayer>();
mediaPlayer_Local.m_VideoPath = fileInfo.FullName;
mediaPlayer_Local.OpenVideoFromFile(mediaPlayer_Local.m_VideoLocation, mediaPlayer_Local.m_VideoPath, false);
//等待一秒是为了让视频完成加载,如果视频过大,可以延长时间
yield return new WaitForSeconds(1);
//截取1帧处的图像
Texture2D texture2D = new Texture2D(1920, 1080);
mediaPlayer_Local.ExtractFrame(texture2D, 1);
File.WriteAllBytes("d:/Cover"+ fileName + ".jpg", texture2D.EncodeToJPG());
}
从本地文件读取图片,并作为一个按钮的封面
/// <summary>
/// 从封面图文件夹里加载封面图
/// </summary>
private void GetCoverImg(string fileName, GameObject gameObject_Created)
{
Texture2D texture2D_1 = new Texture2D(1920, 1080);
FileStream fs = File.Open("d:/Cover"+ fileName + ".jpg", FileMode.Open, FileAccess.Read);
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, bytes.Length);
texture2D_1.LoadImage(bytes);
gameObject_Created.transform.Find("CoverImage"). GetComponent<Image>().sprite = Sprite.Create(texture2D_1, new Rect(0, 0, texture2D_1.width, texture2D_1.height), new Vector2(0.5f, 0.5f));
}
以下是2.2.2.3 版本的AVPro的截图方法
免积分下载
private IEnumerator GetCover(string videoFullName)//截取视频获得封面
{
GameObject temp = new GameObject("temp");
MediaPlayer mediaPlayer = temp.AddComponent<MediaPlayer>();
mediaPlayer.OpenMedia(MediaPathType.AbsolutePathOrURL, videoFullName, false);
//等待一秒是为了让视频完成加载,如果视频过大,可以延长时间
yield return new WaitForSeconds(1);
//截取1帧处的图像
Texture2D texture2D = new Texture2D(1920, 1080);
mediaPlayer.ExtractFrame(texture2D, 1);
File.WriteAllBytes(sceneTrainingModel.videoCoverPath + "/" + Path.GetFileNameWithoutExtension(videoFullName) + ".png", texture2D.EncodeToPNG());
//销毁播放器
GameObject.Destroy(temp);
}