A Go library for mediasoup that enables WebRTC Selective Forwarding Unit (SFU) functionality without Node.js dependencies.
Note: v2.x.x tag only supports mediasoup v3.14.0 and above. For mediasoup v3.13.0 below, please use v1.x.x tag.
- Full mediasoup v3 API support in Go
- Consistent API design with the original Node.js version
- Uses
Cmd.ExtraFiles
for worker communication (not compatible with Windows) - Supports multi-core processing via
PipeTransport
- Download the prebuilt mediasoup worker from mediasoup releases
- Linux or macOS (Windows not supported)
import "github.com/jiyeyuran/mediasoup-go/v2"
See mediasoup-go-demo for a complete example application.
Click to see code example
package main
import (
"github.com/jiyeyuran/mediasoup-go/v2"
// ... other imports
)
func main() {
// Create worker
worker, err := mediasoup.NewWorker("path/to/mediasoup-worker")
if err != nil {
panic(err)
}
// Create router
router, err := worker.CreateRouter(&mediasoup.RouterOptions{
// Configure media codecs
})
// Create WebRTC transport
transport, err := router.CreateWebRtcTransport(&mediasoup.WebRtcTransportOptions{
ListenInfos: []mediasoup.TransportListenInfo{
{Ip: "0.0.0.0", AnnouncedAddress: "your.public.ip"},
},
})
// Use the transport to produce/consume media
// ...
}