Stream - FAQ
- π General Requirements
- π» Installation & Deployment
- βοΈ Configuration & Optimization
- How do I set the FPS in Stream to optimize hardware?
- Will Stream accuracy improve if I increase
max_prediction_delay? - What is the minimum value for
max_prediction_delay? - What is the minimum value for the
memory_decayparameter in Stream? - What does the Stream Health Score mean?
- How can I prevent Stream from monopolizing the CPU when running multiple containers on the same machine?
- What is the real benefit of using a GPU in Stream?
- Does using the GPU mean Stream stops using the CPU?
- π Licensing & Activation Issues
- π οΈ Error Messages & Troubleshooting
- How do I resolve the error
Connection to tcp://192.168.0.111:8080?timeout=0 failed: Connection refused? - What should I do if Stream does not correctly decode an image?
- What does the error message "There is a drop in performance" mean in Stream?
- How can I configure Stream to process a camera or video feed?
- What does the error message "Stream periodically 'pings home' to validate the subscription. Please provide Internet connectivity and re-run the Docker command to reactivate Stream" mean?
- How do I get the Stream version?
- How do I resolve the error
- π· Camera Connectivity
- How can I connect Stream to a camera through a DDNS server?
- What happens if the camera is accidentally turned off or resets?
- What should I do if Stream is unable to connect to a camera?
- The RTSP URL works fine in VLC, but Stream can't connect to it. What should I do?
- What does the error message "Stream failed to register camera" mean?
- π³ Docker Management
- ποΈ Video Source
- Can Stream process a video file instead of a camera feed?
- What types of video files can Stream accept?
- How can I set up Stream to process a video file?
- How long does it take for Stream to analyze a video file?
- How do I test a camera's RTSP stream in VLC?
- How do I check the stream quality (FPS, resolution) in VLC?
- π€ Stream Output
- How do I get the timestamp of vehicles captured in Stream when processing videos?
- What is the output of Stream?
- How can I get more log output from Stream?
- Is there a way to add visualizations of plate results to a video?
- Can I remove older images from the Stream output?
- Where are my Stream output files saved?
- How can I organize my output files into custom folders?
- How do I customize output filenames?
- How can I save Stream output to an external USB drive or SD card?
- π Webhooks
- Why does it seem like Stream sends the webhooks with a few seconds delay?
- How often does Stream try to resend webhooks?
- What does the timestamp in Stream webhooks refer to?
- What does this error message mean: "Webhook queue is full"?
- How do I test or troubleshoot Webhooks in Stream?
- How can I improve webhooks speed of the ALPR results?
- How do I not save vehicle or plates images in my local Stream folder when forwarding webhook data?
π General Requirementsβ
Do I need an internet connection to install and run Stream?β
Yes and no.
For our standard implementation, you will need an internet connection to install or update Stream. After installation, a Stream subscription will "call home" a few times a month to validate the license. No images are sent; only a few bytes of data are transmitted to confirm the subscription. Therefore, a flaky or intermittent internet connection is acceptable for the Stream Subscription License.
If you have no internet access, you can opt for a Perpetual License of Stream. Please contact us for more information about this licensing option.
To install Stream without an internet connection, please contact us for details.
π» Installation & Deploymentβ
How do I install Stream on Windows using Docker?β
We recommend using the Plate Recognizer Installer to install Stream. You can download the Plate Recognizer Installer from our website.
If you prefer to install via Docker, please refer to our Docker help page for guidance.
If you are running Windows as a virtual machine, either on-premise or in the cloud, ensure that it supports nested virtualization. Otherwise, you will not be able to run Docker, and consequently, Stream will not work.
Can I deploy Stream on AWS, Azure, or Google Cloud?β
Yes, Stream can be deployed on any major cloud provider, including Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP).
If you plan to use a Windows-based instance, please review the caution note above.
How do I start Stream for Thailand and Jetson devices?β
To get started with Stream on Thailand-optimized or Jetson devices, please refer to the list of additional Docker images for Stream, which includes specific builds tailored for these platforms.
I can't install Stream on new hardware.β
Stream creates a digital fingerprint of your device's specifications. If you change a hardware component, Stream will stop working. Please contact us to request a reset of your Stream Subscription License. Note that we are unable to reset Perpetual Licenses.
How can I update to a new version of Stream?β
Please refer to our guide on updating to a new version of Stream.
How do I completely uninstall Stream?β
To uninstall Stream, remove the Docker image with the following command:
docker image rm platerecognizer/alpr-stream
Note that the license will remain tied to the original device.
Please contact us to remove the fingerprint after you have uninstalled Stream.
βοΈ Configuration & Optimizationβ
How do I set the FPS in Stream to optimize hardware?β
By default, Stream processes every other frame. For example, if your camera captures at 60 FPS, Stream will process approximately 30 frames per second. Unless vehicles are moving at high speeds, processing 30 FPS is usually unnecessary.
Based on vehicle speed, we recommend setting the effective FPS (eFPS) as follows:
- For vehicles traveling under 30 mph, set eFPS to 4β5.
- For vehicles traveling between 30 and 60 mph, set eFPS to 8β10.
- For vehicles traveling over 60 mph, set eFPS to 12.
To calculate eFPS, divide the camera's FPS by the sample rate configured in Stream. For example, if your camera records at 30 FPS and you set sample=6, your effective FPS will be 5.
We recommend testing and adjusting these settings according to your specific environment. If you need assistance, feel free to contact us.
Will Stream accuracy improve if I increase max_prediction_delay?β
The impact on accuracy depends on the environment:
-
In a parking scenario where the camera can clearly see the license plate from a distance as the vehicle approaches, there is likely no meaningful difference in ALPR accuracy.
-
However, in cases where the camera's view of the plate is obstructed or the camera has a lower resolution, increasing
max_prediction_delaygives Stream more time to find the best frame for optimal ALPR results.
As always, we encourage you to test this parameter and compare the results in your specific environment.
What is the minimum value for max_prediction_delay?β
The minimum value is 0.1 seconds.
However, we do not recommend setting it to 0.1, because Stream may not have a clear image of the license plate when it first spots the vehicle, which could lead to an incorrect decoding.
Unless you require a very fast real-time result (e.g., to open a gate), we recommend keeping this parameter at its default value.
What is the minimum value for the memory_decay parameter in Stream?β
The minimum value is 0.1 seconds.
However, for clarity, we do not recommend setting it this low, because if the camera sees the same vehicle again (e.g., 0.2 seconds later), Stream will count it as a new vehicle in the ALPR results.
What does the Stream Health Score mean?β
The Stream Health Score is a measure of Stream's performance on its host hardware.
If the Health Score is below 70%, the machine is not fast enough, and there is a higher chance that Stream will miss license plates.
Below are some possible remedies:
- Upgrade to a faster machine. See our Stream Hardware Recommendations.
- Ensure that no other compute-intensive programs are running.
- Reduce the number of cameras in Stream.
- Lower the camera feed resolution (this is done outside of Stream).
- Increase the
sampleparameter inconfig.ini. If the value is too high, Stream may miss license plates.
How can I prevent Stream from monopolizing the CPU when running multiple containers on the same machine?β
When running multiple containers alongside Stream, it is crucial to ensure a fair distribution of processing power. You can use Docker Runtime Options to limit Stream's CPU usage.
For example, you can run Stream with a CPU limit like this:
docker run ... --cpus=1.5
This setting guarantees that the container will use at most 1.5 CPUs. If your host machine has 2 CPUs and you specify --cpus=1.5, Stream will be limited to one and a half CPUs, leaving resources available for other containers.
What is the real benefit of using a GPU in Stream?β
The GPU is used to accelerate inference, which is the process where Stream analyzes and interprets video data, such as object recognition or pattern detection. This acceleration enables increased parallelism, meaning the system can process a larger number of cameras simultaneously, significantly improving the overall throughput (processing capacity).
Does using the GPU mean Stream stops using the CPU?β
No. Although the GPU accelerates inference, other important video processing tasksβsuch as decoding, encoding, and object trackingβare still performed by the CPU. Therefore, CPU usage remains present and can be significant depending on the workload. The GPU complements the CPU but does not fully replace it in Stream's processing.
π Licensing & Activation Issuesβ
What does the error "License file not found for Stream installation" mean?β
This error indicates that the system does not recognize the API Token or License Key for Stream.
Please double-check your API Token and License Key and ensure that the device has an internet connection.
What does the error "This license has already been used" mean?β
This error message indicates that the license has already been used. We permit only one Stream license to be installed on a single machine. To resolve this issue, please uninstall the license from the previous machine before installing it on a new one.
If you have a Subscription for your Stream license, go to your Account Page and click Manage > Reset for the specific license key. If you have a Perpetual License, please note that we are unable to recover the license key, as stated in our Terms for Perpetual License.
What do I need to do after adding additional camera licenses to my Stream license?β
After adding camera licenses or making other configuration changes to Streamβsuch as modifying detection zones, updating webhooks, or changing configuration parametersβyou must restart the Stream container to apply the changes.
For instructions on how to restart, please refer to our guide on managing Docker containers.
π οΈ Error Messages & Troubleshootingβ
How do I resolve the error Connection to tcp://192.168.0.111:8080?timeout=0 failed: Connection refused?β
This error indicates that Stream cannot connect to the camera at the specified IP address and port. This typically means the camera is offline, misconfigured, or not accepting connections on that port.
For detailed troubleshooting steps, refer to the guide on resolving camera connection issues.
What should I do if Stream does not correctly decode an image?β
The premise for Stream to work is that the license plate is identifiable by the naked eye in the video. It does not need to be perfectly clear, but if it is not possible to identify the plate visually, the system will not be able to decode it.
If you believe the plate is visible enough in your video but Stream still fails to decode it correctly, please contact our support team. To better assist you, please provide a 30-second video clip demonstrating the issue. We will be happy to review it and help resolve the problem.
What does the error message "There is a drop in performance" mean in Stream?β
The "Drop in performance" message appears when Stream is running out of resources and struggling to process the video or live camera feed. This typically occurs when CPU or memory utilization exceeds 90%.
To resolve this, allocate more RAM and CPU to Docker. You can refer to the Stream Hardware Recommendations for guidance.
How can I configure Stream to process a camera or video feed?β
Please refer to the Stream Configuration guide for instructions.
What does the error message "Stream periodically 'pings home' to validate the subscription. Please provide Internet connectivity and re-run the Docker command to reactivate Stream" mean?β
This error indicates that the Stream service could not connect to the server to authenticate the license. This can happen if the device lacks internet connectivity, particularly to our servers, or if the Docker container's networking configuration blocks internet access.
To resolve this, ensure that Docker can connect to our servers. You can verify this by following the steps outlined here. If you are certain that access is allowed, run the Stream container with host networking using the --network host flag.
How do I get the Stream version?β
You can get the Stream version by accessing the Docker container logs. To do this, you'll need your Stream container's ID or name. If you don't know what it is, you can list them with the following command:
docker ps
After identifying your container's ID or name, use one of the commands below, depending on your operating system:
- On Windows (PowerShell):
docker logs <your_Stream_container_ID_or_name> | Select-Object -First 1 - On Linux/macOS:
docker logs <your_Stream_container_ID_or_name> | head -n 1
The output will be something like:
INFO:root:Plate Recognizer Stream v1.57.0
π· Camera Connectivityβ
How can I connect Stream to a camera through a DDNS server?β
To connect your camera via a DDNS (Dynamic DNS) server, you first need to configure port forwarding on your router to allow external access to the camera's stream.
Once port forwarding is set up, you can use a URL in the following format to connect Stream to your camera via DDNS:
rtsp://admin:password@<your-ddns-domain>:<port>/stream-path
Make sure to replace <your-ddns-domain>, <port>, and /stream-path with your actual DDNS domain, forwarded port number, and the correct camera stream path.
If you need help with router configuration or finding the correct stream URL, consult your camera's manual or contact your network administrator.
What happens if the camera is accidentally turned off or resets?β
Stream will automatically reconnect with the camera when it is turned back on. See max_reconnection_delay for more information.
What should I do if Stream is unable to connect to a camera?β
-
Verify the Camera Stream First, ensure that your camera is streaming correctly. You can do this by opening the RTSP URL in a media player such as VLC or
ffplay. -
Try a Different Transport Protocol Some cameras require a specific protocol for RTSP. You can try forcing UDP by including this environment variable in your Docker run command:
-e OPENCV_FFMPEG_CAPTURE_OPTIONS="rtsp_transport;udp"Example Docker Run Command with UDP Option
sudo docker run --rm -t --name stream \
-v /home/kyt/documents/stream:/user-data \
--user $(id -u):$(id -g) \
-e LICENSE_KEY=XXXXX \
-e TOKEN=YYYYY \
-e OPENCV_FFMPEG_CAPTURE_OPTIONS="rtsp_transport;udp" \
platerecognizer/alpr-stream -
Still Not Working?
If the problem persists, please contact us and include the make and model of your camera. This will help us provide more targeted support.
The RTSP URL works fine in VLC, but Stream can't connect to it. What should I do?β
This issue commonly occurs with Milestone Open Network Bridge after their 2021 R1 update, which added SHA256 as a digest authentication method. The problem is that Stream does not support servers that offer both MD5 and SHA256 for digest authentication at the same time, while VLC is compatible.
Symptoms:
- RTSP URL works perfectly in VLC Media Player
- Same URL fails to connect when used in Stream
- Testing the same URL with
ffplaymight not work, giving401 Unauthorized
Solutions: A Registry edit for Milestone ONB (Windows) is required, so Stream will only see MD5 algorithm for authenticating with ONB.
Registry editing can be dangerous. Always back up your registry before making changes.
- Press
Win + R, typeregedit, and press Enter - Navigate to:
HKEY_LOCAL_MACHINE\SOFTWARE\Milestone\Milestone Open Network Bridge\ - Right-click in the right panel and select
New > DWORD (32-bit) Value - Name it:
SHA256Auth - Set the value to
0 - Restart your Milestone ONB service or reboot the computer
Testing the Fix:
After applying any of the above solutions, test the RTSP URL with ffplay. Use the following command:
ffplay -rtsp_transport tcp rtsp://username:password@ip:port/path
If it works, you can now test the same URL with Stream to confirm the connection works consistently across both applications.
If it didn't work, please contact our support team with details about your VMS system, and the troubleshooting steps you've tried.
What does the error message "Stream failed to register camera" mean?β
This message indicates that Stream was unable to contact our servers to register the camera. This can happen if the device cannot access the internet or if the Docker container's networking configuration does not allow internet access.
To resolve this issue, ensure that Docker can connect to the internet. You can also try running the container with host networking by using the βnetwork host flag.
π³ Docker Managementβ
How do I manage a Docker container?β
Below is a summary of basic Docker commands:
docker ps: Lists running containers.docker stop <container_name_or_id>: Stops a running container.docker rm <container_name_or_id>: Removes a container.docker start <container_name_or_id>: Starts an existing container.docker restart <container_name_or_id>: Restarts a container.
Example command to restart Stream:
docker restart stream