All Projects → pion → Ion Sfu

pion / Ion Sfu

Licence: mit
Pure Go WebRTC SFU

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Ion Sfu

Gb28181.solution
Linux/Win/Docker/kubernetes/Chart/Kustomize/GB28181/SIP/RTP/SDP/WebRTC/作为上下级域/平台级联互联
Stars: ✭ 323 (+25.19%)
Mutual labels:  grpc, webrtc
Vosk Server
WebSocket, gRPC and WebRTC speech recognition server based on Vosk and Kaldi libraries
Stars: ✭ 277 (+7.36%)
Mutual labels:  grpc, webrtc
Hyperf
🚀 A coroutine framework that focuses on hyperspeed and flexibility. Building microservice or middleware with ease.
Stars: ✭ 4,206 (+1530.23%)
Mutual labels:  grpc, json-rpc
Joyrpc
high-performance, high-extensibility Java rpc framework.
Stars: ✭ 290 (+12.4%)
Mutual labels:  grpc, json-rpc
Grpc Over Webrtc
gRPC over WebRTC
Stars: ✭ 220 (-14.73%)
Mutual labels:  grpc, webrtc
suc-love-chat
视频会议系统前端源码
Stars: ✭ 35 (-86.43%)
Mutual labels:  webrtc
zpd
A simple SQL-like database built on top of Key-Value storages
Stars: ✭ 16 (-93.8%)
Mutual labels:  grpc
url-frontier
API definition, resources and reference implementation of URL Frontiers
Stars: ✭ 16 (-93.8%)
Mutual labels:  grpc
snowem
Snowem is a lightweight live streaming server, based on webrtc technology. Its design mainly focuses on simplicity, scalability and high performance.
Stars: ✭ 73 (-71.71%)
Mutual labels:  webrtc
Starrtc Android Demo
🚀starRTC,即时通讯(IM)系统,免费IM系统(含单聊,群聊,聊天室,文件传输),免费一对一视频聊天,VOIP,语音对讲(回音消除),直播连麦,视频直播,RTSP拉流,RTMP推流,webRTC服务端,在线教育,白板,小班课,在线会议,视频会议,视频监控,局域网直连(无需服务器),兼容webRTC, 支持webRTC加速,P2P高清传输,安卓、iOS、web互通,支持门禁对讲,可视对讲,电视盒子,树莓派,海思,全志,任天堂switch,云游戏,OTT设备,物联网平台,C语言自研方案,支持二次开发成类微信,类映客等APP,✨万水千山总是情,来个star行不行✨,更多示例请访问:
Stars: ✭ 3,038 (+1077.52%)
Mutual labels:  webrtc
xeHentai-webui
The web interface for xeHentai https://github.com/fffonion/xeHentai
Stars: ✭ 25 (-90.31%)
Mutual labels:  json-rpc
rpcsrv
JSON-RPC server based on C++11 and libevent
Stars: ✭ 28 (-89.15%)
Mutual labels:  json-rpc
poc-micronaut-kotlin-grpc
Prova de conceito - Micronaut, Kotlin e GRPC
Stars: ✭ 14 (-94.57%)
Mutual labels:  grpc
webrtc-hotwire-rails
A video chat app demonstration using Hotwire and Ruby on Rails
Stars: ✭ 38 (-85.27%)
Mutual labels:  webrtc
caddy-esi
Middleware for Caddy Server integrating ESI (edge side includes) tags with parallel loading. Able to connect to HTTP/S/2, Memcache, Redis, shell scripts, gRPC and SQL backends 🐜🐜🐜
Stars: ✭ 28 (-89.15%)
Mutual labels:  grpc
sora-unity-sdk-samples
WebRTC SFU Sora Unity SDK サンプル集
Stars: ✭ 12 (-95.35%)
Mutual labels:  webrtc
minnie-janus
Small, ES8, isomorphic library for interfacing with the Janus WebRTC gateway.
Stars: ✭ 28 (-89.15%)
Mutual labels:  webrtc
grpc bench
Various gRPC benchmarks
Stars: ✭ 480 (+86.05%)
Mutual labels:  grpc
multiplay-grpc-client
gRPC server for Multiplaying in Unity
Stars: ✭ 21 (-91.86%)
Mutual labels:  grpc
peermesh
💫 Exchange files p2p and e2e encrypted over a fully meshed network in your browser using WebRTC.
Stars: ✭ 107 (-58.53%)
Mutual labels:  webrtc


Ion SFU

Go implementation of a WebRTC Selective Forwarding Unit

Slack Widget GoDoc Coverage Status Go Report Card License: MIT


A selective forwarding unit is a video routing service which allows webrtc sessions to scale more efficiently. This package provides a simple, flexible, high performance Go implementation of a WebRTC SFU. It can be called directly or through a gRPC or json-rpc interface.

Features

  • Audio/Video/Datachannel forwarding
  • Congestion Control (TWCC, REMB, RR/SR)
  • Unified plan semantics
  • Pub/Sub Peer Connection (O(n) port usage)
  • Audio level indication (RFC6464). "X is speaking"

Quickstart

Run the Echo Test example

docker-compose -f examples/echotest/docker-compose.yaml up

Open the client

http://localhost:8000/

SFU with json-rpc signaling

The json-rpc signaling service can be used to easily get up and running with the sfu. It can be used with the corresponding javascript signaling module.

Using golang environment
go build ./cmd/signal/json-rpc/main.go && ./main -c config.toml
Using docker
docker run -p 7000:7000 -p 5000-5200:5000-5200/udp pionwebrtc/ion-sfu:latest-jsonrpc

SFU with gRPC signaling

For service-to-service communication, you can use the grpc interface. A common pattern is to call the grpc endpoints from a custom signaling service.

Using golang environment
go build ./cmd/signal/grpc/main.go && ./main -c config.toml
Using docker
docker run -p 50051:50051 -p 5000-5200:5000-5200/udp pionwebrtc/ion-sfu:latest-grpc

Documentation

Answers to some Frequenty Asked Questions.

Examples

To see some other ways of interacting with the ion-sfu instance, check out our examples.

Media Processing

ion-sfu supports real-time processing on media streamed through the sfu using ion-avp.

For an example of recording a MediaStream to webm, checkout the save-to-webm example.

License

MIT License - see LICENSE for full text

Development

Generate the protocol buffers and grpc code:

  1. Best choice (uses docker): make protos.
  2. Manually:
    • Install protocol buffers and the protcol buffers compiler. On Fedora dnf install protobuf protobuf-compiler.
    • go get google.golang.org/grpc/cmd/protoc-gen-go-grpc
    • go get google.golang.org/protobuf/cmd/protoc-gen-go
    • protoc --go_out=. --go-grpc_out=. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative cmd/signal/grpc/proto/sfu.proto
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].