¡Tutorial de nivel de niñera! Integre SoundNet SDK para realizar llamadas de audio y video de la plataforma iOS y funciones de fondo virtual

Hola a todos, soy @小曾学习, autor de la comunidad de desarrolladores de RTE de Shengwang.

Si desea implementar llamadas de audio y video en la plataforma iOS y agregar un fondo virtual a las llamadas de audio y video, puede usar este artículo como referencia. Use el lenguaje Swift, integre Acoustics SDK para implementar llamadas de audio y video, y llame a la interfaz enableVirtualBackground para agregar un fondo virtual.Amigos, apúrense y practiquen con Xiao Zeng.

Este artículo es principalmente para integrar Agora iOS SDK, realizar una demostración simple de audio y video y realizar la función de fondo virtual en la demostración. También incluirá algunos problemas encontrados al importar imágenes de fondo virtuales, así como la postura de llamada de las API relacionadas. Sigue paso a paso, y podrás realizar tu propia demostración de audio y video. Si tienes alguna duda, también puedes comentar o dejar un mensaje privado.

01 Preparación preliminar

Antes de implementar la demostración de audio y video de la plataforma iOS, debe tener los siguientes preparativos:

• Xcode
• Registre una cuenta de Shengwang, solicite el APPID de Shengwang, token temporal, consulte Comenzar a usar la plataforma de Shengwang para obtener más detalles

Si aún no tiene una cuenta de Shengwang, puede registrarse de forma gratuita a través del enlace al final del artículo , y cada cuenta tiene una cuota gratuita de 10,000 minutos por mes. Si se trata de aprendizaje/depuración personal, el tiempo es suficiente.

Preste atención al token temporal, que se utiliza principalmente para autenticar al usuario cuando el cliente se une al canal y tiene una validez de 24 horas.

El entorno de prueba y desarrollo personal de Xiao Zeng es el siguiente:

• MacBook Pro
• Xcode: v 14.2
• SoundNet SDK: 4.1.1, para descargar el SDK, consulte las referencias al final de este artículo
• Cuenta de desarrollador de Apple

02 combate

Esta práctica lo guiará paso a paso para implementar llamadas de audio y video y llamar a la interfaz enableVirtualBackground para agregar funciones de fondo virtual.

2.1 Crear un proyecto

(1) Crear un proyecto de iOS

Abra Xcode——Cree un nuevo proyecto Xcode——seleccione la APLICACIÓN en el módulo iOS, y luego aparecerá la siguiente interfaz, ingrese el contenido relevante. Cabe señalar que Team es una cuenta de desarrollador. Si no tiene una , puedes ir al sitio web oficial de Apple Developers para registrar uno gratis.

Por favor agregue una descripción de la imagen

(2) Después de hacer clic en Siguiente, aparecerá la siguiente interfaz. Seleccione Implementaciones mínimas como 13.0, lo que indica que la demostración es compatible con iOS 13.0 y superior. Tenga en cuenta que la función de fondo virtual solo es compatible con iOS 13 y superior.

Por favor agregue una descripción de la imagen

(3) Agregar permisos de dispositivos multimedia

Haga clic en la columna Información, agregue permisos de cámara y micrófono, haga clic en el signo "+" para seleccionar Privacidad - Descripción del uso de la cámara, Privacidad - Descripción del uso del micrófono respectivamente . Si no agrega permisos, cuando haga clic en demostración, habrá un problema de bloqueo.

Por favor agregue una descripción de la imagen

(4) Abra la terminal, ingrese al directorio raíz VideoCall_ios, ingrese y ejecute el comando pod init, en este momento se generará un archivo Podfile en el directorio, edite el archivo Podfile e ingrese, indicando el sdk de red de sonido integrado pod 'AgoraRtcEngine_iOS','4.1.1’.

pod init
open -e Podfile

Por favor agregue una descripción de la imagen

(5) Instale el SDK

Ingrese al directorio raíz en la terminal, ingrese el comando pod install y ejecútelo, y descargue automáticamente Acoustics SDK a través de cocoapods . Cuando vea que la instalación de Pod se completó, significa que la instalación se realizó correctamente. En este momento, encontrará que hay un archivo {project}.xcworkspace adicional en el directorio raíz. En este archivo, el archivo del proyecto y la biblioteca de dependencias del pod recién instalada se cargarán al mismo tiempo, y los dos se asociarán. Abra el archivo con Xcode para realizar más operaciones.

Por favor agregue una descripción de la imagen

