Comments (3)
Thanks for the info.
For the first issue: There was a recent discussion about GetServiceCapabilities
and AXIS cameras.
The ONVIF protocol says here that the GetServiceCapabilities
call should return True if the camera supports MoveStatus
information. This MoveStatus
parameter is used by Frigate's autotracking to determine when your PTZ is moving.
The reason why this parameter was chosen was:
- It is following the ONVIF standard.
- Some cameras report bogus values for
GetStatus
- they may showMOVING
orIDLE
but becauseGetServiceCapabilities
doesn't indicate support forMoveStatus
, the values fromGetStatus
are untrustworthy. Additionally, some users with Hikvision cameras had aMoveStatus
value that remained asMOVING
even after the PTZ motor stopped.
Other cameras we've tested with and that users have reported success with all have correctly reported GetServiceCapabilities
as expected by the ONVIF standard.
For the second issue: the ONVIF code in Frigate saves the absolute zoom limits from the camera here and then uses them in calculations elsewhere when absolute zooming is used. In my testing, the zoom_limits
values are not always the same as the absolute zoom limit values reported in the ptz profile's Spaces.AbsoluteZoomPositionSpace
object.
In short, I've found that the ONVIF "standard" is not quite as standard as one would hope. Basic things (continuous move, presets, streams, etc) seem to be widely standardized, but the implementation of some of the finer parameters seem to vary widely from manufacturer to manufacturer, despite them saying they "support ONVIF".
from frigate.
Thanks for your comments! I understand the concerns now with some cameras not conforming to the ONVIF spec. I still do find it odd that a manufacturer like AXIS produces cameras that doesn't confine to a spec they helped create. Ultimately, I as well as others likely would want their cameras to work with this new feature, so I would like to toss out a couple of ideas for solving these issues.
For GetServiceCapabilities
, could we leave this as an optional config options to simply ignore this check? I did see that in my specific case, disabling this check allowed the camera to still function as GetStatus
did return the correct MoveStatus
values.
As for the zoom limits, I know you mention that zoom_limits
are different, but does this cause issues with other cameras if it were used instead of the Spaces.AbsoluteZoomPositionSpace
object? I know it certainly worked on my camera, but I cannot speak to other cameras.
Additionally as I was taking look as this, I think I found a bug. The usage of np.interp
is inverted here. Since the values are getting interpolated back from the camera's view to 0-1, the camera's zoom should come first.
Hopefully we can figure out a solution to getting something working in for everyone. I have my frigate version monkey patched with the few changes I mentioned and they have been working well on my camera.
from frigate.
Thanks for your comments! I understand the concerns now with some cameras not conforming to the ONVIF spec. I still do find it odd that a manufacturer like AXIS produces cameras that doesn't confine to a spec they helped create. Ultimately, I as well as others likely would want their cameras to work with this new feature, so I would like to toss out a couple of ideas for solving these issues.
For
GetServiceCapabilities
, could we leave this as an optional config options to simply ignore this check? I did see that in my specific case, disabling this check allowed the camera to still function asGetStatus
did return the correctMoveStatus
values.
Adding features to work around individual camera issues or manufacturer's firmware bugs and incomplete ONVIF support isn't something that makes a lot of sense from a support perspective, especially when myself and the other maintainers don't have those cameras to test with.
As for the zoom limits, I know you mention that
zoom_limits
are different, but does this cause issues with other cameras if it were used instead of theSpaces.AbsoluteZoomPositionSpace
object? I know it certainly worked on my camera, but I cannot speak to other cameras.Additionally as I was taking look as this, I think I found a bug. The usage of
np.interp
is inverted here. Since the values are getting interpolated back from the camera's view to 0-1, the camera's zoom should come first.
This is incorrect and not a bug. Absolute zoom values from the camera get mapped to a value between 0 and 1. Frigate uses a value of 0-1 internally to keep track of cameras using absolute zooming, so the code as written is working as intended.
However, it may be possible to better catch errors or unexpected values with cameras like yours. Could you enable debug logging, restart Frigate, and paste the initial log output as well as your Frigate config here?
logger:
default: info
logs:
frigate.ptz.autotrack: debug
frigate.ptz.onvif: debug
from frigate.
Related Issues (20)
- Recording Function - Certain Time HOT 1
- Delete / Archive Frigate+ models HOT 1
- Smooth timelapse, not just motion. HOT 1
- Multiple birdeye streams HOT 3
- option to define different motion settings by zone HOT 5
- Wrong description HOT 1
- Memory usage increases after "Detection appears to be stuck. Restarting detection process..." HOT 2
- option to include bounding boxes/motion boxes on export HOT 4
- Add possibility to leave jsmpeg fullscrean without pressing ESC for touchscreens HOT 1
- Change Events > Cameras > Show all to Show all / Hide all HOT 3
- When launching a review alert/detection, apply pre/post record buffers to video clip HOT 5
- Feature Req: Historic Motion Box Event Scanning (Willing to Pay) HOT 1
- FFMPEG is crashing the intel NUC due to memory stranded at 100% HOT 1
- Option to only run recording ffmpeg process during an event HOT 3
- Reduce the video player format HOT 1
- partition the snapshots into cameras and dates
- Possibility to trigger a recording via an external call (maybe REST?) HOT 1
- can /tmp/cache and /dev/shm use same mount? HOT 1
- Adopt system stats to specific platforms HOT 3
- Configure initial detect/record/snaphsot/audio states, or keep them across restarts HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from frigate.