我使用Unity 2018.2.12和DirectShow.Net
我创建了枚举视频捕获设备的简单代码。它找到了设备,但在作为 Unity 脚本运行时无法获取其FriendlyName 属性。
using DirectShowLib;
using UnityEngine;
namespace DirectShow.Net_Tests {
public class CodeForUnity : MonoBehaviour {
void Start() {
foreach (var device in DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice))
{
Debug.Log(
$"Device Name:\t{device.Name}\n" +
$"\tDevice FriendlyName (Property):\t{device.GetPropBagValue("FriendlyName")}\n" +
$"\tDevice Class GUID:\t{device.ClassID}\n");
}
}
}
}
相同的代码可以获得作为控制台应用程序运行的FriendlyName属性。
using System;
using DirectShowLib;
namespace DirectShow.Net_Tests {
static class Program {
public static void Main(string[] args) {
foreach (var device in DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice))
{
Console.WriteLine(
$"Device Name:\t{device.Name}\n" +
$"\tDevice FriendlyName (Property):\t{device.GetPropBagValue("FriendlyName")}\n" +
$"\tDevice Class GUID:\t{device.ClassID}\n");
}
}
}
}
为什么它在Unity中不起作用?
我也在 Unity3d 中使用 directshow,并且遇到了同样的问题。