動作環境
- macOS version 12.3.1 Monterey Intel Core i9
- Unity 2020.3.8f1
- NRSDKForUnityAndroid_1.8.0.unitypackage
- NrealLight モデル:NR-9101GGL
- Xperia 5 Ⅱ SOG02SLA
元からある録画機能
NRSDKForUnityAndroid_1.8.0.unitypackageをUnityにインポートすると、Assets/NRSDK/Demosの中にRGBCamera-Recordが作られており、これをbuildするとNrealのカメラから動画が取れる。
アプリを実行すると、録画の設定に関するパネルが表示されるので好きな設定を選んで、赤い丸をコントローラーでクリックする。
QualityがMiddleの場合、(自分の環境だと)1分程度録画ができるが1分以上になると録画した動画が見れなくなるので注意。
他のシーンを録画したい場合
RGBCamera-Recordのシーンにある、VideoCaptureExampleオブジェクトを丸ごと録画したいシーンに配置すればOK。
今回はHelloMRにVideoCaptureExampleオブジェクトを置いた。
このシーンをbuildして録画するとこんな感じ。
自分がつまずいた所
RGBCamera-Recordを使って録画すると、動画の保存先がXperiaのどこなのかわからないという問題にぶつかった。
これはおそらく、VideoCapture2LocalExample.csのVideoSavePathが原因で、
/// <summary> Save the video to Application.persistentDataPath. </summary>
/// <value> The full pathname of the video save file. </value>
public string VideoSavePath
{
get
{
string timeStamp = Time.time.ToString().Replace(".", "").Replace(":", "");
string filename = string.Format("Nreal_Record_{0}.mp4", timeStamp);
return Path.Combine(Application.persistentDataPath, filename);
}
}
ここのreturn Path.Combine(Application.persistentDataPath, filename);
をreturn Path.Combine("/sdcard/Download/", filename);
に変えるとXperia(SOG02)のDownloadに保存された。
Andoridの設定で内蔵ストレージのトップ(ルートディレクトリ)として見えているのが/sdcard/なので、保存先を変えたければ、/sdcard/好きな保存先
としてやれば良さそう。
追記:Application.persistentDataPathの理解
return Path.Combine(Application.persistentDataPath, filename);
のせいで動画の保存先がXperiaのどこなのかわからない問題が起こっていたが解決したので追記。
Application.persistentDataPathを使うと、android/data/<アプリの名前>/files
の下に動画が保存される。
例えば、UnityでアプリをBuildするときにパッケージ名をcom.DefaultKentoCompany.HelloMRRec
としていた場合
動画の保存先はandroid/data/com.DefaultKentoCompany.HelloMRRec/files
の下に動画が保存される。