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.
- ¿Cuáles son algunos juegos gratuitos de Android sin conexión?
- Cómo mostrar esta página de texto en mi aplicación de Android
- ¿Es posible convertirse en un desarrollador de Android sin antecedentes de programación y qué debo aprender para convertirme en un desarrollador de Android completo?
- ¿Cuáles son las mejores aplicaciones que debo tener en mi teléfono Android?
- ¿Cuál es la mejor herramienta de desarrollo de aplicaciones para principiantes (Xcode, Visual Basic, Android Studio)?
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
- 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
- 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..