2.2 Realizar llamadas de audio y video

Esta sección presenta principalmente cómo usar Agora Video SDK para implementar llamadas de audio y video en la plataforma iOS. Las siguientes implementaciones de código se ingresan en el archivo ViewController.swift .

(1) Importar kit SoundNet

import AgoraRtcKit
//自3.0.0版本起,AgoraRtcEngineKit 类名更换为 AgoraRtcKit

(2) Cree una interfaz de usuario básica e inicialice la interfaz

Cree la interfaz de usuario en la clase ViewController e inicialícela

class ViewController: UIViewController{ 
    // 定义本地视图变量
    var localView: UIView!
    // 定义远端视频变量
    var remoteView: UIView!
    // 定义 agoraKit
    var agoraKit: AgoraRtcEngineKit!

  // 设置视频窗口布局
    override func viewDidLayoutSubviews(){
        super.viewDidLayoutSubviews()
        remoteView.frame = self.view.bounds
        localView.frame = CGRect(x: self.view.bounds.width - 180, y:0, width: 180, height: 230)  
    }

    func initView(){
        // 初始化远端视频窗口。
        remoteView = UIView()
        self.view.addSubview(remoteView)
        // 初始化本地视频窗口。
        localView = UIView()
        self.view.addSubview(localView)
    }

(3) Inicializar AgoraRtcEngineKit

En la clase ViewController, crea una instancia del objeto AgoraRtcEngineKit.

//初始化引擎
func initializeAgoraEngine(){
     let config = AgoraRtcEngineConfig()
     // 在这里输入你的 App ID.
     config.appId = "24bbaca4116c4b11b81cdf4cffdf41"
     // 调用 AgoraRtcEngineDelegate
     agoraKit = AgoraRtcEngineKit.sharedEngine(with: config, delegate: self)
    
 }

(4) Únete al canal

Unirse a un canal es un paso necesario para implementar llamadas de audio y video, y debe llamar al método agoraKit.joinChannel(byToken:channelId:info:uid:joinSuccess:) .

Nota: YOUR_TOKEN es el Token que generaste en el sitio web oficial de SoundWeb , y YOUR_CHANNEL_ID es el ID del canal que definiste tú mismo. Un canal puede entenderse como un canal dedicado a transmitir datos de audio y video en tiempo real. uid es su ID de usuario en el canal, 0 significa usar una ID de usuario generada automáticamente.

func joinChannel(){
    let option = AgoraRtcChannelMediaOptions()
    // 在视频通话场景下,将频道场景设置为 liveBroadcasting
    option.channelProfile = .liveBroadcasting 
    // 设置用户角色为主播
    option.clientRoleType = .broadcaster 
    // 使用临时 token 加入频道,在这里传入你的项目的 token 和频道名。
    agoraKit?.joinChannel(byToken: "007eJxTYezdV5FYj92Eh4WVzc+Yfl9sd4XNOyPb1it1+3nGPwt4rMBiZJCUlJieaGBqaJZskGRomWRgmp6SZJKelAUlDI/PFnAIpDYGMDDtmv2BkZIBAEJ+FoSo1L52BAQBbtCAO", channelId: "zeng", uid: 0, mediaOptions: option)
}

(5) Habilitar captura y vista previa de video local

Llame a agoraKit.enableVideo() para habilitar la captura de video, llame a agoraKit.enableAudio() para habilitar la captura de audio y llame a agoraKit.startPreview() para iniciar la vista previa local.

func setupLocalVideo(){
    // 启用视频模块
    agoraKit?.enableVideo()
    agoraKit?.enableAudio()
    // 开始本地预览
    agoraKit?.startPreview()
    let videoCanvas = AgoraRtcVideoCanvas()
    videoCanvas.uid = 0
    videoCanvas.renderMode = .hidden
    videoCanvas.view = localView
    // 设置本地视图
    agoraKit?.setupLocalVideo(videoCanvas)
    }

(6) Deja el canal

func leaveChannel() {
    // Step 1, release local AgoraRtcVideoCanvas instance
    agoraKit.setupLocalVideo(nil)
    // Step 2, leave channel and end group chat
    agoraKit.leaveChannel(nil)
    AgoraRtcEngineKit.destroy()
 }

(7) Establecer video de usuario remoto

Use la palabra clave de extensión para implementar extensiones de clase.

extension ViewController: AgoraRtcEngineDelegate{
    // 监听 didJoinedOfUid 回调
        // 远端主播加入频道时,会触发该回调
    func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinedOfUid uid: UInt, elapsed: Int){
        let videoCanvas = AgoraRtcVideoCanvas()
        videoCanvas.uid = uid
        //渲染模式 采用hidden
        videoCanvas.renderMode = .hidden
        videoCanvas.view = remoteView
        // 设置远端视图
        agoraKit?.setupRemoteVideo(videoCanvas)
   }
}

