Source Types are configured when editing cameras on the General tab. This is where you configure the connection to your camera.


Clone

Clone is a simple source type that lets you copy the camera complete with video and audio streams into a new device. You can then run different motion processing or recording rules and alerts on the new device without affecting the original. If the original is disabled the clone will lose it's video connection.

  • Camera: Choose the device to clone.

Desktop

Desktop video sources are available on all platforms apart from when running as a Windows Service. If you need desktop capture on Windows you will need to run Agent as a local console application instead of as a service. To do this see Troubleshooting.

  • Screen: Select the screen to record from
  • Capture Mouse: Check to capture the mouse pointer as part of the video
  • Area: Click and drag out an area of the screen to capture (only available on Windows).

Dummy

Dummy devices let you use either a solid color or image as a background. You can use this for testing or you can use Picture in Picture to add video from other devices to it. This is also useful for RTMP streaming multiple cameras.

  • Width: The pixel width of the dummy camera, eg 640
  • Height: The pixel height of the dummy camera, eg 480
  • Frame Rate: The framerate of the camera, eg 10
  • Back Color: The color of the video background
  • Image: A path to an image on your local drive. This overrides the back color.

DVR

The DVR option provides access to commonly used DVR devices that don't have regular rtsp or http video endpoints.

  • Model: Choose from supported models.
  • Host: Enter the IP address of your DVR on your network and the Port it's running on, or omit the port and we'll use the model default.
  • Username: The username you use to login to your DVR
  • Password: The password you use to login to your DVR
  • Channel: The channel of the camera on your DVR (if a DVR has 4 cameras you would add 4 cameras using channels 1-4, or possibly 0-3)

File

File lets you load in a previously recorded video clip and play it back as a camera in Agent.

  • File Path: Enter the local path to the video file
  • Loop: Check this to replay the file when it ends

IP Camera / Network Camera

This is used to connect to network (IP) cameras. This uses FFMPEG to connect to your camera. If FFMPEG is unable to connect you can use VLC instead by installing VLC and selecting VLC as the decoder

  • Username: The username to login to your camera (not iSpyConnect)
  • Password: The password to login to your camera (not iSpyConnect)
  • Live URL: The connection to the live video stream from your camera - If your camera has a low resolution stream use that here. Click the "..." button to start the wizard to discover available connections.
  • Record URL: The connection to the record (main) video stream from your camera - If your camera has a high resolution stream use that here. Click the "..." button to start the wizard to discover available connections.
For help with playback issues see Corrupted / Stuttering Video

JPEG/ Image

