NatDevice
NatDeviceを使ってカメラ番号を指定する方法が見つからなかったのでメモ
NatCamTest.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using NatSuite.Devices;
public class NatCamTest : MonoBehaviour
{
[Header(@"UI")]
public RawImage rawImage;
public AspectRatioFitter aspectFitter;
[SerializeField] private int camera_num = 0;
async void Start () {
// Find webcams
var criterion = MediaDeviceQuery.Criteria.GenericCameraDevice;
var query = new MediaDeviceQuery(criterion);
for (int i = 1; i <= camera_num; i++)
{
query.Advance();
}
var device = query.currentDevice as ICameraDevice;
Debug.Log(device);
// Start the camera preview
var previewTexture = await device.StartRunning();
// Display the preview in our UI
rawImage.texture = previewTexture;
aspectFitter.aspectRatio = (float)previewTexture.width / previewTexture.height;
}
// Update is called once per frame
void Update()
{
}
}
備考
- 別々の2つのWebカメラにアクセス可能
- NatDeviceを使ったらUnityのwebcamtextureより遅延が少なくなるかな?と思ったら,あんまり変わんなさそう.
- ただのwebcamtextureのwrapperぽい? - テクスチャへのアクセスはしやすそう - Python使ってアクセスしたほうが遅延が少なく安定した( [Unityのwebcamtextureが遅すぎる問題の解決策](https://qiita.com/signs0302/items/178c8d218b052ea61d8a) )NatDeviceを使用して表示とUnity標準のwebcamtexture比較 pic.twitter.com/ir1oTF7HfO
— さいんす(signs) (@signs0302) August 23, 2020
webcamtextureで取得した映像がものすごく遅延するので,Python経由でWebカメラの映像を取得してみました
— さいんす(signs) (@signs0302) June 10, 2020
明らかに遅延減ってるし画質も良くなった気がしますね
左:Unity標準のwebcamtextureで取得した映像,右:PythonでFlaskサーバ立ててOpenCVで取得した画像をストリーミングした映像 pic.twitter.com/1IvTWKMX8Z
参考
- Finding Devices - NatDevice API : (https://docs.natsuite.io/natdevice/workflows/finding-devices)