¿Cómo hacer y agregar una función de videollamada en un proyecto de Android Studio, sin usar QuickBlox en una aplicación de chat? ¿Qué función se usa para esto?

Una llamada de video en la aplicación moderna (llamémosla llamada de video moderna) es básicamente una transmisión en vivo bidireccional.

Cuando dice que “no desea utilizar QuickBlox”, supongo que no desea utilizar SDK de chat externo.

Ahora, después de establecer los supuestos, saltemos a los negocios. Solo hablaré sobre el aspecto de transmisión de videollamadas y no sobre otras cosas como iniciar una llamada, enviar notificaciones, aceptar la llamada, etc. Solo la parte de transmisión de llamadas.

En primer lugar, querrá comenzar con la transmisión basada en RTMP o la transmisión basada en RTC (si no recuerdo mal, Quickblox es compatible con RTC y RTMP). Según mi opinión, RTMP es más fácil de configurar y administrar. Así que hablaré sobre eso. Definitivamente necesitaría un servidor de transmisión de medios para las necesidades de transmisión. Hay bastantes. Hay otros gratuitos como Nginx-RTMP, hay otros pagados como Nimble streamer, que es barato pero uno de los mejores. Luego hay Red5Pro poco caro pero muy muy bueno. Hay toneladas de ellos en realidad. Personalmente me encantan los tres anteriores.

Debe configurarlos en su servidor (AWS?), Para poder enviar y recibir transmisiones rtmp. Una vez hecho esto, debe confiar en la cámara de su teléfono y en una forma de convertir los marcos de su cámara en marcos compatibles con rtmp codificados con H264. Puede comenzar a aprender sobre esto leyendo sdks de código abierto como KickFlip streaming SDK (busque en la lista de problemas de github para soporte RTMP) o comenzar usando uno ya presente como PLDroidStreaming o Yasea

Una vez que programe su cámara para enviar transmisiones, necesita un reproductor para mostrar las transmisiones entrantes de otra persona. Ahora puedes codificar tu propio reproductor (para inspirarte puedes mirar FFMPEG-MediaPLayer) o usar los existentes como PLDroidPlayer (en mi humilde opinión uno de los mejores)

Ahora puede unirlos todos junto con su aplicación / lógica empresarial también. La vista previa de la cámara mostrará los cuadros de la cámara mientras se transmite simultáneamente al servidor de transmisión al punto final1. Al mismo tiempo, también está conectado a rtmp endpoint2 para recibir fotogramas de otra persona y utiliza un reproductor para mostrar los fotogramas. Ahí tienes un chat bidireccional.

Ahora, ¿qué hacer si desea el tipo de chat multiparte (8 personas) de HouseParty? Conéctese a 7 puntos finales diferentes, ¿verdad? Incorrecto por un par de razones

  1. Es posible que su ancho de banda no sea compatible y, si lo hace, sus facturas llegarán al techo. No es una gran experiencia para el usuario de tu aplicación
  2. Lo más importante es que Android no permitirá mostrar más de 2 (en algunos casos, más de 4) videos simultáneamente. Por lo tanto, incluso si se conecta a N puntos finales e intenta reproducirlos, obtendrá errores de codificador de hardware más allá de 2 (en algunos casos, 4). ¿Planea utilizar codificadores de software? Bueno … todo lo mejor

Entonces, ¿qué haces … bueno … puedo decir pero no lo pediste. Todavía..