我可以在也使用摄像头的 Hololens 中录制应用程序的视频吗?有没有办法做到这两点?

Can I record a video of an app in the Hololens that also uses the camera? Is there a way to do both?

我正在 Unity 引擎中为使用相机拍照的 Microsoft Hololens 开发一个应用程序。在我们的代码中,首先是照片模式,然后启动相机,拍摄照片,然后处理掉相机,然后结束照片模式。用户必须在使用该应用程序的过程中为其主要功能拍摄多张照片。图片不存储在任何地方,我们只从中获取颜色。

这里是拍照代码:

Resolution cameraResolution = PhotoCapture.SupportedResolutions.OrderByDescending((res) => res.width * res.height).First();
targetTexture = new Texture2D(cameraResolution.width, cameraResolution.height);

                // Create a PhotoCapture object
                PhotoCapture.CreateAsync(false, delegate (PhotoCapture captureObject)
                {

                    photoCaptureObject = captureObject;
                    CameraParameters cameraParameters = new CameraParameters();
                    cameraParameters.hologramOpacity = 0.0f;
                    cameraParameters.cameraResolutionWidth = cameraResolution.width;
                    cameraParameters.cameraResolutionHeight = cameraResolution.height;
                    cameraParameters.pixelFormat = CapturePixelFormat.BGRA32;

                    // Activate the camera
                    photoCaptureObject.StartPhotoModeAsync(cameraParameters, delegate (PhotoCapture.PhotoCaptureResult result)
                    {
                        // Take a picture
                        try
                        {
                            Debug.Log("Trying to take photo");
                            photoCaptureObject.TakePhotoAsync(OnCapturedPhotoToMemory);
                        }
                        catch (System.ArgumentException e)
                        {
                            Debug.LogError("System.ArgumentException:\n" + e.Message);
                        }
                    });
                });

随后处理:

    void OnStoppedPhotoMode(PhotoCapture.PhotoCaptureResult result)
    {
        // Shutdown our photo capture resource
        Debug.Log("Disposing of camera");
        photoCaptureObject.Dispose();
        photoCaptureObject = null;
    }

这段代码非常适合我们的项目 - 每当用户点击一个对象时,我们都会拍照并从中获取颜色。

由于这是 CS 课程中的高级设计项目,我们需要向 class 展示视频或现场演示。

但是,一旦我们的应用程序尝试拍照,录制总是会停止。我们无法同时使用网络摄像头录制视频,也无法在录制时使用我们的上述代码拍照。这是有道理的,似乎我们的应用程序必须从录制过程中抢占网络摄像头才能使用它。这也适用于通过设备门户流式传输视频。

这意味着我们永远无法录制我们正在运行的项目的演示。一旦我们的应用程序访问相机,视频录制总是会结束。

我发现很多年前的帖子和线程都在询问这个问题,但是 none 一直都没有解决。现在有解决这个问题的已知方法吗?有什么方法可以让我获取项目的视频,同时仍然使用它在应用程序内拍照?

我一直没找到方法。

并不是说它不可能,但是当您的应用程序打开时相机处于活动状态,开发者门户的屏幕截图和视频捕获功能将被禁用。

我使用语音命令来释放相机(但不改变场景)以便我可以截屏,因为我使用设备的相机只是为了 Vuforia 对象识别,所以只要我没有移动(太多)截图是可以接受的。

因此我从来没有四处寻找其他方法。 可能 是一种方法(微软已经能够展示它),但作为外部开发人员,我们可能无法访问它;喜欢很多 Hololens 功能。