SightCall makes it easy to include realtime video communications in your website or mobile app. But in some applications, it's important to be able to record a conversation or meeting for future reference. We often get this request from companies implementing Tele-Consultation types of applications. Whether it is for a HIPAA-compliant online medical consultation or online customer-service event, companies need to retain a record of the encounter for later referral.
SightCall's recording architecture is designed to be implemented entirely in the cloud. While there are interesting uses for recording a WebRTC session from the browser of a user (see for instance
https://www.webrtc-experiment.com/RecordRTC/), there are some negatives to this approach.
- there may be compliance issues. Leaving the control of recording in the hands of one user may represent a security issue.
- there may be bandwidth issues. If one computer is merging all of the streams of a multi-user conference, it may become a bottleneck.
- there may be performance issues. The computer doing the recording and transcoding may become overloaded.
- compositing choice. Recording the viewpoint of one of the participants of a call may or may not be what you want.
Our recording architecture leverages our cloud-based Conference Bridge, or MCU (
Multipoint Control Unit). When your application needs recording, it can schedule a video call using one of our virtual MCUs. As an option, our MCU can produce an output recording stream. The stream can be sent to one of your servers, or can be directed to our Cloud Recorder.
[caption id="attachment_11403" align="aligncenter" width="720"]
The Cloud Recorder receives a Stream and stores a Movie in a Bucket[/caption]
How It Works
In the SightCall system, to schedule a conference call using an MCU, you first call
createMeetingPoint. A meeting point is an object that represents a place where users congregate. A meeting point has a Host, who has elevated privileges. The host can invite Users on the fly, or Users can send the Host messages asking to join a Meeting Point. As Users gather around a Meeting Point they are placed in the list of those waiting to talk. This type of "invitation" messaging can begin even before the video of the session starts.
When the Host is ready, he starts a video session by calling the
host method to begin the call. This is the method that causes a virtual MCU to be allocated for the meeting. See below for a sketch of the Javascript.
meetingPoint = rtcc.CreateMeetingPoint();
meetingPoint.invite('john');
meetingPoint.invite('betty');
meetingPoint.host();
At any point before or during the conference call, the Host can start recording by calling a method on the
RtccCall object created by the
host operation.
rtccCall.recordStart(destination)
The destination is an HTTP endpoint that is configured to receive a SightCall recording stream. The stream contains information that the MCU has about the conference. It contains the audio mix-down of all participants, and the video stream from the Active Speaker. It may also include screen-share streams as well as video streams from the "non-Active" participants.
The Cloud Recorder
The job of the Cloud Recorder is to capture a raw stream and to create a movie. SightCall provides a basic Cloud Recording function for a fee, or you can use our source code to build your own and run it where you would like. The Cloud Recorder runs a background job to process the raw stream and perform the compositing. Compositing is the video process that arranges the video feeds on screen in a way that you like. You might prefer a
'Brady-Bunch' effect, where the heads of all participants are shown at all times, or your application may be better handled by a movie that composites Data and Screen-Share with the people off to the side. SightCall can get you started with a simple compositor from which you can build upon.
Lastly, the Cloud Recorder moves the composited movie into an Amazon S3 bucket. The default policy with our CloudRecorder is to retain a movie for a few days in the SightCall Bucket. Alternatively, your account can be configured to store movies in your own
S3 Bucket or
Azure Container.
[caption id="attachment_11404" align="alignnone" width="719"]
Conference Recordings benefit from Application-Specific Compositing[/caption]
See it in Action
Visit our demonstration "Video Help Desk" application using two people: one to be an Help Desk Agent, and one to be a website Visitor. Send the Agent to
http://sightcall-helper.herokuapp.com and log in as "agent1" or "agent2". (See the
Github Readme to get the passwords.) Send the Visitor to
http://sightcall-helper.herokuapp.com/demo/plain and ask them to click on the "Video Assistance" link. From there, the an Agent can ask to Visitor to video chat and can record the encounter too.
Conclusion
SightCall's recording solution is simple enough that you can get started quickly, but open enough to allow you to create an archive movie appropriate for your application. We provide you all of the source code building blocks to get going quickly. Check out our demo apps running on Heroku and see how recordings works.
See Also:
Javascript MediaStream Recording API:
http://www.w3.org/TR/mediastream-recording/
BlogGeek.me - Requested Features: Recording:
https://bloggeek.me/webrtc-business-online/ch07/#_2