Skip to content

Commit 146e887

Browse files
committed
wip: Send mediajson over a websocket.
1 parent 002a475 commit 146e887

File tree

5 files changed

+26
-192
lines changed

5 files changed

+26
-192
lines changed

jvb/src/main/kotlin/org/jitsi/videobridge/export/Exporter.kt

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,31 @@
11
package org.jitsi.videobridge.export
22

3+
import org.eclipse.jetty.websocket.api.WebSocketAdapter
4+
import org.eclipse.jetty.websocket.client.ClientUpgradeRequest
5+
import org.eclipse.jetty.websocket.client.WebSocketClient
36
import org.jitsi.nlj.PacketInfo
47
import org.jitsi.nlj.rtp.AudioRtpPacket
58
import org.jitsi.utils.logging2.createLogger
69
import org.jitsi.videobridge.PotentialPacketHandler
710
import org.jitsi.videobridge.colibri2.FeatureNotImplementedException
811
import org.jitsi.videobridge.exporter.MediaJsonEncoder
9-
import org.jitsi.videobridge.recorder.MediaJsonRecorder
1012
import org.jitsi.videobridge.util.ByteBufferPool
13+
import org.jitsi.videobridge.websocket.config.WebsocketServiceConfig
1114
import org.jitsi.xmpp.extensions.colibri2.Export
1215

1316
class Exporter : PotentialPacketHandler {
1417
val logger = createLogger()
1518
var started = false
1619

17-
private val encoder = MediaJsonEncoder { recorder.handleEvent(it) }
18-
private val recorder = MediaJsonRecorder()
20+
private val encoder = MediaJsonEncoder {
21+
if (recorderWebSocket.isConnected) {
22+
recorderWebSocket.remote?.sendString(it.toXml()) ?:
23+
logger.info("Websocket is connected, but remote is null?")
24+
} else {
25+
logger.info("Can not send packet, websocket is not connected.")
26+
}
27+
}
28+
private var recorderWebSocket = WebSocketAdapter()
1929

2030
fun setExports(exports: List<Export>) {
2131
when {
@@ -40,10 +50,19 @@ class Exporter : PotentialPacketHandler {
4050
fun stop() {
4151
started = false
4252
logger.info("Stopping.")
53+
recorderWebSocket.session?.close(org.eclipse.jetty.websocket.core.CloseStatus.SHUTDOWN, "closing")
4354
}
4455

4556
fun start(export: Export) {
4657
logger.info("Starting with url=${export.url}")
58+
webSocketClient.connect(recorderWebSocket, export.url, ClientUpgradeRequest())
4759
started = true
4860
}
61+
62+
companion object {
63+
val webSocketClient = WebSocketClient().apply {
64+
idleTimeout = WebsocketServiceConfig.config.idleTimeout
65+
start()
66+
}
67+
}
4968
}

jvb/src/main/kotlin/org/jitsi/videobridge/exporter/MediaJsonEncoder.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.jitsi.videobridge.exporter
22

3-
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
43
import org.jitsi.mediajson.Event
54
import org.jitsi.mediajson.Media
65
import org.jitsi.mediajson.MediaEvent
@@ -30,15 +29,14 @@ class MediaJsonEncoder(
3029

3130
private val ssrcsStarted = mutableSetOf<SsrcState>()
3231
var seq = 0
33-
val om = jacksonObjectMapper()
3432

3533
fun encode(p: AudioRtpPacket, epId: String) = synchronized(ssrcsStarted) {
3634
if (ssrcsStarted.none { it.ssrc == p.ssrc } ) {
3735
val offset: Long = ((Duration.between(ref, Clock.systemUTC().instant())).toNanos() * 48.0e-6).toLong()
3836
val state = SsrcState(p.ssrc, p.timestamp, offset)
3937
ssrcsStarted.add(state)
4038
val e = StartEvent(
41-
(++seq).toString(),
39+
++seq,
4240
Start(
4341
"$epId-${p.ssrc}",
4442
MediaFormat(
@@ -61,11 +59,11 @@ class MediaJsonEncoder(
6159
val elapsedRtpTime = this.timestamp - ssrcState.initialRtpTs
6260
val ts = elapsedRtpTime + ssrcState.offset
6361
val p = MediaEvent(
64-
seq.toString(),
62+
seq,
6563
media = Media(
6664
"$epId-${this.ssrc}",
67-
this.sequenceNumber.toString(),
68-
ts.toString(),
65+
this.sequenceNumber,
66+
ts,
6967
Base64.encode(this.buffer, this.payloadOffset, this.payloadOffset + this.payloadLength)
7068
)
7169
)

jvb/src/main/kotlin/org/jitsi/videobridge/recorder/MediaJsonRecorder.kt

Lines changed: 0 additions & 33 deletions
This file was deleted.

jvb/src/main/kotlin/org/jitsi/videobridge/recorder/MkaRecorder.kt

Lines changed: 0 additions & 112 deletions
This file was deleted.

jvb/src/test/kotlin/org/jitsi/videobridge/recorder/RecorderTest.kt

Lines changed: 0 additions & 38 deletions
This file was deleted.

0 commit comments

Comments
 (0)