EasyAR4.0使用說明(Unity3D)(九)----屏幕錄像

屏幕錄像不是增強現實的功能,只是EasyAR SDK自帶的一個功能。該功能限制頗多,只能在移動設備上使用,而且沒有辦法直接錄製UI界面。屏幕錄像功能本質上錄的是RenderTexture。

總體說明

主要是在基礎結構上添加了一個【VideoRecorder】遊戲對象。另外,需要動態的往【Main Camera】主攝像機遊戲對象上添加【CameraRecorder】腳本。

總體說明

CameraRecorder腳本相關

  • CameraRecorder腳本需要動態添加到Main Camera主攝像機遊戲對象上,該腳本可以通過Setup方法設置錄像內容的水印。

VideoCameraDevice遊戲對象相關

  • Enable屬性可以用於關閉攝像頭內容,這樣,就能只錄制屏幕內容。
  • Camera Size屬性用於設置攝像頭獲取的視頻的分辨率。

VideoRecorder遊戲對象相關

  • Profile屬性用於設置錄製效果,最高可以錄製1080高清內容。
  • Qrientation屬性用於設置錄像時候是橫屏(Landscape)還是豎屏(Portratit),或者根據當前屏幕情況設定(Screen Adaptive)。
  • Record Zoom Mode屬性設置屏幕錄製。NoZoomAndClip:如果輸出寬高比與輸入不符,內容會被剪裁到適合輸出比例。ZoomInWithAllContent:如果輸出寬高比與輸入不符,內容將不會被剪裁,在某個維度上會有黑邊。
  • File Path Type屬性設置文件的路徑類型,“Absolute”是絕對路徑,“Persistent Data Path”是相對於持久數據路徑的相對路徑。通常使用後者,因爲該路徑下能保證可寫入。
  • File Path屬性用於設置錄製後保存的視頻文件的具體路徑及文件名。

取消多線程渲染

取消Other Settings標籤下Multithreaded Rendering選項

總體說明

使用屏幕錄像功能

  • 只導入EasyAR4.0 SDK,要使用屏幕錄像功能還比較麻煩,還需要將官方示例中的一個腳本導入過來,這樣使其起來會簡單很多。

使用屏幕錄像功能

  • 設置場景中的Main Camera的Clear Flags屬性爲Solid Color。
  • 將EasyAR/Prefabs/Composites目錄下的EasyAR_VideoCamera預製件拖到場景中。

使用屏幕錄像功能

  • 將EasyAR/Prefabs/Primitives目錄下的VideoRecorder預製件拖到場景中。
  • 設置Videorecorder屬性,設置File Path Type爲Persistent Data Path,設置File Path爲具體文件名。

使用屏幕錄像功能

添加2個按鈕用於開始和停止錄像,添加一個文本框顯示提示。

編寫腳本。

  • 在腳本的“Awake”事件中,添加對“StatusUpdate”事件的偵聽內容。將獲取到的信息顯示到文本框。
  • 添加開始錄製的方法。在運行了“StartRecording”事件後,還需要動態的往主攝像機上添加“CameraRecoder”腳本,並運行該腳本的“Setup”方法。
  • 添加停止錄像的方法,停止後,還需要刪除動態添加的腳本。
using UnityEngine;
using UnityEngine.UI;
using easyar;
using VideoRecording;

public class RecorderController : MonoBehaviour
{
    public Text uiText;
    public VideoRecorder videoRecorder;
    private CameraRecorder cameraRecorder;

    private void Awake()
    {
        videoRecorder.StatusUpdate += (status, msg) =>
        {
            if (status == RecordStatus.OnStarted)
            {
                uiText.text = "Recording start";
            }
            if (status == RecordStatus.FailedToStart || 
status == RecordStatus.FileFailed || status == RecordStatus.LogError)
            {
                uiText.text = "Recording Error: " + status + ", details: " + msg;
            }
            Debug.Log("RecordStatus: " + status + ", details: " + msg);
        };
    }
    public void StartRecorder()
    {
        videoRecorder.StartRecording();
        cameraRecorder = 
Camera.main.gameObject.AddComponent<CameraRecorder>();
        cameraRecorder.Setup(videoRecorder, null);
    }
    public void StopRecorder()
    {
        if (videoRecorder.StopRecording())
        {
            uiText.text = "Recording stop " + videoRecorder.FilePath;
        }
        else
        {
            uiText.text = "Recording failed";
        }
        if (cameraRecorder)
        {
            cameraRecorder.Destroy();
        }
    }
}

運行以後,點擊按鈕就可以開始錄像,文本框會顯示開始錄製的提示“Recording start”。點擊停止按鈕,就會停止錄像。

使用屏幕錄像功能

錄像的結果會保存在持久數據目錄下,具體目錄位置請查看Unity官方文檔
https://docs.unity3d.com/2018.4/Documentation/ScriptReference/Application-persistentDataPath.html

使用屏幕錄像功能

視頻版地址:https://www.bilibili.com/video/bv1eK4y1k7QX

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章