Skip to content

byyam/mediasoup-go-worker

Repository files navigation

mediasoup-go-worker

Pure Go implementation of Mediasoup worker.

Motivation is to provide a mediasoup APIs implementation of Pion WebRTC libraries.

License: MIT Go Report Card

Features

Mediasoup worker Protocol

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

Mediasoup worker API

worker API
method support
worker.close ☑️
worker.dump ☑️
worker.getResourceUsage ☑️
worker.updateSettings WIP
worker.createRouter ☑️
router API
method support
router.close ☑️
router.dump ☑️
router.createWebRtcTransport ☑️
router.createPlainTransport WIP
router.createPipeTransport ☑️
router.createDirectTransport ☑️
router.createActiveSpeakerObserver ☑️
router.createAudioLevelObserver ☑️
transport API
method support
transport.close ☑️
transport.dump ☑️
transport.getStats ☑️
transport.connect ☑️
transport.setMaxIncomingBitrate WIP
transport.setMaxOutgoingBitrate WIP
transport.produce ☑️
transport.consume ☑️
transport.produceData ☑️
transport.consumeData ☑️
producer API
method support
producer.close ☑️
producer.dump ☑️
producer.getStats ☑️
producer.pause WIP
producer.resume WIP
producer.enableTraceEvent WIP
consumer API
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
dataProducer API
method support
dataProducer.close WIP
dataProducer.dump WIP
dataProducer.getStats WIP
dataConsumer API
method support
dataConsumer.close WIP
dataConsumer.dump WIP
dataConsumer.getStats WIP
dataConsumer.getBufferedAmount WIP
dataConsumer.setBufferedAmountLowThreshold WIP
rtpObserver API
method support
rtpObserver.close WIP
rtpObserver.pause WIP
rtpObserver.resume WIP
rtpObserver.addProducer WIP
rtpObserver.removeProducer WIP

Codec

video
codec support
H264 ☑️
audio
codec support
opus ☑️

Usage

mediasoup-worker

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"

References

mediasoup

mediasoup-go

About

implement of mediasoup-worker with golang

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages