La solución del intercomunicador de voz se atascó después de la cámara de red en cascada GB28181 plataforma de video del protocolo de transmisión de medios EasyGBS

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.

Arquitectura EasyGBS 2.5D.png

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.

67.png

Luego, la plataforma de nivel superior reproduce el canal en cascada, acceso https para intercomunicador,

68.png

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.

69.png

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.

70.png

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.

Supongo que te gusta

Origin blog.csdn.net/EasyGBS/article/details/108734124
Recomendado
Clasificación