Unity視訊播放
Unity視訊簡單介紹(代碼在最下方)
1、在遊戲開發和VR開發中我們常常會用到播放視訊的要求
比如:遊戲開始時通過視訊來交代遊戲的背景;劇情觸發 時通過視訊來表現劇情發展。
2、目前主流的視訊播放器VideoPlayer元件;第三方插件AVPro Video(VideoPlayer元件幾乎能夠滿足我們日常開發中所有的視訊播放)
一、視訊格式和編解碼器(視訊的格式和編解碼器會影響Unity在不同平台是否能正常播放視訊)
1、視訊檔案的本質
視訊檔案的本質上就是一個”資料容器“它不僅僅可以包含視訊資料本身它還包含
- 音頻
- 字幕
-
軌道資訊(軌道還可以有很多,比如不同語言的字幕,不同語言的音頻)
2、視訊檔案的格式
比如:.mp4、.mov、.avi、.webm等(這些不同格式的視訊差別就是存讀資料的方式方法不同而已)
3、視訊的編碼器和解碼器
我們了解到視訊的本質就是一堆資料的集合,為了節省帶寬和存儲空間,視訊中每個軌道(不同的音頻、字幕等等資訊)都使用”編解碼器“進行編碼和解碼
編碼器:負責壓縮資料,節約空間。
解碼器:負責解壓資料,解壓後才能播放
常見的視訊編解碼格式為H.264
常見的音頻編解碼格式為AAC
4、硬體解碼
目前大多數的裝置都有專用于解碼視訊的硬體,一般由GPU(圖形處理器,顯示卡的核心硬體)來進行硬體解碼。
優點:使用GPU進行硬體解碼可以降低CPU的工作負荷,降低功耗,節省電量,節省性能。缺點:無法支援所有的視訊格式檔案,畫質不是特别清除(Unity會自己幫助我們判斷來進行硬體解碼)
5、軟體解碼
優點:能夠解碼所有視訊格式檔案,畫質更加清晰
缺點:增加CPU工作負荷,更耗電,解碼時會造成明顯的卡頓
6、Unity中的視訊相容性
保險搭配方式:MP4格式 + H.264或VP8編解碼器,可以在大多數的作業系統上正常播放(能用H.265就用H.265)
Unity使用視訊
1、參數介紹
2、如何添加Video Player元件
方法一:在Hierarchy視窗點選加号,選擇Video > Video Player
方法二:選擇場景上任何一個對象,為其添加Video Player元件
方法三:直接将視訊檔案托入到Hierarchy視窗中
3、Video Player元件介紹
4、通過代碼播放視訊
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class Exercises : MonoBehaviour
{
public Slider slider;
public VideoPlayer video;
private bool isOver;
public Button btn;
public Sprite play;
public Sprite pause;
//結合UGUI 制作一個視訊播放的進度條 我們可以通過進度條控制視訊播放的時間
// Start is called before the first frame update
void Start()
{
slider.onValueChanged.AddListener((value) =>
{
//通過總時長來控制播放時間
video.time = video.length * value;
});
//避免視訊還沒有播放 就拖動進度條
slider.interactable = false;
//準備視訊資料
video.Prepare();
video.prepareCompleted += (v) =>
{
//準備完成後 播放
video.Play();
isOver = true;
if(isOver)
{
btn.image.sprite = play;
}
//點選按鈕的時候
btn.onClick.AddListener(() =>
{
if(isOver)
{
btn.image.sprite = pause;
isOver = false;
video.Pause();
}
else
{
btn.image.sprite = play;
video.Play();
isOver = true;
}
});
slider.interactable = true;
};
}
// Update is called once per frame
void Update()
{
//一定是進度條可以被拖動 再更新進度
if(slider.interactable)
{
slider.value = (float)(video.time / video.length);
}
}
}