> 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/docs.facephi-pt-br/sdks/sdk-mobile/ios-sdk/modulos/video-grabacion.md).

# Videogravação - Videorecording

## Introdução <a href="#id-1-introduccion" id="id-1-introduccion"></a>

O *Componente* tratado no documento atual recebe o nome de ***VideoRecording Component***. Este é responsável por capturar a tela do dispositivo em segundo plano. É voltado principalmente para a gravação do processo de Onboarding.

Na seção de [Lançamento simplificado](/docs.facephi-pt-br/sdks/sdk-mobile/ios-sdk/inicializacion/lanzamiento-simplificado.md) são detalhadas as etapas necessárias para a Integração básica do SDK. Nesta seção, são adicionadas as informações para o lançamento deste componente.

## Dependências

Para evitar conflitos e problemas de compatibilidade, caso queira instalar o componente em um projeto que contenha uma versão antiga das bibliotecas da Facephi (*Widgets*), eles deverão ser totalmente removidos antes da instalação dos componentes da ***SDKMobile***.

### CocoaPods

* Atualmente as bibliotecas da FacePhi são distribuídas remotamente por meio de diferentes gerenciadores de dependências, neste caso CocoaPods. As dependências **obrigatórias** que deverão ter sido instaladas previamente (adicionando-as ao arquivo Podfile do projeto) são:

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

* Para instalar o componente de Selphi, deve-se incluir a seguinte entrada no Podfile da aplicação:

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

### SPM

* As dependências obrigatórias que deverão ter sido instaladas previamente são:

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

* Para instalar o componente de SELPHI, deve-se incluí-lo nos módulos do projeto:

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

## Permissões

No aplicativo cliente onde os componentes serão integrados, é necessário incorporar o seguinte elemento no arquivo **Info.plist** quando a gravação for incluir áudio:

```
É necessário permitir o uso do microfone (NSMicrophoneUsageDescription - Privacy - Microphone Usage Description)
```

{% hint style="info" %}
A permissão do microfone só é necessária se você ativar **`enableAudio`** em **`VideoRecordingConfigurationData`**. Por padrão **`enableAudio`** é **`false`** e a gravação não captura áudio.
{% endhint %}

## Controladores disponíveis

| **Controlador**          | **Descrição**                          |
| ------------------------ | -------------------------------------- |
| VideoRecordingController | Controlador principal de Videogravação |

## Lançamento simplificado

Uma vez iniciado o SDK e criada uma nova operação, o componente poderá ser lançado. Será possível usar qualquer um de seus controladores para executar sua funcionalidade.

### Declaração do controlador

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

### Lançamento da captura

Para iniciar a gravação de tela:

```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
}
```

### Parar a captura

Para parar a gravação de tela:

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

### Recebimento de erros <a href="#id-61-recepcion-de-errores" id="id-61-recepcion-de-errores"></a>

Os erros serão retornados como um objeto 'VideoRecordingError'.

Lista de erros:

* VRC\_EMPTY\_LICENSE: A string de licença está vazia
* VRC\_INITIALIZATION\_ERROR: Erro de inicialização
* VRC\_OPERATION\_NOT\_CREATED: Não há nenhuma operação em andamento
* VRC\_NETWORK\_CONNECTION: Erro na conexão com a internet
* VRC\_PERMISSION\_ERROR: O usuário recusou as permissões
* VRC\_SOCKET\_ERROR: Erro na conexão dos serviços
* VRC\_UNKNOWN\_ERROR: Erro desconhecido
* VRC\_VIDEO\_CALL\_ACTIVE: Não é possível iniciar porque há uma Videochamada ativa
* VRC\_VIDEO\_ERROR: Erro no processamento do vídeo
* VRC\_VIDEO\_RECORDING\_ACTIVE: Não é possível iniciar porque o processo de gravação de vídeo está ativo

## Informações avançadas

Esta seção amplia as informações do componente.

### Configuração avançada do componente <a href="#id-51-configuracion-avanzada-del-componente" id="id-51-configuracion-avanzada-del-componente"></a>

Para lançar o componente atual, será necessário criar um objeto *VideoRecordingConfigurationData* que será a configuração do controlador do componente.

A seguir, são detalhados todos os campos que fazem parte desta classe.

Os campos incluídos na configuração, normalmente **não precisam ser informados** pois são preenchidos internamente por meio da licença utilizada.

Esses campos costumam ser informados **apenas** quando o **servidor** é **OnPremise**.

#### **url**

Caminho para o socket de vídeo

#### **apiKey**

ApiKey necessária para a conexão com o socket de vídeo

#### **tenantId**

Identificador do tenant que faz referência ao cliente atual, necessário para a conexão com o serviço de vídeo.

#### **enableAudio**

Flag que permite configurar se a videogravação terá áudio ou não. Por padrão a `false`.

{% hint style="info" %}
Se **`enableAudio`** é **`true`**, você deve declarar a permissão de microfone em **Info.plist** (veja a seção [Permissões](#permisos)).
{% endhint %}
