Compartir a través de


Captura de vídeo de cámara 360

Windows 10, la versión 1803 proporciona compatibilidad con la versión preliminar de la cámara 360, la captura y el registro con las API de MediaCapture existentes. Esto permite a la plataforma exponer orígenes de fotogramas esféricos (por ejemplo, fotogramas equirectangulares), lo que permite a las aplicaciones detectar y controlar 360 secuencias de cámara de vídeo, así como proporcionar una experiencia de captura de 360.

Nota

El ejemplo Cam360 disponible en GitHub muestra cómo admitir escenarios de vista previa, grabación de vídeo y captura de fotos con una cámara de 360 en Windows.

Información general

Una cámara IHV de 360 puede proporcionar complementos DMFT (con o sin controladores UVC personalizados), que expondrá el formato esférico de cada secuencia y tipo de medio que emite fotogramas esféricos, así como procesar la salida del controlador de cámara y proporcionar fotogramas equirectangulares con atributos y metadatos adecuados.

La mayoría de las 360 cámaras vienen con 2 sensores de vuelta a atrás y cubren un FoV de 360 con cierta superposición. Un IHV normalmente se capturaría sincrónicamente con los dos sensores de ojo de pescado, desajuste y cosió los marcos dentro de la DMFT para luego generar fotogramas equirectangulares.

Estas tramas equirectangulares pueden ser adquiridas y consumidas por las aplicaciones a través de las API MediaCapture y MediaPlayer para proyectar una experiencia de vista previa de vídeo de 360, esférica y panorámica. La plataforma aprovechará los metadatos proporcionados a través de DMFT para grabar los vídeos en formato MP4 y incluir implícitamente los metadatos estandarizados adecuados. Cuando se reproduce desde un reproductor de vídeo de reproducción de 360, como la aplicación Movies & TV en Windows 10, el vídeo grabado resultante ofrecerá la experiencia de movimiento panorámico de vista esférica esperada.

Uso de la cámara 360:

  • Para obtener una vista previa de un fotograma 360, una aplicación necesita usar explícitamente xaml MediaPlayerElement para la versión preliminar. Una aplicación también debe controlar explícitamente la interacción de la interfaz de usuario para el movimiento panorámico, a través del cuaternión MediaPlaybackSphericalVideoProjection.ViewOrientation .

  • Para la grabación de vídeo 360, no es necesario configurar explícitamente una aplicación de captura para 360 contenido si usa las API de WinRT mediaCapture, ya que el formato esférico se pasa implícitamente al receptor de registros y se escribe en el encabezado de archivo.

  • Para la captura de fotos de 360, una aplicación debe agregar explícitamente los metadatos estandarizados adecuados que especifican su formato esférico mediante las API de WinRT de WIC disponibles.

Es hasta el IHV de la cámara 360 para implementar una secuencia con una vista proyectada y exponer los controles Panorámica/Inclinación/Zoom.

La aplicación puede implementar e insertar un efecto para generar una proyección. El efecto puede aprovechar los atributos del tipo multimedia para identificar fotogramas equirectangulares.

Architecture

En el diagrama siguiente se muestra la relación de DMFT con la pila de cámara 360:

Pila de 360 cámaras.

360 IHD de cámara publicará una DMFT que expondrá 360 secuencias de vídeo que proporcionan fotogramas esféricos de un formato definido. DmFT se puede instalar y asociar con la cámara concreta a través del uso del archivo INF para la extensión del controlador, tal y como se describe en el ejemplo . INF a continuación.

La unión y conversión a fotogramas equirectangulares puede tener lugar en el hardware de la cámara o dentro de dmft. Puede ser preferible aprovechar dmft para este fin, ya que permitirá el uso de recursos de hardware como GPU para un procesamiento eficaz. DmFT también rellenará las siguientes propiedades de flujo y tipo de medio (como se muestra en la tabla siguiente) para identificarlas como secuencias de contenido 360.

Incluso si el IHV decide tener la unión realizada en el hardware de la cámara, un DMFT sigue siendo un requisito obligatorio para rellenar las propiedades de atributo stream y mediatype para 360 vídeos.

En la tabla siguiente se muestra el atributo de secuencia necesario para identificar un origen de fotograma esférico:

Nombre de propiedad y GUID Value Atributo
MF_SD_VIDEO_SPHERICAL
{A51DA449-3FDC-478C-BCB5-30BE76595F55}
TRUE (1) Stream y MediaType
MF_SD_VIDEO_SPHERICAL_FORMAT
{4A8FC407-6EA1-46C8-B567-6971D4A139C3}
MFVideoSphericalFormat_Equirectangular (1) MediaType

