Rhombus
I intended to make this release focus on “offline mode” (meaning the app can start and mostly function without internet access — which I’m still going to get around to soon), but I received an interesting phone call that changed the direction for this release.
The phone call was from a school district IT Director. Their video security is an amalgamation of various RTSP, ONVIF, UniFi and Rhombus cameras. Streamie let him get forty-or-so of the cameras running simultaneously on an Apple TV, but Rhombus doesn’t support any protocols that Streamie supports (come on guys: just use RTSPS). He explained that Rhombus does offer “Secure Raw Streams” (SRS) though, which is just a raw H.264 stream. To me, that just sounds like RTSP without all of the headache.
I had a new mission.
I would need a video clip to test and validate with, and while I waited on that I used FFmpeg to export just the H.264 data from Big Buck Bunny, dumped it on a web server and pretended it was a camera. In short, you just need to identify all of the start codes (0x00000001) and then the NAL units within each segment. Get the SPS, PPS (and SEI?) values. Parse the timing information from the SPS value. Send all of that to your video decoder and then start producing each of the encoded video frames (after you find the first keyframe) with some minor tweaks to the data to make the decoder happy.
Eventually I received a 10s clip of a raw stream and I started digging into it. The only notable difference between the test clip and my Big Buck Bunny export is that I had used a constrained baseline profile and the Rhombus stream is high profile, which meant a small tweak to the SPS parsing code and we were up-and-running!
I received a very satisfying screenshot of a bunch of Rhombus cameras running in Streamie after the user received the TestFlight build. And now they’re running 60+ cameras on each of the Apple TVs. Amazing.
This is just the start though. I recently discovered that Rhombus has some interesting 3rd party development support. I should be able to create a new Streamie Integration for Rhombus. You feed it a Rhombus API key and Streamie can auto-discover your camera feeds (like we do with HomeKit, Ubiquiti, et al). Cool stuff. Coming soon…hopefully.
Technology Licensing
A feature we highlight on the pricing page is technology licensing. Streamie isn’t just used to watch your baby sleep. Shocking, I know! There are some exciting projects in development for which Streamie serves as the foundation of the video pipeline.
Anyway, I found myself putting together a Keynote presentation this week for an introductory meeting following lengthy email discussions. Ink isn’t on paper yet, but things are progressing: we’ve documented requirements and produced time and cost estimates. Also, it’s refreshing having meetings with an engineering company because such companies tend to be filled with engineers, and engineers understand and ask great questions. They also don’t want to be in meetings, so a meeting lasts precisely as long as it needs to, and no longer. The highlight of this particular meeting was that all of the features they required have already been developed, tested and are in production. Can’t beat that.
Adds
- Adds Rhombus SRS (Secure Raw Stream) support! [BA]
Fixes
- Fixes an issue in StreamingSessionTester where it did not tell the underlying StreamControl to stop streaming if it encountered an error, so instead of the StreamControl would keep retrying, which is not ideal.
- Fixes timeouts associated with Synology C2 multipart operations, which are used by the Record service. We need Streamie to be a bit more patient, and we need Penguin to also be more patient. Timeouts adjusted accordingly.
- Fixes more JSON compatibility issues related to UniFi Protect NVRs, that is different than what you get from Protect via a UDM.
- Fixes a ridiculous bug related to camera recording. Basically, if you have two (or more) file servers, and they use different qualities (for instance, maybe your offsite S3 gets "medium" quality while your onsite NAS gets "original" quality), then all qualities are written to all file servers. Yikes.
- Fixes an issue with StreamingSessionTester where in certain circumstances, it might not test the CameraSource that it was provided due to the StreamingSession refreshing the source to make sure it has the latest version.
- Fixes some issues related to selecting cameras, members for SMB, S3, Cloud and Azure file servers.
Improves
- Improves the Configure URL Camera screen: (1) supports both RTSP and RAW H264 (Rhombus), (2) gets rid of all of the URL component fields and provides just a single URL field, (3) checks if you're adding a Ubiquiti UniFi Protect RTSP url that still has the '?enableSrtp' on the end, and bids you to remove it.
- Improves the remote device control "quit" function so that it'll send a confirmation response first, wait a moment and then crash the app (instead of just crashing the app which causes a timeout for the sender).
- Improves the HTML Markdown renderer to convert ampersands, greater-thans and less-thans to their HTML-safe equivalents.
- Improves the speed at which a support ticket can be retrieved and displayed.
- Improves the Settings => Profile screen with a TimeZone chooser; same one that is used in the Clock Module that I should have adapted over here ages ago. Better late than never, I suppose.
- Improves the ONVIF Camera Configure screen, replacing the various URL component fields with a single URL field. You're welcome.
- Improves the URL Camera Configure screen so that it will automatically trim leading / trailing whitespace from the user-entered URL value.
- Improves VideoToolboxDecoder so that if is has to flush its queue of decoded frames because the sinks are backed up, it also sets waitForKeyFrame=true, which will slow down decoding (because why rush to decode all of the frames if we're just throwing them away?).
Removes
- Removes some PenguinHelp API support which was deprecated in June, 2023.
- Removes some PenguinHello API support which was deprecated mid last year. If you're still using v3.14.x, you aren't any longer.
- Removes a v3.14.0 version check that happened in a few places because older version suffered from a bug where a pop-up message would cause the streamer view to be dismissed. If you're still using pre-v3.14.0, that's on you.
Updates
- Updates KrillStreamingSession so that it refreshes the source each time it tries to reconnect. This is important because if you edit the source is edited (like if a camera changes its IP address) you don't want to have to restart streaming on each device. I actually thought I had this handled earlier....
- Updates PenguinHello's handleUpdateRequest4() to use the new setDeviceName() function, which is maybe a fix for a recent Penguin crash.
- Updates TaskScheduler so that the name of its internal queues includes its identifier so that it is more obvious, when debugging, which instance we're looking at.
- Updates the Penguin health check to also verify that the server's scheduler is not particularly backed up. It can back up a bit (up to 1,000), but not beyond that (without causing an alarm).
- Updates the URL Camera Configure screen so that it is no longer RTSP specific.
- Updates HelpService with better created, updated, author details at the end of each article.
- Updates HelpService to provide more precise last-created/updated times that include seconds, minutes and hours. Who cares why. Because I can.
- Updates the Release Notes URL in the Help tab.
- Updates the text color for the Stream cells in the URL, ONVIF and UniFi Camera Configure screens, so that it is more readable.
Created: 1 month ago
Updated: 2 weeks ago
Author: Curtis Jones
Topics: Ubiquiti Release Notes Video Codecs Rhombus ONVIF
Streamie provides a best-in-class user experience on your iPhone, iPad, Apple TV and Apple Silicon Mac, with an intuitive user interface that makes it simple to discover, stream, record, monitor and share your HomeKit, Google Nest, Ubiquiti UniFi Protect and ONVIF-compatible IP and RTSP cameras. Streamie keeps you informed with motion event notifications and it works with most cameras using its advanced audio and video codec support. You can watch your cameras from anywhere, record 24/7 to your private NAS, remotely manage multiple locations, device permissions and seamlessly synchronize settings across your devices; configure Hubitat smart home automations, live stream to YouTube and rely on the in-app technical support system when you need help -- and you can also reach us by phone. Download Streamie today for all of your CCTV needs.