It's been awhile since we announced video calls support for VoxImplant. There is number of ways how developers can implement video calling with VoxImplant using Web/Mobile SDKs or SIP video phones as endpoints. If a call is made in non-P2P mode then its media stream goes via our media servers, and we can record it if required. It's very easy to do that now - you just need to specify a special parameter in call record function in your VoxEngine scenario:

call.addEventListener(CallEvents.RecordStarted, callevent => {
  Logger.write(`Video file will be located at: ${+callevent.url}`);
call.record({video: true});

The result file format depends on the media stream in the video call. Both VP8 and H.264 are supported, VP8 will be stored in WebM file, while H.264 will be stored in the form of mp4 file. You can pause / unpause the video during the call - the system will handle it automatically, you can also rotate the device and use SIP video phone.

There is a way to have two audio streams of the calls stored in different channels by specifying additional parameter in record settings:

call.record({video: true, stereo: true});

Since each call can be controlled independently in VoxEngine you can record both call parties by calling the record method of each call object in a VoxEngine session. As a result, two video files will appear. Video files will be stored for 3 months by default.

WebRTC bandwidth control

WebRTC starts sending a video stream at around 300kbps and can stop around 512kbps, so if you want to record HD video sent from WebRTC in the best possible quality you need to use setVideoBandwidth method to set the bandwidth amount WebRTC will try to use when sending the stream (before making a call).