(8) Cargue la vista y renderice la pantalla

Implementar la función viewDidLoad en la clase ViewController

override func viewDidLoad() {
        super.viewDidLoad()
        // 当加载视图后,你可以进行其他其他设置。
        // 初始化视频窗口函数
        initView()
        // 当调用声网 API 时,以下函数会被调用
        initializeAgoraEngine()
        setupLocalVideo()
        joinChannel()
    }

(9) Ejecute la demostración

Haga clic en el botón ejecutar, seleccione una máquina de prueba adecuada y ejecute la demostración. Yo uso el iPhone 13 real para la depuración.

Por favor agregue una descripción de la imagen

Al iniciar la demostración, primero debe confiar en la aplicación, vaya a Configuración - General - VPN y administración de dispositivos - confiar en la aplicación.

2.3 Realizar la función de fondo virtual

SoundNet Video SDK proporciona la interfaz enableVirtualBackground.La función de fondo virtual le permite usar una imagen de fondo personalizada para reemplazar la imagen de fondo original del usuario local o para difuminar el fondo. Después de habilitar con éxito la función de fondo virtual, todos los usuarios del canal pueden ver el fondo personalizado.

Cabe señalar que el método enableVirtualBackground se llama después de enableVideo o startPreview . Además, este método depende de la biblioteca dinámica de fondo virtual AgoraVideoSegmentationExtension.xcframework Si se elimina esta biblioteca dinámica, esta función no se puede habilitar normalmente. La biblioteca dinámica se puede ver en el directorio Pods.

Por favor agregue una descripción de la imagen
En el método enableVirtualBackground, se deben pasar tres parámetros en

enable: Indica si habilitar el fondo virtual, el valor es verdadero o falso

backData: indica una imagen de fondo personalizada

segData: Indica las propiedades de procesamiento de la imagen de fondo

La implementación específica es la siguiente:

(1) Subir imagen de fondo

Haga clic derecho en el proyecto - Agregar archivos a "VideoCall_ios" - seleccione una imagen para agregar al proyecto, tenga en cuenta que la imagen de fondo personalizada admite formatos PNG y JPG.

Por favor agregue una descripción de la imagen

Después de agregar la imagen, haga clic con el botón derecho en la imagen, muestre el Inspector de archivos, en el lado derecho de la interfaz, cambie el Tipo de imagen a Datos. Si se selecciona el valor predeterminado, el fondo personalizado no tendrá efecto.

Por favor agregue una descripción de la imagen

(2) Implementación de código lógico

Después de la función setupLocalVideo y el método agoraKit?.startPreview() , agregue un fondo virtual y use el método Bundle.main.path() para abrir el archivo de texto.

let source = AgoraVirtualBackgroundSource()
source.backgroundSourceType = .img
source.source = Bundle.main.path(forResource: "test", ofType: "png")
agoraKit.enableVirtualBackground(true, backData: source, segData: nil)

Entre ellos, agoraKit.enableVirtualBackground() tiene un valor de retorno, 0 significa que la llamada es exitosa y cuando es menor que 0, significa que la llamada falló. Para obtener información específica sobre el valor devuelto, consulte enableVirtualBackground .

(3) Pantalla de demostración

Después de ejecutar la demostración, el fondo del video se reemplazó con nuestra imagen personalizada

03 Resumen

Este artículo comparte principalmente el uso del lenguaje Swift, Acoustics SDK integrado para implementar llamadas de audio y video, y llama a la interfaz enableVirtualBackground para agregar un fondo virtual. Desde la construcción del proyecto hasta la llamada de interfaz y la operación de demostración, se ha explicado en detalle, y también se han explicado en detalle los problemas encontrados. Si hay algo que no entiende, puede consultar el inicio rápido en el sitio web oficial de Shengwang . (Nota: el código fuente de demostración de este artículo se ha colocado en github personal)

Referencias

CDN

Descarga SDK

Sitio web oficial de SoundWeb: inicio rápido

Supongo que te gusta

Origin blog.csdn.net/agora_cloud/article/details/129812278
Recomendado
Clasificación