21 Video Call
21.1 Overview
The Video Call feature provides a live WebRTC peer-to-peer video and audio connection between the AbbyCam desktop and any phone, tablet, or browser on the shop floor. It is designed to let an operator at the machine communicate directly with someone at the workstation — or with a remote supervisor — without leaving the AbbyCam interface.
The connection is fully peer-to-peer once established. Video and audio travel directly between the two devices; only the initial handshake (signaling) passes through the AbbyCam HTTP server.
21.2 Requirements
- AbbyCam running with the API server started (see Settings → Api Server)
- A device with a camera and microphone (phone, tablet, or laptop)
- Both devices on the same network, or HTTPS access via
https://abbycam.com/call - A modern browser on the remote device (Chrome, Brave, Firefox, or Safari)
Browsers require a secure context (HTTPS) to access the camera and microphone. On the shop floor, always use https://abbycam.com/call rather than a direct IP address — direct HTTP access will block the camera on Android and iOS.
21.3 Architecture
The video call system consists of three components:
| Component | Role |
|---|---|
| AbbyCam desktop dock | Hosts the call page in an embedded browser (QWebEngineView) |
| AbbyCam HTTP server | Acts as the signaling server (/call/* endpoints) |
| Remote browser (phone / tablet) | Opens https://abbycam.com/call and joins the call |
The nginx reverse proxy on abbycam.com forwards /call and all /call/* signaling requests securely over HTTPS to the AbbyCam machine on the local network.
21.4 Opening the Video Call Dock
The Video Call dock can be opened from the main window like any other dock. Once open, it loads the call page automatically from the local API server.
The dock toolbar contains one action:
| Button | Description |
|---|---|
| 🔄 Reload | Reloads the call page — use this if the API server was restarted |
21.5 Making a Call
21.5.1 Step 1 — Choose Roles
Every call requires one Caller and one Callee. Either side can take either role.
| Role | When to use |
|---|---|
| 📲 Call | You are initiating the call — click this first |
| 🖥 Answer | You are waiting for an incoming call — click this to start listening |
A typical shop floor scenario:
- Phone (operator) → clicks 📲 Call
- AbbyCam desktop dock → clicks 🖥 Answer
Or reversed — the desktop can initiate and the phone can answer.
21.5.2 Step 2 — Allow Camera and Microphone
The browser will request permission to access the camera and microphone. Allow both. In the AbbyCam desktop dock this happens automatically.
On Android, if you are using the AbbyCam Connect app, camera and microphone permissions are requested automatically when you open the Video Call tab for the first time.
21.5.3 Step 3 — Wait for Connection
The status badge in the header shows the current state:
| Badge | Meaning |
|---|---|
| IDLE | No call in progress |
| CALLING… | Offer sent — waiting for the other side to answer |
| WAITING… | Listening for an incoming call |
| CONNECTED | Video and audio are live |
| LOST | Connection dropped — hang up and try again |
Connection typically takes 2–5 seconds once both sides have chosen their role.
21.6 Controls
Once a call is connected the following controls are available:
| Button | Description |
|---|---|
| 🎤 Mic | Toggle microphone on/off. Turns red when muted. |
| 📷 Camera | Toggle camera on/off. Turns red when off. |
| 🔄 Flip | Switch between front and rear camera (mobile only) |
| 📵 End Call | Hang up and reset the session |
The local camera preview is always visible as a small picture-in-picture in the bottom-right corner of the video area.
21.7 Using the AbbyCam Connect App
The AbbyCam Connect Android app includes a dedicated Video Call tab. It opens the same call page configured in Settings → Video Call URL.
21.7.1 Configuring the URL
Open Settings in the app and scroll to the Video Call section. The default URL is:
https://abbycam.com/call
Change this if your AbbyCam server is hosted at a different address. The URL must be HTTPS for camera access to work on Android.
21.8 Ending a Call
Click End Call on either side. This closes the peer connection and resets the signaling session on the server. Both sides return to the idle state and can start a new call immediately.
If one side closes the browser tab or loses network connectivity without clicking End Call, the other side will show LOST in the status badge. Click End Call to reset and try again.
21.9 Troubleshooting
| Problem | Check |
|---|---|
| Camera permission denied on Android | Open the browser or app settings and grant Camera and Microphone permissions manually |
| Status stays at CALLING… or WAITING… | Make sure both sides have chosen a role. Only one Caller and one Callee per session. |
| Black video, no image | The other side may have toggled their camera off — check the Camera button |
| LOST immediately after connecting | Both devices must be able to reach each other via STUN. On isolated networks without internet, STUN may fail — contact your network administrator. |
| End Call does not reset for the other side | Reload the page on the other side and try again |
| Page loads but shows blank in the dock | Click the 🔄 Reload button in the dock toolbar |
https://abbycam.com/call not reachable |
Check that the AbbyCam machine is running and connected to the network. The nginx proxy on abbycam.com forwards the request to your local machine. |
21.10 Network Notes
For shop floor use on a local network, both devices connect to the same AbbyCam HTTP server for signaling. The video stream is peer-to-peer via WebRTC and does not pass through any server once established.
For remote access (operator calling from outside the building), the signaling passes through https://abbycam.com and the video stream uses STUN to negotiate a direct peer-to-peer path. If the network uses strict NAT or firewall rules that block direct peer connections, the video may fail to connect even if signaling succeeds — in this case a TURN relay server would be required (not currently configured).