Die Lösung der Sprachsprechanlage blieb nach der kaskadierten Netzwerkkamera GB28181 Streaming Media Protocol Videoplattform EasyGBS hängen

In letzter Zeit sind viele Benutzer sehr an der Kaskadierung der EasyGBS-Videoplattform interessiert, und ich habe auch viele Anfragen von Benutzern erhalten. Im Sprachbereich scheint es jedoch noch einige Probleme zu geben, mit denen wir uns befassen müssen. Zum Beispiel hat der vorherige Artikel das Problem der Sprachduplizierung nach der EasyGBS-Kaskadierung gelöst. Nach der Behandlung des Problems gab es ein Problem, als die Test-Sprach-Gegensprechanlage feststeckte. In diesem Artikel wird daher auch auf den Fehlerbehebungsprozess des Problems eingegangen.

EasyGBS-Architektur 2.5D.png

Wir konfigurieren die Plattform der oberen Ebene von EasyGBS und wählen den sprachunterstützenden Kanal in den Konfigurationsinformationen der Plattform der oberen Ebene aus, um sich bei der oberen Ebene zu registrieren.

67.png

Dann spielt die Plattform der oberen Ebene den kaskadierten Kanal https access for intercom ab.

68.png

Wenn Sie zu diesem Zeitpunkt zum ersten Mal sprechen, gibt das Gerät keinen Ton aus und es steckt fest. Lassen Sie es uns noch einmal durch Paketerfassung analysieren.

69.png

Nach dem Erfassen des Pakets können Sie feststellen, dass der Sprachbenachrichtigungsbefehl
Broadcast \ n und der Registrierungsbefehl CSeq: 15 INVITE für die Geräteinitialisierung normal sind, einschließlich der Stimme der oberen Ebene, die an die untere Ebene gesendet wurde. Daher sollte dies die niedrigere Ebene sein, wenn die Stimme an das Gerät gesendet wird. Problem.

for {
			select {
			//等待级联的udp链接建立完成
			case audioOnOff := <-Server.UacAudioOnOff[key]:
				dataConn := Server.UacAudioUdpConn[key]
				if dataConn != nil {
					Server.UacAudioUdpConn[key] = nil
					bufUDP := make([]byte, 102400)

Da der Wert zuerst genommen und dann zugewiesen wird, wurde der Wert nicht zugewiesen, wenn der Wert genommen wird. Obwohl dieses UacAudioOnOff ein Kanal ist, wird es auch nach der Zuweisung nicht genommen, da es Null ist, wenn der Wert genommen wird.

Als Reaktion auf dieses Problem haben wir den Code wie folgt verbessert

audioOnOffChan := Server.UacAudioOnOff[key]
	if audioOnOffChan == nil {
		audioOnOffChan = make(chan bool)
		Server.UacAudioLock.RLock()
		Server.UacAudioOnOff[key] = audioOnOffChan
		Server.UacAudioLock.RUnlock()
	}

Führen Sie eine Wertbeurteilung durch, bevor Sie den Wert übernehmen, und erfassen Sie das Paket nach der Änderung erneut. Alles ist normal.

70.png

Starten Sie dann die Gegensprechanlage erneut, es gibt kein Problem. Wenn Sie immer noch an unserer EasyGBS-Kaskadierung interessiert sind, können Sie diesen Artikel lesen: Wie realisiert EasyGBS die Aufwärtskaskadierung von Videostreams? Alle videobezogenen Lösungen können TSINGSEE Qingxi Video besuchen . Sie können uns kontaktieren, um ein Demonstrationsprogramm und eine intuitive Erfahrung zu erhalten. Sie können es auch nach Belieben herunterladen und testen. Wenn Sie Fragen haben, wenden Sie sich bitte an uns.

Der Open Source Streaming Media Server von EasyDarwin ist ein Open Source Streaming Media Plattform-Framework, das vom inländischen Open Source Streaming Media Team TSINGSEE Qingxi Video entwickelt und verwaltet wird. Seit seiner Erstellung und Entwicklung im Dezember 2012 hat es sich vom ursprünglichen Single-Service-Streaming-Media-Server-Formular zum aktuellen Open-Source-Projekt der Cloud-Plattform-Architektur erweitert.

Ich denke du magst

Origin blog.csdn.net/EasyGBS/article/details/108734124
Empfohlen
Rangfolge