Могу ли я записать видео приложения в Hololens, которое также использует камеру? Есть ли способ сделать оба? - PullRequest
2 голосов
/ 03 мая 2019

Я разрабатываю приложение в движке 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, мы должны показать видео или живую демонстрацию для класса.

Однако запись всегда останавливается, как только наше приложение пытается сделать снимок.Мы не можем записать видео с веб-камеры, а также сделать снимки, используя наш код выше, во время записи.Это имеет смысл, кажется, что наше приложение должно отключить веб-камеру от процесса записи, чтобы использовать ее.Это также относится к потоковой передаче видео через портал устройства.

Это означает, что мы никогда не сможем записать демонстрацию нашего действующего проекта.Запись видео всегда заканчивается, как только наше приложение получает доступ к камере.

Я обнаружил посты и темы много лет назад, спрашивающие об этом, но ни одна из них так и не была решена.Есть ли известный способ обойти это сейчас?Можно ли как-нибудь получить видео моего проекта, используя его для съемки внутри приложения?

1 Ответ

3 голосов
/ 03 мая 2019

Я так и не нашел способ.

Не говоря о том, что невозможно, , но при активной камере, когда ваше приложение открыто, функции захвата экрана и захвата видео портала разработчикаотключен.

Я использовал голосовую команду, чтобы освободить камеру (но не изменить сцену), чтобы я мог делать снимки экрана, поскольку все, для чего я использовал камеры устройства, было для распознавания объектов Vuforia, так что пока яне двигались (слишком сильно), скриншоты были приемлемы.

Поэтому я никогда не оглядывался по-другому.Существует , вероятно, способ сделать это (учитывая, что Microsoft смогла представить это), но это может быть не то, к чему мы, как внешние разработчики, можем получить доступ;как много особенностей Hololens.

...