C# 在统一连接多个摄像头时选择摄像头并输出视频
我正在尝试通过在Unity中连接手动跟踪摄像头设备(Leap motion:window device manager列表:0)和网络摄像头设备(window device manager列表:1)来显示AR视频 Leap motion使用制造商的SDK和软件包文件进行连接,因此无需额外编码来连接Unity中的摄像头 当我在Unity中连接网络摄像头(窗口设备管理器列表:1)并显示AR视频时,就会出现问题 将以下代码应用于对象时,如果同时连接了Leap motion和网络摄像头,则Leap motion将被识别并作为视频输出,网络摄像头的视频输出将变得不可能 如果从电脑上拔下leap motion后只连接了网络摄像头,则网络摄像头的视频输出是可能的 我想在Leap motion和webcam camera都连接到PC的对象上选择webcam camera(窗口设备管理器列表:1)来输出视频 由于我是Unity的初学者,我需要在下面的代码中简单地修改它 等待帮助C# 在统一连接多个摄像头时选择摄像头并输出视频,c#,unity3d,camera,selection,leap-motion,C#,Unity3d,Camera,Selection,Leap Motion,我正在尝试通过在Unity中连接手动跟踪摄像头设备(Leap motion:window device manager列表:0)和网络摄像头设备(window device manager列表:1)来显示AR视频 Leap motion使用制造商的SDK和软件包文件进行连接,因此无需额外编码来连接Unity中的摄像头 当我在Unity中连接网络摄像头(窗口设备管理器列表:1)并显示AR视频时,就会出现问题 将以下代码应用于对象时,如果同时连接了Leap motion和网络摄像头,则Leap mo
using UnityEngine;
using System.Collections;
public class WebCam : MonoBehaviour {
// Use this for initialization
void Start () {
WebCamTexture web = new WebCamTexture(1280,720,60);
GetComponent<MeshRenderer>().material.mainTexture = web;
web.Play();
}
// Update is called once per frame
void Update () {
}
}
使用UnityEngine;
使用系统集合;
公共类网络摄像头:MonoBehavior{
//用于初始化
无效开始(){
WebCamTexture web=新的WebCamTexture(1280720,60);
GetComponent().material.mainTexture=web;
web.Play();
}
//每帧调用一次更新
无效更新(){
}
}
有一个接受参数的构造函数
deviceName:要使用的视频输入设备的名称
您可以通过列出所有可用的设备,并获得如下名称:
var devices = WebCamTexture.devices;
var webcamTexture = new WebCamTexture(devices[1].name);
using System.Linq;
...
var device = devices.Select(d => d.name).FirstOrDefault(n => !n.Contains("Leap"));
Debug.Log(string.Join("\n", devices.Select(d => d.name)));
你也可以过滤掉你需要的设备,比如
var devices = WebCamTexture.devices;
var webcamTexture = new WebCamTexture(devices[1].name);
using System.Linq;
...
var device = devices.Select(d => d.name).FirstOrDefault(n => !n.Contains("Leap"));
Debug.Log(string.Join("\n", devices.Select(d => d.name)));
为了了解摄像头是如何被调用的,并且能够通过名称进行过滤,您可以将它们全部打印出来,例如
var devices = WebCamTexture.devices;
var webcamTexture = new WebCamTexture(devices[1].name);
using System.Linq;
...
var device = devices.Select(d => d.name).FirstOrDefault(n => !n.Contains("Leap"));
Debug.Log(string.Join("\n", devices.Select(d => d.name)));
理论上,您甚至可以将它们输入下拉列表,让用户在创建WebCamTexture
之前决定使用哪种设备,这样您就不必猜测硬编码的名称;)
另请注意: 在创建WebCamTexture之前调用