La propiedad anterior ya existe como parte de mfidl.idl.

Para aprovechar las aplicaciones personalizadas que también realizan la unión, un IHV tiene la opción de exponer otro tipo de medio de vídeo de 360 sin usar con atributos establecidos como MF_SD_VIDEO_SPHERICAL_FORMAT en MFVideoSphericalFormat_Unsupported(0). La aplicación personalizada tendría que seleccionar la secuencia sin procesar y controlarla.

Guía de plataforma

La plataforma ya expone todos los atributos de secuencia a la capa de WinRT para las aplicaciones a través de MediaFrameSourceInfo.Properties, que se puede buscar el GUID de MF_SD_VIDEO_SPHERICAL definido en la tabla anterior. Sin embargo, la plataforma administrará implícitamente la mayoría de las configuraciones esféricas de los elementos de la plataforma. La aplicación solo puede consultar las propiedades para cualquier funcionalidad adicional que el desarrollador de la aplicación quiera implementar, por ejemplo, los efectos personalizados que deban insertarse o quitarse en función de la esférica del vídeo.

La plataforma omite los efectos de la bandeja de entrada, como la detección de caras, el analizador de escenas y la estabilización de vídeo (si se agregan) cuando detecta el valor de la propiedad del atributo stream que indica un origen de fotograma esférico.

La plataforma configura implícitamente el elemento del reproductor multimedia conectado para la versión preliminar de la experiencia de proyección de vídeo 360. La aplicación tiene que llamar a las API de plataforma adecuadas para seleccionar el elemento del reproductor multimedia para la versión preliminar. La aplicación también tiene que implementar la interfaz de usuario para controlar la dirección y el ángulo de proyección del reproductor multimedia. Si la aplicación elige el elemento de captura para la versión preliminar, no se puede aprovechar la experiencia de proyección esférica.

La plataforma también configura implícitamente el receptor MP4 para grabar un vídeo de 360 (pase el formato esférico de vídeo adecuado y los metadatos relacionados si existe disponible y compatible) cuando la secuencia usada contiene la propiedad (definida en la tabla siguiente) para proporcionar el atributo de secuencia necesario para identificar un origen de fotograma esférico.

MF_SD_VIDEO_SPHERICAL_FORMAT valor (MFVideoSphericalFormat) Valor SphericalVideoFrameFormat Interpretación
Propiedad que se encuentra en los atributos de tipo de medio establecidos en el valor MFVideoSphericalFormat_Equirectangular (1) SphericalVideoFrameFormat. Equirectangular La secuencia proporciona fotogramas esféricos en formato equirectangular visible a través del elemento MediaPlayer.
Propiedad que se encuentra en los atributos de tipo multimedia establecidos en el valor MFVideoSphericalFormat_Unsupported (0) SphericalVideoFrameFormat. No compatible La secuencia proporciona fotogramas esféricos en otro formato que no es compatible con el elemento MediaPlayer. (Puede ser un formato personalizado compatible con algunas aplicaciones)
La propiedad no está presente en los atributos de tipo multimedia. SphericalVideoFrameFormat. None La secuencia proporciona fotogramas no esféricos normales. (no 360)

Guía sobre la aplicación

La aplicación puede usar el control XAML MediaPlayerElement para aprovechar la experiencia de proyección esférica de vídeo 360.

Si la propiedad MF_SD_VIDEO_SPHERICAL_FORMAT existe en el tipo de medio y se establece en MFVideoSphericalFormat_Equirectangular, se espera que los fotogramas sean esféricos y se puedan representar correctamente a través del control XAML MediaPlayerElement . La aplicación puede consultar el formato esférico detectado por el reproductor multimedia comprobando las propiedades de MediaPlaybackSphericalVideoProjection obtenidos de la sesión de reproducción del reproductor multimedia (objMediaPlayer.PlaybackSession.SphericalVideoProjection). La aplicación tiene que establecer la propiedad isEnabled en TRUE para iniciar la proyección esférica.

Si la aplicación implementa su propio componente de proyección esférica personalizada, puede consultar el origen del fotograma a través de su MediaFrameSourceInfo.Properties para las propiedades de vídeo de nivel de secuencia esférica, tal como se describe en la tabla anterior. Sin embargo, la plataforma configurará implícitamente toda la configuración del elemento de plataforma, como la vista previa del reproductor de media y el receptor de registros, en la detección de las propiedades de vídeo esféricas expuestas por la cámara DMFT en los atributos de tipo de transmisión y multimedia.

