# Local Streaming on Verkada Cameras

Local streaming is when the feed from a Verkada camera is forwarded directly to the accessing device, rather than accessed from the cloud.

This feature reduces the amount of traffic sent and received from the internet. When viewing a camera’s stream, the camera automatically attempts to transition to local stream mode.

{% hint style="warning" %}
When you access a camera’s live footage remotely (when local streaming isn’t possible), the video is proxied through the cloud and cached to speed up retrieval and playback. This approach enables large numbers of simultaneous viewers without negatively impacting the bandwidth of your local area network (LAN).
{% endhint %}

***

## Requirements for local streaming

* The accessing device must be able to reach the camera’s private IP.
* Port 4100 TCP/UDP must be open bidirectionally between the client and the camera.
* No proxies can be present between the client and the camera.
* See [Required Network Settings for Cameras](/command/need-help/required-network-settings.md) for allowlisted domains.

{% hint style="warning" %}
A camera will be able to SQ local stream, but not HQ local stream, when configured for H. 265, but the end user is using an unsupported H. 265 browser and/or device. For more information, see [**Camera High Efficiency Video Encoding (HEVC)**](/verkada-cameras/video-streaming-and-sharing/live-streaming/camera-high-efficiency-video-encoding-hevc.md)**.**
{% endhint %}

***

### Identify if your device is local streaming

|                                         |                                                                     |
| --------------------------------------- | ------------------------------------------------------------------- |
| **View**                                | **Example**                                                         |
| Local stream on a web or mobile browser | <img src="/files/sZ9VAK4OMk3Il8fODuJY" alt="" data-size="original"> |
| Local stream on Command mobile app      | ![](/files/DsPSWGl8j0QCXY2myhii)                                    |
| Remote stream on Command mobile app     | ![](/files/S3nNOIJxJCyP8wkd5smm)                                    |

## How local streaming works

{% stepper %}
{% step %}
**The camera’s Domain Name System (DNS)** [**record needs to be registered**](#h_2fa97bf9bd)**.**
{% endstep %}

{% step %}
**Verkada Command instructs the streaming device to attempt to establish a** [**local stream with the camera**](#h_ffd43b346e)**.**
{% endstep %}

{% step %}
**The streaming device requests the** [**camera’s DNS record**](#h_071100bc92)**.**
{% endstep %}

{% step %}
**The streaming device** [**establishes a secure connection with the camera**](#h_a9ef69580b)**.**
{% endstep %}

{% step %}
**The camera’s feed is sent** [**directly to the streaming device**](#h_97ccafdecb)**.**
{% endstep %}
{% endstepper %}

### Step 1: Camera’s DNS record is registered

When the camera connects to Command, it shares its metadata, including its private IPv4 address. Verkada uses this data to provision a public type A DNS record for the camera's private IP address. Local DNS servers can now resolve requests for the Fully Qualified Domain Name (FQDN) of the camera. This DNS record is utilized for local streaming.

<div align="left" data-with-frame="true"><img src="/files/fvCs8XiwikbP8RqXOZjT" alt=""></div>

### **Get a camera’s FQDN**

{% stepper %}
{% step %}
**In Verkada Command, go to All Products > Cameras > camera’s live stream.**
{% endstep %}

{% step %}
**Right-click anywhere, click Inspect, and locate the Network tab.**
{% endstep %}

{% step %}
**Filter results  `ping` and refresh the page.**

The ping traffic contains the FQDN of the camera you are viewing.

{% embed url="<https://player.vimeo.com/video/691052916>" %}
Get a camera’s FQDN
{% endembed %}
{% endstep %}
{% endstepper %}

### Step 2: Transition to local streaming

When the camera’s live stream is accessed, the streaming device tries to change to local streaming. If the camera's private IP address is reachable from the device and the required domains are allowed on the network, the streaming device establishes an HTTPS connection with the camera to directly receive the live feed.

<div align="left" data-with-frame="true"><img src="/files/g0pWi0BVr7M2ODMmb2Es" alt=""></div>

### Step 3: Streaming device requests the camera’s DNS record

{% stepper %}
{% step %}
**When a camera feed is accessed, Command directs the streaming device to establish a connection to the camera's FQDN.**
{% endstep %}

{% step %}
**The accessing device sends out a standard DNS request (UDP port 53) for the FQDN of the camera.**
{% endstep %}

{% step %}
**DNS resolves the FQDN to provide the camera's private IP address to the accessing device.**

<div align="left" data-with-frame="true"><img src="/files/JiNnsptj4zXR0Y5dD8f5" alt=""></div>
{% endstep %}

{% step %}
**The device attempts to establish an HTTPS session over port 4100. If the device cannot reach the camera's private IP address, the process terminates here, and the stream does not transition to local.**

{% hint style="info" %}
You can find the camera's IP address on the [camera's settings page](/verkada-cameras/configuration/view-and-edit-camera-settings.md).&#x20;
{% endhint %}
{% endstep %}
{% endstepper %}

### Step 4: Streaming device establishes a secure connection with the camera

If the camera's private IP address is reachable, the TCP session is initiated. The SSL handshake occurs (TLS 1.2), and the HTTPS session is established. This ensures traffic is encrypted and secure. Through this connection, the camera's SQ live feed is accessed.\
​​\
Packet Capture showing TCP handshake for the camera’s private IP on port 4100:

<div align="left" data-with-frame="true"><figure><img src="/files/UOm7D1uzEuP8NFUSNYv6" alt=""><figcaption></figcaption></figure></div>

TLS Key Exchange showing the publicly-signed certificate presented by the camera:

<div align="left" data-with-frame="true"><img src="/files/clKs8myMemuhUoJfdqzo" alt=""></div>

### Step 5: Camera’s feed is sent directly to the streaming device

Once the secure connection is established, the camera sends the video to the client:

<div data-with-frame="true"><img src="/files/CgpjrJyobwxYhaRzohnt" alt=""></div>

***

## Troubleshooting

If you are experiencing issues with local streaming, try the following:

* Verify the cameras are online and streaming as expected.
* Verify the network configuration:
  * Your streaming device is on the same local network or can route to the camera’s network.
  * Port 4100 TCP/UDP is open bidirectionally between the streaming device and the camera.
  * Port 4100 TCP/UDP is open bidirectionally between the streaming device and the camera.
  * No proxies are present on the network.
* Verify the streaming device:
  * Is updated with the latest firmware or software updates.
  * Clear your browser’s cache and cookies, or try using an incognito/private browsing mode.
  * Test local streaming on a different device to determine if the issue is device-specific.
* Check your browser’s settings to verify your browser allows “Local Network Access.” Browsers may block local network access by default, which can prevent local streaming.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.verkada.com/verkada-cameras/video-streaming-and-sharing/live-streaming/local-streaming-on-verkada-cameras.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
