Orchid Alto VMS supports Web Real-Time Communication, or WebRTC. WebRTC provides a method for connecting a Recording server with a client, so that the client may view good quality, live and recorded video. Although you may view video in Orchid Alto VMS, all of that video is coming through (and is stored by) the Recording server in the cloud. That’s where WebRTC does its magic.

In WebRTC mode, the web browser decodes and renders video using accelerated Graphics Processing Unit (GPU) technology. This method requires fewer resources than software decoding which allows for good quality video for a greater number of Players.

Using Interactive Connectivity Establishment (ICE) and a Session Traversal Utilities for NAT (STUN) server, the system identifies and tests several connection candidates to find the best way to connect the server and client for direct media transfer. With a successful connection, WebRTC is able to break through the barriers that sometimes make cross-network communication difficult.

The diagram below illustrates a simple example of direct media transport. In this case, the server and the client are both on the same network, so there is no barrier to a direct connection.

The next diagram illustrates a more complicated situation. The server and the client are on different networks, and are each protected by a firewall. In this case, ICE identifies the best path for connecting the server and the client. Then a STUN server identifies the public IP addresses of the server and the client, and works out a way for them to connect. The media can then be transported between the server and client using the STUN-negotiated ports.

In order to use WebRTC with servers behind a firewall, Orchid Alto VMS must have access to a STUN server. By default, Orchid Alto will use stun.ipconfigure.com, which is publicly available on the internet.

WebRTC Statistics

Orchid Alto VMS supplies basic video statistics and WebRTC statistics. These statistics are available as an overlay on any Player and can be used in troubleshooting.

The statistics under the Stream heading may include the following:

  • ICE Connection State: This indicates the state of the ICE connection. When “connected,” ICE has identified the best way to connect the server and client.
  • Connection State: This indicates if there is a working connection between the server and the client.
  • Packets Received: This represents the number of video data packets that are transferred from the server to the client.
  • Packets Lost: This represents the number of video data packets that are dropped during the transfer from the server to the client. (If this number continues to increase, video quality will decrease.)
  • Fraction Packet Loss: This represents the number of packets lost divided by the number of packets expected.
  • Frames Received: This is the number of complete video frames that were transferred from the server to the client.
  • Frames Decoded: This is the number of video frames that the client has decoded.
  • Frames Dropped: This is the number of video frames that the client could not decode and were eliminated.
  • Bytes Received: Total number of bytes transferred from the server to the client.
  • Connection: This statistic provides the addresses of both the local and the remote candidates in use, which communications protocol is in use at each candidate, and the candidate types.
  • DTLS State: This provides the status of the attempts to negotiate a secure connection.

Under the Stream group of statistics, Orchid Alto VMS displays additional WebRTC statistics that provide insight into the connection candidates that ICE has found and which ones are being used to transport video. Individual entries for the local candidate and remote candidate are presented, and provide the same information as the Connection statistic listed above.

The Advanced group of statistics provides very detailed information regarding the selected candidate pair, certificates, and video data transport.

For additional details on these and other WebRTC statistics, please refer to documentation that is readily available online. Here’s a sample: https://testrtc.com/webrtc-internals-documentation/

WebRTC Troubleshooting

If you encounter trouble as you are running Orchid Alto VMS in WebRTC mode, refer to these troubleshooting tips. If you still cannot solve the problem, contact IPConfigure Support .

If you don’t have video:

  1. Activate the Player statistics to see if the ICE Connection State reads connected.
  2. If the Ice Connection State does not read connected, then none of the connection candidates worked.
  3. Make sure that the STUN server is properly setup and configured. (The Orchid Alto VMS properties file uses default settings to configure the STUN server. IPConfigure Support may need to review and revise the settings related to the STUN server.)

If you don’t have video, but the ICE Connection State is connected:

  1. Check the Bytes Received stat.
  2. If the system is receiving bytes, check for packet loss.
  3. If packet loss exists, try lowering the bitrate (by editing the camera stream settings).

If this error appears, the system was not able to establish an ICE connection:

  1. You may need to setup a STUN server. (Contact IPConfigure Support.)
  2. The network may also need to be checked.

If this pop-up error message appears on a Player, the system may have already detected a certain level of packet loss:

  1. Decrease the bitrate (by editing the camera stream settings).
  2. Decrease the resolution (by editing the camera stream settings).
  3. If neither of these solve the problem, contact IPConfigure Support.

If this pop-up error message appears on a Player, the system may not be decoding the video properly:

  1. Decrease the bitrate (by editing the camera stream settings).
  2. Decrease the resolution (by editing the camera stream settings).
  3. If neither of these solve the problem, contact IPConfigure Support.

Video encoder:

WebRTC does not support JPEG or MPEG4, so it is important to make sure that the camera stream is set properly.

  1. Open the Stream Settings screen to check the settings.
  2. Make sure that the Encoder is set to H264.

GPU decoding:

The web browser you are using may be utilizing GPU to decode video. Some cameras are not compatible with GPU.

1. If you have tried other fixes, try disabling GPU decoding in your web browser (on your client device). (Please refer to your web browser documentation for details.)

Feedback

Was this helpful?

Yes No
You indicated this topic was not helpful to you ...
Could you please leave a comment telling us why? Thank you!
Thanks for your feedback.

Post your comment on this topic.

Please do not use this for support questions.
IPConfigure Technical Support

Post Comment