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

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

整體說明

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

整體說明

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個按鈕用於開始和中止錄像,添加一個文本框顯示提示。ide

編寫腳本。ui

  • 在腳本的「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」。點擊中止按鈕,就會中止錄像。spa

使用屏幕錄像功能

錄像的結果會保存在持久數據目錄下,具體目錄位置請查看Unity官方文檔 docs.unity3d.com/2018.4/Docu…線程

使用屏幕錄像功能

視頻版地址:www.bilibili.com/video/bv1eK…3d

相關文章
相關標籤/搜索