NRSDK 1.9.3 で実行中プログラムの見た目を録画ができた! ユニティちゃんが動いてます!(まとめ)
どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)
中々うまく動かなかった Nreal Light で実行中のプログラムの録画ができました!
結論から言うと、NRSDK 1.9.3 にしたらできたので NRSDK 側の問題であったっぽい。
NRSDK 1.80、1.9.1 でビルドすると、キャプチャした動画ファイルが 0 バイトで出力されて長いこと困っていました。
「NRSDK 1.9.1 と 1.9.3 の比較」記事を書くためにNRSDKのソースを調べていたところ、動画キャプチャに関する修正が入っているのを発見。
NRSDK 1.9.3 でビルドしたところ録画できるようになりました。
この記事は、NRSDK の動画キャプチャ関連記事をまとめたものになります。
関連記事は、ちょっとずつ書いていたので4つの記事に分割されていました。
うまく動かん!という記事も複数書いていました。
そこで、うまくいった手順の記事へリンクしようと思ったんだけど、関連する全記事にリンクを張るより、まとめた1記事にリンクを張りたかったのよね(;^_^A
ようやく録画できた
なお、録画ができるようにはなったものの動きは不安定である。
不安定なのは録画機能だけじゃなく、通常の動きも何か怪しげ…
表示位置がちょっとずつズレていくのよね…
もしかしたら長い時間の録画が失敗するのかもしれないが、なーんか動きが不安定なのだ。
まぁ、何にせよ、録画が動くようになったから、今後はこんなのを作っているよ、という記事を書きやすくなると思う。
NRSDK の RGBCameraRecord というサンプルを少し変更して録画しています。
Nreal グラスの動画キャプチャサンプルを変更
1.シーン「Assets/NRSDK/Demos/RGBCamera-Record」を開く。
動かすと NReal のロゴがクルクル回転している後ろで動画が再生されて、手前に録画操作をするパネルがある感じです。
2.本来は、これをビルドして実行すると動作を確認できるのですが、スクリプトの動画出力先を修正します。
修正対象のスクリプトの場所「Assets/NRSDK/Demos/Record/VideoCapture2LocalExsample」を開く。
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);
}
}
7行目:returnの行を下記のように変更します。
return Path.Combine("/sdcard/Movies", filename);
ここでいう /sdcard は、Files アプリでいうところの「 SD カード」ではなく「内部ストレージ」のことです。つまり、/sdcard/Movies は、内部ストレージ直下にある Movies ディレクトリで、ここに録画したファイルが保存されます。
変更前の Application.persistentDataPath だと Android 環境では永続的なデータディレクトリのパスとして、 /storage/emulated/0/Android/data/<packagename>/files となるんですが、ファイルを探しづらいので、階層が浅い「内部ストレージのMovies」に録画ファイルが保存されるようにしています。(内部ストレージには最初から Movies ディレクトリがあるので)
3.メニュー「NRSDK」-「InitVideoPlayerDemoEnv」を選択します。
4.メニュー「File」-「BuildSetting」で「Player Setting」にある「Other Setting」グループの「Write Permission」を「External(SDCard)」にします。
5.シーン「Assets/NRSDK/Demos/RGBCamera-Record」 の Hierarchy ビューにある VideoCaptureExample をプロジェクトビューにドラッグ&ドロップしてプレハブ化
6.動画キャプチャを実装したいシーンを開いた後、プレハブ化したVideoCaptureExample をシーンの Hierarchy ビューにドラッグ&ドロップする。
7.Build Setting 画面で動画キャプチャしたいシーンを取り込んで Build する。
ビルドできたら早速、動かしてみましょう!
うまく動きましたか?
さて、このプログラムで録画した時の動作ですが、Nreal Light と Nreal Air では少し違いがあります。
Nreal Light と Nreal Air の RGBCameraRecord の動作の違い
上の写真の2つは、上が Nreal Light、下が Nreal Air です。
サンプル名の RGBCamera (RGBカメラ)というのは、上の Nreal Light の上半分の中央の左側(向かって右側)の丸い部分です。
この RGB カメラは、Nreal Air にはありません。
では、Nreal Air で同じプログラムを動かすとどうなるのでしょう?
Nreal Light での RGB カメラの動き
比較するため、先に Nreal Light の RGB カメラを使った動きを見てみます。
かげさんが作ったシーンは、Nreal Light だとこんな感じの動画になりました。
RGB カメラに写った部分が背景として写っています。(暑くてカーテンを締め切っていた日に録画したため、背景がかなり暗めです)
動画サイズを拡大してみた方が背景が映っているのが分かるかも?
Nreal Air での RGB カメラの動き
かげさんが作ったシーンは、Nreal Air だとこんな感じの動画になりました。
RGB カメラが無いため、背景が黒です。
このように同じプログラムを使っていても Nreal Air では、Nreal Light にしかないカメラの部分の動きが異なります。
NRSDK 内部は、極力、互換性を保つ動きをするようになっているみたいですね、
また、同じプログラムなのに SD ユニティちゃんが近くにいることから距離感も違います。
画質は Nreal Air の方が良いですね!
Neal Light の方は、録画のパネルの設定は何もいじっていないので、設定を変更するともうちょっと良くなるのかもしれません。
そのうち設定変更したらどうなるかも試したいところですね。
▼2022/08/15 追記 ここから確認したところ、録画パネルの設定オプションには画質はありませんでした。
録画パネルの設定オプションについては「RGBCameraRecord で指定できるオプションを調べてみた」を参照。
▲2022/08/15 追記 ここまでここまではOKだ
コメント
このブログの新着コメントをRSSリーダに登録する為のxml