Connect to JPEG or Image sources.

  • Username: The username to login to your camera (not iSpyConnect)
  • Password: The password to login to your camera (not iSpyConnect)
  • URL/ Path: The connection to the live video stream from your camera. Click the "..." button to start the wizard to discover available connections.
  • Reload Interval: For static images (images that only change occasionaly like weather gifs you can set a reload interval to check for new images. For JPEG/ video feeds this should be 0.

Local Device

Connect to USB cameras or other locally attached hardware video sources.

  • Device: Choose a local video device from the detected devices.
  • Video Resolution: Select a video resolution to use.
  • Audio: Optionally choose an audio device to use with the video device.

On linux the device options may be empty. This is usually because of a permissions issue. You will need to add your user to video permissions:
sudo adduser YOUR_USERNAME video
sudo usermod -a -G video YOUR_USERNAME
.. and restart your computer

If you see your device but no video resolution options you can add the resolution setting in manually in ffmpeg settings under Options like:

video_size=720x576


MJPEG

Connect to MJPEG sources. Usually you would use the IP Camera option for this but it's here as a backup as some cameras are incompatible with the IP Camera option.

  • Username: The username to login to your camera (not iSpyConnect)
  • Password: The password to login to your camera (not iSpyConnect)
  • Live URL: The connection to the live video stream from your camera. Click the "..." button to start the wizard to discover available connections.
  • Record URL: The connection to the record stream from your camera. Click the "..." button to start the wizard to discover available connections.
  • Use Internal Decoder: The FFMPEG decoder Agent uses has trouble decoding some streams with non standard boundary markers. Check this to use our internal decoder instead. Note that this will mean the Record URL won't be used.

NDI (v4.4.6.0+)

Access NDI sources (more info)

  • Source: Choose a source from the detected list. Note that the source should typically be detected and selected instead of typed in. See the NDI settings to add endpoints to detect remote sources.
  • Audio Level: Adjust the audio level from the source.

Nest

This provides support for Nest or DropCam cameras. You'll need to make your cameras publicly available for Agent to be able to access them.

  • Public URL: Enter the public URL where your camera is available
  • Get Video URLs: Click the button and Agent will discover the direct link to your video stream
  • Video URL: This will be populated by clicking the Get Video URLs button

Web Browser

This renders a web browser as a video source. It will download and install a headless version of Chromium if not already available.

  • Username: The username to login to the page (if required)
  • Password: The password to login to th page
  • Width: Width of the browser
  • Height: Height of the browser
  • URL: URL to load (eg https://www.google.com)
  • Reload Interval: How often to reload the page.

To force a reload of the page you can check the option Prevent JPEG cache under the Advanced options.


ONVIF

Agent provides built in support for almost all ONVIF compatible cameras. Check the logs at /logs.html for errors if you can't connect to your ONVIF devices.

  • Username: The username to login to your camera (not iSpyConnect)
  • Password: The password to login to your camera (not iSpyConnect)
  • Service URL: The URL to the service definition for your camera. Agent can usually find these automatically. Below v4, to show discovered addresses start typing "http" into the box. Above v4 you can click on detected devices to populate the Service URL. If it hasn't found your device you can add this manually. It should look like http://IPADDRESS:PORT/onvif/device_service
  • RTSP Port Override: Override the RTSP port of your camera - this is useful if you have port forwarded the camera on another network using a different RTSP port but usually just leave this as 0. This is the port the system will use for getting live video and audio from your camera.
  • HTTP Port Override: Override the HTTP port of your camera - this is useful if you have port forwarded the camera on another network using a different HTTP port but usually just leave this as 0. This is the port the system will use for getting JPEG images from your camera.
  • Timeout: How long Agent should spend trying to connect to your camera before giving up.
  • Discover: Click this button and Agent will connect to your camera with the provided username and password and retrieve the video connection options and populate the URLs below.
  • Live URL: When discovery has completed, choose a low resolution video stream here for live viewing and motion detection.
  • Override URL: Optionally add an override URL for the Live URL if you would rather use that than one of the discovered options.
  • Record URL: When discovery has completed, choose a high resolution video stream here for raw recording.
  • Override URL: Optionally add an override URL for the Record URL if you would rather use that than one of the discovered options.
  • Use Snapshot URI for Photos: Check this option to download photos directly from the camera rather than generating images from the live video stream.
  • Force Reload: Some cameras append a unique token to the end of their video stream URLs which is only valid for one session. If your camera fails to reconnect properly try setting this option which will make Agent get a new video URL for each connection attempt.
For help with playback issues see Corrupted / Stuttering Video

Advanced

Advanced options provide additional tools to help you connect to your devices. Access this via Edit Camera, General tab, click to configure the video source and select Advanced in the drop-down menu.

  • Decode GPU: Specify the GPU index to use to decode the video stream if you have multiple GPU devices available.
  • Decoder: Choose from CPU, GPU, VLC (if available) or NONE (v3.9.8.0+). VLC can sometimes decode streams that FFMPEG (which Agent uses) can't. You'll need to disable/ enable the camera to apply changes. See Advanced video source settings for GPU decoder options. None is only available on IP Camera source types and skips video decoding so will force the recording mode to raw. If NONE is selected then motion detection and AI alert filtering won't work.
    FFmpeg sometimes fails to decode to some RTSP streams from a few models of camera. If the stream fails to connect with an error message like "Invalid data found when processing input" then try switching the decoder to VLC (Install VLC and restart Agent to detect it)
  • GPU Decoder: Select the hardware GPU decoder to use. Use default to use the default setting.
  • Cookies: Add any cookies your camera needs to access the video stream
  • Basic Authentication: Agent will try to login to your camera with Basic Authentication - you can turn that on or off here
  • Use HTTP 1.0: Force use of HTTP 1.0 - some old cameras don't support newer versions of the HTTP protocol
  • Headers: Add any additional headers your camera needs to access the video stream
  • User Agent: Set the user agent of the connection if your camera requires it
  • Connection Timeout: How long to wait for the camera to respond before giving up.
  • Reconnect Interval: Set this to periodically close and reconnect the connection to the camera.
  • Reconnect Strategy: If your camera connection is lost Agent will attempt to reconnect to it on an elastic schedule - which means after 2, 5, 10, 30 seconds. You can change this to Immediate here instead.
  • Use record stream when maximised: Turn this on to live view the record (high definition) stream from your camera when maximised in the live viewer.
    This depends on General - Decoder not being VLC and Recording - Encoder being Raw Record Stream. In v5+ this has been moved to the Video Source tab.
  • VLC Options: These options get passed into VLC when it connects to your camera.

FFMPEG Settings

These are general FFMPEG settings so you can tweak how Agent connects to your cameras. Access this via Edit Camera, General tab, click to configure the video source and select FFMPEG in the drop-down menu.

  • Buffer: This is the realtime buffer that FFMPEG uses to store and process video. A smaller buffer means more real-time video but higher chances of errors. Recommended setting is 2000kb but you may need more for high resolution streams.
  • RTSP Mode: Auto will let FFMPEG choose the transport. If you have lots of errors try setting this to TCP. If you have a good wired connection use UDP as it has less processing overhead than TCP.
  • Scale Mode: Choose a scale mode for FFMPEG - Fast Bilinear is the default.
  • Find Best Stream: Check this to let FFMPEG decide which is the best video and audio streams to use from the connection
  • Video Stream Index: Uncheck "Find Best Stream" and you can manually set the video stream index here if FFMPEG isn't using the stream you want.
  • Audio Stream Index: Uncheck "Find Best Stream" and you can manually set the audio stream index here if FFMPEG isn't using the stream you want.
  • Prefer TCP: Check this option and FFMPEG will always prefer to use TCP if possible to connect to your camera - TCP provides error correction so you are less likely to get video decoding issues at the expense of some CPU usage and higher network traffic.
  • Analyse Duration: How long (in seconds) FFMPEG should spend analysing the streams to decide on Codecs and which streams are the best ones. 0 = automatic.
  • Probe Size: The probe size (in kilobytes) FFMPEG should use to detect the format of the stream (0 = automatic).
  • Maximum Delay: This applies to rtsp and rtmp streams and controls how long FFMPEG will delay playback if packets are received out of order. Higher values means less chance of errors but potentially higher latency. 0 = automatic. If this is set to 0 then Reorder Queue Size will be ignored. (sets max_delay on the ffmpeg format context)
  • Reorder Queue Size: The number of data packets to store in memory. Higher values mean less chance of corrupted streams but higher memory usage. (sets reorder_queue_size on the ffmpeg format context)
  • Thread Count: The number of threads to use to decode the stream. 0 = automatic. Less threads can reduce lag. (sets thread_count on the ffmpeg video context)
  • Options: Any additional FFMPEG options you want to pass in.

FFMPEG Troubleshooting

For help with playback issues see Corrupted / Stuttering Video