From 010ae7899278eef5cdfc65cb15913e9251685508 Mon Sep 17 00:00:00 2001 From: Graham King Date: Wed, 10 Mar 2021 15:52:14 -0800 Subject: [PATCH] Initial FAQ (#461) --- FAQ.md | 31 +++++++++++++++++++++++++++++++ README.md | 7 ++++++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 FAQ.md diff --git a/FAQ.md b/FAQ.md new file mode 100644 index 000000000..5dffe3e4b --- /dev/null +++ b/FAQ.md @@ -0,0 +1,31 @@ +# Frequenty Asked Questions + +### How can I join a session receive-only, without sending any media? + +If you are using [ion-sdk-js](https://github.com/pion/ion-sdk-js) this should work by default. If not, read on. + +If a participant does not have a microphone or camera, or denies access to them from the browser, how can they join? Something needs to be added to the publisher connection to generate valid SDP. + +Add a datachannel to the publisher peer connection. e.g. `this.publisher.createDataChannel("ion-sfu")` + +### Does ion-sfu support audio level indication, telling me who is talking? + +Yes. The subscriber peer connection will contain a data channel. It gets sent an array of stream id that are making noise, ordered loudest first. + +Stream id is the `msid` from the SDP, [defined here](https://tools.ietf.org/html/draft-ietf-mmusic-msid-17). It is up to your application to map that to a meaningful value, such as the user's name. + +Here is an example in Typescript: +``` +subscriber.ondatachannel = (e: RTCDataChannelEvent) => { + e.channel.onmessage = (e: MessageEvent) => { + this.mySpeakingCallback(JSON.parse(e.data)); + } +} +``` + +Audio level indication can be tuned [here in the configuration file](https://github.com/pion/ion-sfu/blob/master/config.toml#L15-L28). + +### Can I record the audio and/or video to disk? + +Recording (and general audio/video processing) is provided by separate project [ion-avp](https://github.com/pion/ion-avp/). + diff --git a/README.md b/README.md index a38b01312..e07f2e2bd 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ A [selective forwarding unit](https://webrtcglossary.com/sfu/) is a video routin * 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 @@ -66,6 +67,10 @@ go build ./cmd/signal/grpc/main.go && ./main -c config.toml docker run -p 50051:50051 -p 5000-5200:5000-5200/udp pionwebrtc/ion-sfu:latest-grpc ``` +## Documentation + +Answers to some [Frequenty Asked Questions](FAQ.md). + ## Examples To see some other ways of interacting with the ion-sfu instance, check out our [examples](examples). @@ -84,7 +89,7 @@ MIT License - see [LICENSE](LICENSE) for full text Generate the protocol buffers and grpc code: 1. Best choice (uses docker): `make protos`. - 2. Manually: + 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`