Pure Go implementation of Mediasoup worker.
Motivation is to provide a mediasoup APIs implementation of Pion WebRTC libraries.
version | stream protocol type | support |
---|---|---|
< 3.9.0 | netstring | ☑️ |
>= 3.9.0 | native | ☑️ |
>= 3.10.5 | native message wrapper without JSON |
☑️ |
>= 3.13.0 | flatbuffers | ☑️ |
cpu: Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
BenchmarkNetNative_WriteBuffer-12 39985699 29.73 ns/op 4 B/op 1 allocs/op
BenchmarkNetNative_ReadBuffer-12 269317 4487 ns/op 12 B/op 3 allocs/op
BenchmarkNetStrings_WriteBuffer-12 7167288 152.0 ns/op 355 B/op 3 allocs/op
BenchmarkNetStrings_ReadBuffer-12 13219642 88.37 ns/op 4 B/op 1 allocs/op
goos: darwin
goarch: arm64
BenchmarkNetNative_WriteBuffer-10 53218015 22.44 ns/op 4 B/op 1 allocs/op
BenchmarkNetNative_ReadBuffer-10 415128 2861 ns/op 12 B/op 3 allocs/op
BenchmarkNetStrings_WriteBuffer-10 11343592 105.2 ns/op 355 B/op 3 allocs/op
BenchmarkNetStrings_ReadBuffer-10 15113563 77.66 ns/op 4 B/op 1 allocs/op
method | support |
---|---|
worker.close | ☑️ |
worker.dump | ☑️ |
worker.getResourceUsage | ☑️ |
worker.updateSettings | WIP |
worker.createRouter | ☑️ |
method | support |
---|---|
router.close | ☑️ |
router.dump | ☑️ |
router.createWebRtcTransport | ☑️ |
router.createPlainTransport | WIP |
router.createPipeTransport | ☑️ |
router.createDirectTransport | ☑️ |
router.createActiveSpeakerObserver | ☑️ |
router.createAudioLevelObserver | ☑️ |
method | support |
---|---|
transport.close | ☑️ |
transport.dump | ☑️ |
transport.getStats | ☑️ |
transport.connect | ☑️ |
transport.setMaxIncomingBitrate | WIP |
transport.setMaxOutgoingBitrate | WIP |
transport.produce | ☑️ |
transport.consume | ☑️ |
transport.produceData | ☑️ |
transport.consumeData | ☑️ |
method | support |
---|---|
producer.close | ☑️ |
producer.dump | ☑️ |
producer.getStats | ☑️ |
producer.pause | WIP |
producer.resume | WIP |
producer.enableTraceEvent | WIP |
method | support |
---|---|
consumer.close | ☑️ |
consumer.dump | ☑️ |
consumer.getStats | ☑️ |
consumer.pause | WIP |
consumer.resume | WIP |
consumer.setPreferredLayers | WIP |
consumer.setPriority | WIP |
consumer.requestKeyFrame | WIP |
consumer.enableTraceEvent | WIP |
method | support |
---|---|
dataProducer.close | WIP |
dataProducer.dump | WIP |
dataProducer.getStats | WIP |
method | support |
---|---|
dataConsumer.close | WIP |
dataConsumer.dump | WIP |
dataConsumer.getStats | WIP |
dataConsumer.getBufferedAmount | WIP |
dataConsumer.setBufferedAmountLowThreshold | WIP |
method | support |
---|---|
rtpObserver.close | WIP |
rtpObserver.pause | WIP |
rtpObserver.resume | WIP |
rtpObserver.addProducer | WIP |
rtpObserver.removeProducer | WIP |
codec | support |
---|---|
H264 | ☑️ |
codec | support |
---|---|
opus | ☑️ |
build out executable file.
$ make
Replace the worker Binary in mediasoup project.
Logging Level Setting
level | value |
---|---|
Info | i |
Debug | d |
Error | e |
Trace | t |
Warn | w |
Disable | off |
export WORKER_LOG="d"