Recientemente, muchos usuarios están muy interesados en la conexión en cascada de la plataforma de video EasyGBS, y también he recibido muchas consultas de los usuarios. Pero en el área de la voz, parece que todavía hay algunos problemas con los que debemos lidiar. Por ejemplo, el artículo anterior resolvió el problema de la duplicación de voz después de la conexión en cascada de EasyGBS. Después de solucionar el problema, hubo un problema al continuar con el intercomunicador de voz de prueba atascado. Así que este artículo también habla sobre el proceso de resolución de problemas del problema.
Configuramos la plataforma de nivel superior de EasyGBS y seleccionamos el canal de soporte de voz en la información de configuración de la plataforma de nivel superior para registrarnos en el nivel superior.
Luego, la plataforma de nivel superior reproduce el canal en cascada, acceso https para intercomunicador,
Pero la primera vez que habla en este momento, el dispositivo no emitirá ningún sonido y se ha atascado. Analicémoslo de nuevo mediante la captura de paquetes.
Después de capturar el paquete, puede encontrar que el comando de notificación de voz
Broadcast \ ny el comando de registro de inicialización del dispositivo CSeq: 15 INVITE son normales, incluida la voz de nivel superior se ha enviado al nivel inferior, por lo que debería ser el nivel inferior al enviar la voz al dispositivo. problema.
for {
select {
//等待级联的udp链接建立完成
case audioOnOff := <-Server.UacAudioOnOff[key]:
dataConn := Server.UacAudioUdpConn[key]
if dataConn != nil {
Server.UacAudioUdpConn[key] = nil
bufUDP := make([]byte, 102400)
Dado que el valor se toma primero y luego se asigna, el valor no se ha asignado cuando se toma el valor, por lo que aunque este UacAudioOnOff es un canal, porque es nulo cuando se toma el valor, no se tomará incluso después de la asignación.
En respuesta a este problema, hemos mejorado el código de la siguiente manera
audioOnOffChan := Server.UacAudioOnOff[key]
if audioOnOffChan == nil {
audioOnOffChan = make(chan bool)
Server.UacAudioLock.RLock()
Server.UacAudioOnOff[key] = audioOnOffChan
Server.UacAudioLock.RUnlock()
}
Realice un juicio de valor antes de tomar el valor, y luego capture el paquete nuevamente después de la modificación, todo es normal.
Luego vuelva a iniciar el intercomunicador por voz, no hay problema. Si todavía está interesado en nuestra cascada EasyGBS, puede leer este artículo: ¿Cómo se da cuenta EasyGBS de la cascada ascendente de transmisiones de video? Para obtener soluciones relacionadas con el video, puede visitar TSINGSEE Green Rhino Video . Puede contactarnos para un programa de demostración, experiencia intuitiva o descargar y probar gratis. Si tiene alguna pregunta, no dude en consultarnos.
El servidor de medios de transmisión de código abierto EasyDarwin es un marco de plataforma de medios de transmisión de código abierto desarrollado y mantenido por el equipo nacional de medios de transmisión de código abierto TSINGSEE Qingxi Video. Desde su establecimiento y desarrollo en diciembre de 2012, se ha expandido desde la forma original de servidor de medios de transmisión de servicio único al proyecto actual de código abierto de la arquitectura de la plataforma en la nube.