> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/sdks/sdk-mobile/android-sdk/componentes-modulos/video-grabacion.md).

# Videograbación - Videorecording

## Introducción <a href="#id-1-introduccion" id="id-1-introduccion"></a>

La videograbación de pantalla se realiza con el ***VideoRecording Component***.

Este componente se encarga de capturar la pantalla del dispositivo en segundo plano. Está orientado principalmente para la grabación del proceso de onboarding.

***

## Dependencia <a href="#id-2-dependencia" id="id-2-dependencia"></a>

La dependencia específica del componente es:

```
implementation "com.facephi.androidsdk:video_recording_component:$version"
```

***

## Controladores disponibles <a href="#id-3-controladores-disponibles" id="id-3-controladores-disponibles"></a>

| **Controlador**              | **Descripción**                                            |
| ---------------------------- | ---------------------------------------------------------- |
| VideoRecordingController     | Controlador principal de video grabación.                  |
| StopVideoRecordingController | Controlador para realizar la parada de la video grabación. |

***

***

## Lanzamiento simplificado <a href="#id-4-lanzamiento-simplificado" id="id-4-lanzamiento-simplificado"></a>

Una vez iniciado el SDK y creada una nueva operación se podrá lanzar el componente. Se podrá hacer uso de cualquiera de sus controladores para ejecutar su funcionalidad.

### Lanzamiento de la captura <a href="#id-41-lanzamiento-de-la-captura" id="id-41-lanzamiento-de-la-captura"></a>

Para iniciar la grabación de pantalla:

```kotlin
val response = SDKController.launch(
    VideoRecordingController(
        VideoRecordingConfigurationData(...)
    )
)

when (response) {
    is SdkResult.Error   -> Napier.d("ERROR - ${response.error.name}")
    is SdkResult.Success -> response.data
}

```

### Detener la captura <a href="#id-42-detener-la-captura" id="id-42-detener-la-captura"></a>

Para detener la grabación de pantalla:

```kotlin
val controller = StopVideoRecordingController()

controller.setOutput {
    Napier.d("APP: VIDEO RECORDING STATE (stop): ${it.name}")
}

SDKController.launch(controller)

```

### Recepción de errores <a href="#id-61-recepcion-de-errores" id="id-61-recepcion-de-errores"></a>

Los errores se devolverán como un objeto 'VideoRecordingError'.

Lista de errores:

* VRC\_CANCEL\_BY\_USER: El usuario ha cancelado el proceso
* VRC\_COMPONENT\_LICENSE\_ERROR: La licencia del componente no es correcta
* VRC\_EMPTY\_LICENSE: El String de licencia está vacío
* VRC\_INITIALIZATION\_ERROR: Error de inicialización
* VRC\_OPERATION\_NOT\_CREATED: No hay ninguna operación en curso
* VRC\_NETWORK\_CONNECTION: Error en la conexión a internet
* VRC\_PERMISSION\_ERROR: El usuario ha rechazado los permisos necesarios. Con `enableAudio=true` también cubre la denegación o cierre del permiso de micrófono y el rechazo del permiso de `MediaProjection`.
* VRC\_SOCKET\_ERROR: Error en la conexión de los servicios
* VRC\_UNKNOWN\_ERROR: Error desconocido
* VRC\_VIDEO\_CALL\_ACTIVE: No se puede iniciar porque hay una videollamada activa
* VRC\_VIDEO\_ERROR: Error en el procesamiento del vídeo
* VRC\_VIDEO\_RECORDING\_ACTIVE: No se puede iniciar porque el proceso de grabación de vídeo está activo
* VRC\_FETCH\_DATA\_ERROR: Error en la recogida del resultado

### Recepción del resultado correcto - *data* <a href="#id-62-recepcion-del-resultado-correcto-data" id="id-62-recepcion-del-resultado-correcto-data"></a>

En caso de éxito, el campo `data` contiene un objeto `VideoRecordingResult`.

* `state`: Estado de la grabación. `SHARING` indica que la grabación queda iniciada y `FINISH` indica que se ha detenido correctamente.

## Información avanzada

Este apartado amplía la información del componente.

### Configuración avanzada del componente <a href="#id-51-configuracion-avanzada-del-componente" id="id-51-configuracion-avanzada-del-componente"></a>

Para lanzar el componente actual, se deberá crear un objeto *VideoRecordingConfigurationData* que será la configuración del controlador del componente.

A continuación se detallan todos los campos que forman parte de esta clase.

Los campos `url`, `apiKey` y `tenantId` normalmente **no es necesario que sean informados** ya que se completan internamente a través de la licencia usada.

Estos campos suelen informarse **solo** cuando el **servidor** es **OnPremise**.

#### **url**

Ruta al socket de video

#### **apiKey**

ApiKey necesaria para la conexión con el socket de video

#### **tenantId**

Identificador del tenant que hace referencia al cliente actual, necesario para la conexión con el servicio de video.

#### **enableAudio**

Activa la captura de audio durante la grabación de pantalla. Por defecto `false`. Cuando se informa como `true`, Android solicita `RECORD_AUDIO` antes del permiso de `MediaProjection`; si el usuario deniega o cierra la pantalla de permisos se devuelve `VRC_PERMISSION_ERROR` y la grabación no se inicia.

\ <br>
