UnityRecoderのインストール
Windows → パッケージマネージャー → Unityレジストリ内からインストールする。(検索でRecorderと入力するとすぐに見つかる)
UnityRecoderをスクリプトから操作
インストールしただけだど、クラスにアクセスできなかったが、サンプル → Movie Sampleをインストールすることで、操作するクラスにアクセスできるようになる。
#if UNITY_EDITOR
using UnityEngine;
using System.IO;
using UnityEditor.Recorder;
using UnityEditor.Recorder.Encoder;
using UnityEditor.Recorder.Input;
public class AutoRecorder : MonoBehaviour
{
private RecorderController recorderController;
[Header("出力フォルダ名(英語)")] [SerializeField] string outputFileName = "SampleRecordings";
[Header("出力ファイル名(英語)")][SerializeField] string videoName = "videoName"; //日本語が入るとエラーが発生する
public void Setting()
{
var settings = ScriptableObject.CreateInstance();
var movieRecorderSettings = ScriptableObject.CreateInstance();
//movieRecorderSettings.OutputFile = "recordings/recording";
movieRecorderSettings.ImageInputSettings = new GameViewInputSettings
{
OutputWidth = 1920,
OutputHeight = 1080
};
movieRecorderSettings.EncoderSettings = new CoreEncoderSettings
{
EncodingQuality = CoreEncoderSettings.VideoEncodingQuality.Medium,
Codec = CoreEncoderSettings.OutputCodec.MP4
};
movieRecorderSettings.CaptureAudio = false; //音声をキャプチャするか
var mediaOutputFolder = new DirectoryInfo(Path.Combine(Application.dataPath, "..", outputFileName)); //アウトプットファイル名(無ければ生成される)
movieRecorderSettings.OutputFile = mediaOutputFolder.FullName + "/" + videoName; //ビデオ名
settings.AddRecorderSettings(movieRecorderSettings);
settings.SetRecordModeToManual();
recorderController = new RecorderController(settings);
}
public void StartRecord()
{
if (!recorderController.IsRecording())
{
recorderController.PrepareRecording();
recorderController.StartRecording();
Debug.Log("録画スタート");
}
}
public void EndRecord()
{
if (recorderController.IsRecording())
{
recorderController.StopRecording();
Debug.Log("録画停止");
}
}
}
#endif
上のスクリプトをオブジェクトにアタッチし、他のスクリプトからStartRecord()関数、EndRecord()関数を呼び出すことで実行中に録画の開始、停止をすることができる。
ただし、StartRecord()関数を呼ぶ前に必ず、一度Setting()関数を実行しておく必要があります。
また、出力ファイル名が日本語だと、出力は完了できるがUnity上でエラーが発生します。