I’ve lately taken to buying each of the most popular IP cameras (that I don’t already own), and doing an unboxing, setup and test review / tutorial. Each of these is posted over here. With several of the cameras, what was supposed to be a quick process ended up being a multi-day adventure of discovering the camera’s unique quirks that cause streaming stability issues.
Playing with a new Reolink camera resulted in some further beefed up fragmentation unit checking and error handling.
The default behavior when a decoder error occurs is to gradually recover, which is essential when the decoder error occurs because the device is over taxed but the current streams. However, most people aren’t trying to stream twenty-five 2k cameras, so I’ve changed the default behavior to recover from decoder errors instantly. If you fall in the former group, you can edit each of your cameras an tap on the Recovery button to switch to Gradual.
And yes, once again v3.9.0 development was interrupted for compatibility improvements.
- Improves stream recovery by changing the restart mechanism from being based on receiving network data to instead being based on producing video frames. When a stream is corrupted, Streamie will try to recover that stream, and this change basically places a maximum time on how long that recovery can take.
- Removes the "Switch to remote..." button in tvOS since that functionality is in the pop-up menu view.
- Fixes an ONVIF compatibility issue with Sony Ipela cameras by not requiring a successful GetServices() call, the result of which wasn't actually being used. [NH]
- Fixes a PTZ-related ONVIF compatibility issue with Sony Ipela cameras by adding use of the AddPtzConfiguration() step; for some reason, no other camera I've tested required that. [NH]
- Changed the default recovery mode for cameras to Instant instead of Gradual. For people who over-stress their system, they can manually set Gradual recovery mode. I imagine that's a small percent of the user base, so this change makes sense.
- Entirely removes the startup delay when streaming a group of cameras. I previously had the delay in place to maintain stability, but that instability ended up being a result of incorrect use of the main queue. I previously moved the delay from 2s to 0.25s and found that it didn't not degrade stability, so now the delay mechanism is entirely gone.
- Improves support for some Reolink cameras. With the Duo WiFi I noticed corrupted fragmentation units as well as dropped frames. Streamie now parses the first SPS as well as the frame number of each dependent frame. If a key frame is skipped, Streamie will then skip all of the subsequent dependent frames until we get the next key frame, which causes a brief "freeze" instead of a decoder failure.