. Ejemplo de archivo INF para publicar una DMFT

;=================================================================================
; Microsoft Sample Extension INF for USB Camera SampleDeviceMFT installation
; Copyright (C) Microsoft Corporation. All rights reserved.
;=================================================================================

[Version]
Signature="$WINDOWS NT$"
Class=Extension
ClassGUID={e2f84ce7-8efa-411c-aa69-97454ca4cb57}
Provider=%CONTOSO%
ExtensionId = {E4FE3A00-68CF-45A3-83C8-8347A6A38069} ; replace with your own GUID
CatalogFile.NT = SampleExtensionInfForDmftInstallation.cat
DriverVer=03/28/2024,10.0.25326.2000
PnpLockdown=1

[Manufacturer]
%CONTOSO% = ContosoSampleDeviceMFT,ntamd64.10.0...25326

[ContosoSampleDeviceMFT.ntamd64.10.0...25326]
%ContosoCamera.DeviceDesc% = ContosoSampleDeviceMFT_Install, usb\vid_xxxx&pid_xxxx&mi_xx  ; replace with your camera device VID PID

[ContosoSampleDeviceMFT_Install]
CopyFiles=ContosoSampleDeviceMFTCopy
AddReg=ContosoSampleDeviceMFT_COM.AddReg

;-----------------------------------------------------------------------------------
;
; Registers Device MFT COM object
;
;-----------------------------------------------------------------------------------

[ContosoSampleDeviceMFT_COM.AddReg]
HKR,Classes\CLSID\%SampleDeviceMFT.CLSID%,,,%SampleDeviceMFT.FriendlyName%
HKR,Classes\CLSID\%SampleDeviceMFT.CLSID%\InProcServer32\,,%REG_EXPAND_SZ%,"%13%\ContosoSampleDeviceMFT.dll"
HKR,Classes\CLSID\%SampleDeviceMFT.CLSID%\InProcServer32\,ThreadingModel,,"Both"

[ContosoSampleDeviceMFT_Install.Interfaces]
AddInterface=%KSCATEGORY_VIDEO_CAMERA%,,ContosoSampleDeviceMFT.Interfaces,

[ContosoSampleDeviceMFT.Interfaces]
AddReg=ContosoSampleDeviceMFT.AddReg

;-----------------------------------------------------------------------------------
;
; Add DeviceMFT CLSID to device interface instance registry key
;
;-----------------------------------------------------------------------------------

[ContosoSampleDeviceMFT.AddReg]
HKR,,CameraDeviceMftClsid,,%SampleDeviceMFT.CLSID%

;-----------------------------------------------------------------------------------
;
; File copy sections
;
;-----------------------------------------------------------------------------------

[SourceDisksFiles]
ContosoSampleDeviceMFT.dll=1

[SourceDisksNames]
1 = %MediaDescription%

[DestinationDirs]
ContosoSampleDeviceMFTCopy=13
DefaultDestDir = 13

[ContosoSampleDeviceMFTCopy]
ContosoSampleDeviceMFT.dll

[Strings]
CONTOSO = "Contoso Inc."
ContosoCamera.DeviceDesc = "Contoso Camera Extension"
MediaDescription="Contoso Camera Sample Device MFT Installation Media"
SampleDeviceMFT.CLSID = "{zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz}" ; replace with your Device MFT COM object's CoClass ID
SampleDeviceMFT.FriendlyName = "Contoso Camera Device MFT"
KSCATEGORY_VIDEO_CAMERA="{E5323777-F976-4f5b-9B55-B94699C46E44}"
REG_EXPAND_SZ=0x00020000

Flujo de fotogramas de ejemplo con un dispositivo UVC

(1) Marco combinado sin zanjar que sale de USBVideo.sys:

Marco combinado sin zanjar.

(2) Frame unwarped, stitched and transformed to equirectangular inside a DMFT sent to the application's rendering element for preview, to a video sink or photo sink to be stored to file:

Marco no invertido, cosido y transformado.

(3) Ventanilla representada dentro de una aplicación mediante un elemento de interfaz de usuario que aplica una proyección esférica, así como proporcionar movimiento panorámico de rotación de ventanilla y campo de interacción de vista:

Ventanilla representada.