Recentemente, muitos usuários estão muito interessados na disseminação da plataforma de vídeo EasyGBS e também tenho recebido muitas perguntas de usuários. Mas na área de voz, parece que ainda há alguns problemas com os quais precisamos lidar. Por exemplo, o artigo anterior resolveu o problema de duplicação de voz após o EasyGBS em cascata. Depois de resolver o problema, houve um problema ao continuar o intercomunicador de voz de teste travou . , Portanto, este artigo também fala sobre o processo de solução do problema.
Configuramos a plataforma de nível superior do EasyGBS e selecionamos o canal de suporte de voz nas informações de configuração da plataforma de nível superior para registrar no nível superior.
Em seguida, a plataforma de nível superior reproduz o canal em cascata, acesso https para intercom,
Mas na primeira vez que você falar neste momento, o dispositivo não emitirá nenhum som e travou. Vamos analisar novamente por meio da captura de pacotes.
Depois de capturar o pacote, você pode descobrir que o comando de notificação de voz
Broadcast \ n e o comando de registro de inicialização do dispositivo CSeq: 15 INVITE estão normais, incluindo a voz de nível superior foi enviada para o nível inferior, portanto, deve ser o nível inferior ao enviar a voz para o 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)
Uma vez que o valor é primeiro obtido e depois atribuído, o valor não foi atribuído quando o valor é obtido, portanto, embora este UacAudioOnOff seja um canal, porque é nulo quando o valor é obtido, ele não será obtido mesmo após a atribuição.
Em resposta a este problema, melhoramos o código da seguinte maneira
audioOnOffChan := Server.UacAudioOnOff[key]
if audioOnOffChan == nil {
audioOnOffChan = make(chan bool)
Server.UacAudioLock.RLock()
Server.UacAudioOnOff[key] = audioOnOffChan
Server.UacAudioLock.RUnlock()
}
Execute um julgamento de valor antes de obter o valor e, em seguida, capture o pacote novamente após a modificação, tudo está normal.
Em seguida, inicie o interfone de voz novamente, não há problema. Se ainda estiver interessado em nosso EasyGBS em cascata, você pode ler este artigo: Como o EasyGBS realiza a cascata ascendente de fluxos de vídeo? Para soluções relacionadas a vídeo, você pode visitar o TSINGSEE Green Rhino Video . Você pode nos contatar para um programa de demonstração, experiência intuitiva ou download gratuito e teste. Se você tiver alguma dúvida, não hesite em nos consultar.
O servidor de streaming de mídia de código aberto EasyDarwin é uma estrutura de plataforma de streaming de mídia de código aberto desenvolvida e mantida pela equipe nacional de streaming de mídia de código aberto TSINGSEE Qingxi Video. Desde seu estabelecimento e desenvolvimento em dezembro de 2012, ele se expandiu da forma original de servidor de streaming de mídia de serviço único para o projeto de código aberto atual da arquitetura de plataforma em nuvem.