MP3 Trigger icon MP3 Trigger — Serial MP3 Trigger for EZ-B: plays MP3s from mini‑SD; configurable port/baud. Deprecated-replaced by EZB v4 streaming audio. 3rd‑party. Try it →
Asked
1 Participant
Android stream to Live Stream Receiver

Android Stream To Live Stream Receiver

Running ARC on a Windows laptop with a Roli Rover (EZ-B v4 over WiFi). I’ve got two Continuous servo skills mapped to D0 (left track) and D1 (right track) for teleop, which works great when I use the buttons. I’m trying to add a remote camera by using the Live Stream Receiver so I can drive Roli from another room. On the Live Stream Receiver I start the server, then open the provided URL in a browser. From a second Windows laptop (Chrome) it connects and I see the video inside the camera panel with maybe ~300-500 ms latency. However, from my Android phone (Chrome on a Pixel 6) and an iPhone (Safari), I either get a single frozen frame or no video at all. Remote logs on the phone show errors like "getUserMedia must be used in a secure context," and ARC shows the client connected but no frames arriving. I’ve tried 2.4/5 GHz WiFi, disabling battery optimizations, Firefox mobile, and adding firewall rules. Also, when it does work from desktop, the stream seems to default to a high resolution which adds lag; I can’t find a way to request 640x480@15 for lower latency. Is there a supported way to use a phone camera with the Live Stream Receiver (e.g., via HTTPS or parameters to force lower resolution/fps) so I can reliably use that feed to steer my Roli with the Continuous servo skills?



Related Hardware (view all EZB hardware)
Roli Rover by EZ-Robot
Roli Rover with Synthiam ARCx: drive with live video, control arms, follow faces, patrol, and program with Blockly or Python
Wi-Fi / USB
Servos 24
Camera
Audio
UART 3
I2C
ADC 8
Digital 24

Related Robot Skills (view all robot skills)
Control two continuous servos for bidirectional robot movement with speed sliders, configurable ports/stop values, testing and brake/coast options.
Play live web video and audio streams inside ARC from Chrome/Firefox, streaming directly to ARC camera control; network configuration may be needed.

ARC Pro

Upgrade to ARC Pro

Stay at the forefront of robot programming innovation with ARC Pro, ensuring your robot is always equipped with the latest advancements.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

Yes - but there are two separate issues here:

  1. Mobile browser camera permissions / secure context
  2. Stream quality settings for lower latency

1) Android/iPhone camera access in a browser

The error:

getUserMedia must be used in a secure context

means the phone browser is refusing camera access because the page is not being served over HTTPS or localhost. Mobile browsers are much stricter about this than desktop Chrome.

What that means in practice

  • Desktop Chrome may allow the stream page to work over plain HTTP on your LAN.
  • Android Chrome and especially iPhone Safari often require:
    • https://... with a valid certificate, or
    • localhost only

So if the Live Stream Receiver is being opened from a normal local IP like:

http://192.168.x.x:port

the phone may connect to the page but still block the camera, which matches what you’re seeing: connected client, frozen frame, or no frames.

Use a secure tunnel or reverse proxy that provides HTTPS to the phone, or access ARC through a secure remote method.

A supported option to consider is ARC Remote Access Service if your goal is to operate ARC remotely:

That will give you a much more reliable remote-control path than trying to force mobile browsers into an insecure camera flow.


2) Can you force 640x480 @ 15 fps?

With Live Stream Receiver, there is not typically a user-exposed parameter in ARC to request a specific resolution/FPS from the mobile browser camera like 640x480@15. The browser decides what it can provide, and the control/stream pipeline decides what it can accept.

So if you want lower latency, the proven approach is:

  • use a device/browser combo that supports the camera pipeline cleanly
  • reduce the camera source load if the skill exposes settings
  • keep the stream local and secure
  • or avoid browser-based phone camera capture altogether

If your real goal is "drive Roli from another room using a phone as the camera and controller", the better ARC-native path is usually:

  • Live Stream Receiver for camera only
  • Custom UI or movement skill buttons/joystick for driving
  • access it through a secure remote method

Important ARC best practice

For Roli Rover, the track drive should stay on the Continuous servo Movement Panel only if your tracks are actually continuous servos.
If they’re the standard Roli H-bridge tread motors, the better/standard skill is the Hbridge Movement Panel using:

  • D0 = left PWM
  • D1/D2 = left direction
  • D4/D5 = right direction/PWM depending on your wiring layout

Since you said your two Continuous servo skills are working, I assume your robot is configured that way, but I want to make sure you’re using the correct drive skill for the actual hardware.


What I’d try next

  1. Confirm the phone is opening the stream over HTTPS
  2. Test with Chrome on Android first; Safari is often more restrictive
  3. In ARC, inspect the Live Stream Receiver kebab menu / settings to see whether there are any camera constraints available
  4. If you need true remote operation, use Remote Access Service instead of relying on the phone browser as the camera transport
  5. If your end goal is low-latency teleop, consider a Custom UI with a camera panel and joystick rather than browser camera streaming directly

Question for you

What is the bigger goal here - are you trying to:

  • use the phone itself as the camera on the robot, or
  • view ARC remotely from the phone while the robot camera stays on the EZ-B v4?

Those are very different setups, and I can point you to the best ARC skill combination once I know which one you want.

I am a customer support AI and still learning. Please verify important answers in our support documentation. For advanced AI features, use the AI Script Agent built into ARC.