Sharing streams
Stream can only be shared within a Room using the share method.
The share
method
The share method can take up to 3 arguments.
The stream type
Can be AUDIO
, VIDEO
, AUDIO_VIDEO
or any of the stream type defined here
The Media constraints
The media constraints can be defined when calling share:
room.share(Reach.types.AUDIO_VIDEO, {audio: true, video: {width: 1080}});
or on init:
const myReach = new Reach('https://io.datasync.orange.com/base/<your_namespace>', {
constraints: {audio: true, video: {width: 1080}}
});
A media constraints helper is exposed as a static member of Reach. It will return a well formatted constraints object:
// Default constraints
console.log(Reach.media.constraints());
// Will output {"video":{"width":{"min":720,"ideal":1280,"max":1920},"height":{"min":576,"ideal":720,"max":1080}},"audio":true}
// SD preset
console.log(Reach.media.constraints('SD'));
// Will output {"video":{"width":{"min":640,"ideal":720,"max":1280},"height":{"min":480,"ideal":576,"max":720}},"audio":true}
The container node
You only need to provide a container node (i.e. a div), Reach will create the appropriate media element (i.e. audio or video) for the given stream.
Switching the camera
Once a stream is shared, you can switch between media devices:
myStream.switchCamera()
.then(stream => {
// stream is myStream
})
The switchCamera method will loop through available video devices found via mediaDevice.enumerateDevice.
You can specify which device you want to switch to by passing the device's id to the switchCamera method.
The same method exists for switching the microphone.
Prefer Codecs
On init, you can specify a preferred codec to use when negotiating the PeerConnection.
const myReach = new Reach('https://io.datasync.orange.com/base/<your_namespace>', {
preferredAudioCodec: Reach.codecs.audio.OPUS,
preferredVideoCodec: Reach.codecs.video.VP9
});
The preferred codec must be specified as a RegExp. You can find predefined ones in Reach.codecs.
On negotiation, Reach will edit the SDP offer before sending it and reorder the available codecs to suit your configuration