Kotlin

Criação do Mirror Video Capturer

Precisamos criar um MirrorVideoCapturer, sua função é:

  • abra e configure a câmera,
  • capturar quadros da câmera,
  • refletir os quadros horizontalmente,
  • enviar esses quadros para o SDK da Vonage como vídeo do editor.
  1. Crie um arquivo Kotlin separado com o MirrorVideoCapturer

Como o arquivo é bem grande, copie o conteúdo do MirrorVideoCapturer.kt ao seu projeto. Neste tutorial, vamos nos concentrar apenas nos aspectos principais da captura de vídeo personalizada nas próximas etapas; portanto, não se preocupe se não entender tudo sobre o capturador de imediato.

  1. Como o capturador expõe suas configurações

O SDK precisa saber que tipo de fluxo de vídeo o seu capturador vai fornecer. Isso é feito por meio de getCaptureSettings() no capturador personalizado:

    @Synchronized
    override fun getCaptureSettings(): CaptureSettings {
        val settings = CaptureSettings()
        settings.fps = desiredFps
        settings.width = cameraFrame?.width ?: -1
        settings.height = cameraFrame?.height ?: -1
        settings.format = NV21
        settings.expectedDelay = 0
        settings.mirrorInLocalRender = frameMirrorX

        return settings
    }

As configurações aqui definem a captura da seguinte forma:

fps: quantos quadros por segundo você vai exibir. largura e altura: a resolução dos quadros (pode ser calculada a partir da saída real da câmera ou do tamanho de captura configurado). formato: o formato de pixel que você vai fornecer ao SDK (por exemplo, NV21). atraso previsto: uma estimativa (em ms) do tempo que leva entre a captura e a entrega de um quadro.

Essas configurações são transmitidas ao SDK da Vonage por meio do MirrorVideoCapturer. Quando definidas, o SDK sabe: como alocar buffers, como codificar os quadros, e como adaptar o comportamento da rede e da codificação ao seu perfil de captura.