Asked

RTSP Stream Compatibility Issues

,

I am attempting to use a Reolink E1 Pro camera with ARC's Camera Device robot skill using its RTSP stream. I'm connecting it through an IoTiny controller.

  • Camera IP (local): 192.168.178.10
  • RTSP links (without password):
    • Main stream: rtsp://192.168.178.10:554/h264Preview_01_main
    • Sub stream: rtsp://192.168.178.10:554/h264Preview_01_sub

Both streams work fine when tested with VLC, but when I input the RTSP URL into the Camera Device, I encounter the following errors: System.ApplicationException: Failed creating device object for moniker System.Collections.Generic.KeyNotFoundException

It appears the Camera Device does not recognize the RTSP stream directly. Could you please assist with the following:

  1. Is there a supported workaround for using RTSP cameras with ARC?
  2. Is there a recommended method to make the Reolink RTSP feed compatible with the Camera Device in ARC?

Thank you for your guidance.



Related Hardware (view all EZB hardware)
EZ-B Iotiny by EZ-Robot
Control IoTiny with Synthiam ARC: 100MHz Cortex‑M4 Wi‑Fi IoT/robot controller-camera, servos, ADC, I2C and digital I/O for easy internet automation
Wi-Fi / USB
Servos 8
Camera
Audio
UART
I2C
ADC
Digital

Related Robot Skills (view all robot skills)
Camera Device by Synthiam
Use PC or robot cameras for vision tracking: color, QR, glyph, face, object, motion; record video/data, control servos and movement, run scripts
Stream video from any URI/protocol (RTMP, RTSP, HTTP, UDP, etc.) to a selected ARC camera device for real-time network feed playback.

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
Germany
#1  

sorry i just have seen a skill "stream all the video sources" and it works with his skill. Nervertherless , can you tell me if we can get the video stream without the skill "stream all ...." from my first question ?

Author Avatar
PRO
Canada
#2  

Great - glad Stream All The Video Sources solved it. To answer your follow-up: yes, you can get the RTSP stream into ARC without that skill, but it depends on how ARC/Camera Device can access RTSP on your Windows PC. Below are the practical options, ordered from easiest to most reliable.

Short answer

  • Easiest: keep using Stream All The Video Sources (recommended).
  • If you want to avoid that skill: try starting the RTSP URL directly from the Camera Device (ControlCommand), but if you hit the KeyNotFound/moniker error (DirectShow codec error), use one of these workarounds: install a DirectShow codec (LAV Filters) or restream RTSP to an HTTP MJPEG feed (via ffmpeg or VLC) and point Camera Device to the HTTP URL.

Details + stepbystep

  1. Try Camera Device directly (fast test)
  • From a script or the ARC scripting console you can try:
// start camera using the RTSP URL
ControlCommand("Camera", "CameraStart", "rtsp://192.168.178.10:554/h264Preview_01_sub");

// check whether the camera is active (returns true/false)
var active = ControlCommandWait("Camera", "IsCameraActive");
print("Camera active: " + active);
  • If this works, you’re done. If you get the same error (Failed creating device object / KeyNotFoundException) it usually means Windows/ARC cannot open that RTSP source via DirectShow because the system lacks the needed codec/filter.
  1. Make Windows able to open RTSP (DirectShow filter approach)
  • Install LAV Filters (Open-source DirectShow filters that add RTSP/h264 support) or a trusted codec pack that includes an RTSP-capable DirectShow source.
  • After installing, restart your PC and try ControlCommand CameraStart with the RTSP URL again.
  • This will let the Camera Device use RTSP directly (no extra skill) if the system DirectShow filter can handle the stream.
  1. Restream RTSP to an HTTP MJPEG (most reliable & avoids installing codecs)
  • Use ffmpeg or VLC to convert the RTSP feed into an HTTP MJPEG stream that Camera Device accepts as a "JPEG Snapshot HTTP Video Device".
  • Example ffmpeg command (listen mode - creates an MJPEG HTTP stream on port 8090):
ffmpeg -rtsp_transport tcp -i "rtsp://192.168.178.10:554/h264Preview_01_sub" \
  -f mjpeg -q:v 5 -r 15 -s 640x480 -listen 1 "http://0.0.0.0:8090/";
"C:\Program Files\VideoLAN\VLC\vlc.exe" "rtsp://192.168.178.10:554/h264Preview_01_sub" \
  --sout "#standard{access=http,mux=ts,dst=:8080}" --no-sout-all --sout-keep

Why restreaming is useful

  • It sidesteps DirectShow codec issues and is very stable.
  • Stream All The Video Sources essentially does this internally (it supports many protocols) - that's why it worked for you.
  1. Other options (virtual camera)
  • Use OBS + Virtual Camera or other "virtual webcam" drivers to make the RTSP feed appear as a local webcam device. Camera Device can then use that webcam device index. More setup and CPU usage, but possible if you prefer a virtual webcam.

Notes about IoTiny and network

  • IoTiny is the EZ-B controller for servos/I/O. The RTSP camera is a separate IP device on your LAN, and ARC (running on your PC) must be able to reach that IP. The IoTiny does not need to be involved in the camera network path.
  • Make sure firewall rules on the PC allow ffmpeg/VLC/ARC to bind/listen or connect.

Recommendation

  • If you want the simplest supported path and you already have Stream All The Video Sources working - keep using it.
  • If you need to avoid that skill, try ControlCommand CameraStart first. If it fails, use the ffmpeg restream to HTTP MJPEG - it’s robust and quick to set up.

Want me to walk you through one of these?

  • Do you run ARC on Windows? Which option do you want to try next (direct CameraStart, install LAV filters, ffmpeg restream)? I can give exact, stepbystep instructions for your chosen path.

I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.