> 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/ios-sdk/modulos/video-grabacion.md).

# Videograbación - Videorecording

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

El *Componente* tratado en el documento actual recibe el nombre de ***VideoRecording Component***. Éste se encarga de capturar la pantalla del dispositivo en segundo plano. Está orientado principalmente para la grabación del proceso de onboarding.

En el apartado de [Lanzamiento simplificado](/sdks/sdk-mobile/ios-sdk/inicializacion/lanzamiento-simplificado.md) se detallan los pasos necesarios para la integración básica del SDK. En esta sección se añade la información para el lanzamiento de este componente.

## Dependencias

Para evitar conflictos y problemas de compatibilidad, en caso de querer instalar el componente en un proyecto que contenga una versión antigua de las librerías de Facephi (*Widgets*), éstos deberán eliminarse por completo antes de la instalación de los componentes de la ***SDKMobile***.

### Cocoapods

* Actualmente las librerías de FacePhi se distribuyen de forma remota a través de diferentes gestores de dependencias, en este caso Cocoapods. Las dependencias **obligatorias** que deberán haberse instalado previamente (añadiéndolas en el fichero Podfile del proyecto) son:

```swift
  pod 'FPHISDKMainComponent', '~> $VERSION'
```

* Para instalar el componente de Selphi deberá incluirse la siguiente entrada en el Podfile de la aplicación:

```swift
  pod 'FPHISDKVideoRecordingComponent', '~> $VERSION'
```

### SPM

* Las dependencias obligatorias que deberán haberse instalado previamente son:

```sh
//HTTPS
https://github.com/facephi-clienters/SDK-SdkPackage-SPM.git
//SSH
git@github.com:facephi-clienters/SDK-SdkPackage-SPM.git
```

* Para instalar el componente de SELPHI deberá incluirse en los módulos del proyecto:

```swift
//HTTPS
https://github.com/facephi-clienters/SDK-VideoRecording-SPM.git
//SSH
git@github.com:facephi-clienters/SDK-VideoRecording-SPM.git
```

## Permisos

En la aplicación cliente donde se vayan a integrar los componentes es necesario incorporar el siguiente elemento en el fichero **Info.plist** cuando la grabación vaya a incluir audio:

```
Es necesario permitir el uso del micrófono (NSMicrophoneUsageDescription - Privacy - Microphone Usage Description)
```

{% hint style="info" %}
El permiso de micrófono solo es necesario si activas **`enableAudio`** en **`VideoRecordingConfigurationData`**. Por defecto **`enableAudio`** es **`false`** y la grabación no captura audio.
{% endhint %}

## Controladores disponibles

| **Controlador**          | **Descripcion**                         |
| ------------------------ | --------------------------------------- |
| VideoRecordingController | Controlador principal de Videograbación |

## Lanzamiento simplificado

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.

### Declaración de controlador

```swift
private var videoRecordingController: VideoRecordingController?
```

### Lanzamiento de la captura

Para iniciar la grabación de pantalla:

```swift
public func launchVideoRecording(viewController: UIViewController) {
    let data = VideoRecordingConfigurationData()
    let videoRecordingController = VideoRecordingController(
        data: data,
        viewController: viewController,
        output: {
            print("videoRecordingController output: \($0.errorType)")
        })
    SDKController.shared.launch(controller: videoRecordingController)
    self.videoRecordingController = videoRecordingController
}
```

### Detener la captura

Para detener la grabación de pantalla:

```swift
public func stopVideoRecording() {
    self.videoRecordingController?.stopVideoRecording()
}
```

### 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\_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
* 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

## 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 incluidos en la configuración, 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**

Flag que permite configurar si la videograbación dispondrá de audio o no. Por defecto a `false`.

{% hint style="info" %}
Si **`enableAudio`** es **`true`**, debes declarar el permiso de micrófono en **Info.plist** (véase la sección [Permisos](#permisos)).
{% endhint %}
