Release Notes for v4.7.0 (2024.11.18) — In Review

 

Overview

 

Streamie in a Browser

 

Streamie in a web browser

 

Consider this an “early alpha” feature. It works in Chrome (as you can see from the screenshot). I haven’t (yet!) got it working in Safari or Firefox. Being able to stream to a browser at all is a big step in the right direction. This still needs HEVC (H.265) support, audio and so on. I’m really not looking to duplicate all of Streamie’s functionality, to be clear; just to play audio/video streams.

 

What I would like to be able to do, however, is embed a camera in a web page. To make this work I’ll either have to require UPnP or I’ll have to be willing to proxy the stream through the Streamie backend, which I’m not excited about. I suppose that imposing some concurrency limits would assuage my early concerns a little. It’s on the todo list….

 

Rhombus API Integration

 

Rhombus Actions

 

When we left off in v4.6.0, I had just added Rhombus Secure Raw Stream support. You could copy-paste an SRS URL from your Rhombus Console into Streamie and then stream your camera. Voila! It was primitive, but it worked.

 

Now in v4.7.0, we’ve got full Rhombus API support. What this means is that you can provide Streamie with a Rhombus API key. Streamie can auto-discover your Rhombus cameras (much like with ONVIF or Ubiquiti). You can add a Streamie Webhook URL to your Rhombus Console and receive motion events from your Rhombus cameras. You can customize event actions in Streamie to make recordings, save snapshots, run Functions or send push notifications.

 

Webhooks

 

Streamie Webhooks

 

To achieve the Rhombus API Integration mentioned above, Streamie (frontend and backend) needed to have Webhook support. Streamie needs to be able to produce a URL that you give to a 3rd party service provider. When the Streamie backend receives a webhook callback, it needs to be routed to your Streamie devices, and then processed locally.

 

With respect to the implementation, it is entirely platform agnostic (it is not tied to Rhombus in any sense). Going forward, I want to dabble more with the JavaScript-based Modules: a webhook should be routable to an active Module, triggering a re-run of the Function and a refresh of the content. There’s still a lot of details to think through there.

 

Changes

 

Adds

 

- Adds support for streaming cameras to a web browser.

- Adds the new Rhombus Integration. Providing an API key allows Streamie to discover your cameras in the Camera Search screen so that you don't have to copy-paste your Secure Raw Stream URLs. Additionally, camera names are copied from Rhombus. Rhombus cameras added via the new integration support web streaming, remote streaming and shared streaming.

- Adds support to the Raw Streaming Session for the PacketBuffer so that we can have recordings associated with events and do quick recordings while streaming.

- Adds support for managing Messages associated with a Rhombus Camera Source, and adding Actions.

- Adds event handling supprot for Rhombus events.

- Adds ChinstrapService support for maintaining a list of webhook subscriptions and the corresponding event handlers.

- Adds support to ChinstrapPenguinClient+Webhook for receiving incoming webhook event notifications.

- Adds support to ChinstrapPenguinClient+Webhook for accepting requests to subscribe, unsubscribe from a particular webhook.

- Adds support to the RhombusIntegration type for containing a set of webhookIds.

- Adds a new Webhook API service that will take POST requests and an API KEY and (one day) forward it to the appropriate Streamie connections.

- Adds the frontend and backend support for managing Webhooks. Still remaining to be done is the server-side event routing handling, subscription management and discovery, and the frontend integration to route events to an integration or module.

- Adds ".jpeg" support to Markdown which tries to create HTML for help.streamieapp.com.

- Adds Streamie support for showing a list of articles by tag. Now we can link to a tag from an article. This worked fine on the web, but was not supported in the app until now.

 

Updates

 

- Updates the font size on the LaunchViewController because there are slightly too many items that we load at startup to fit on the screen.

- Updates 3rd party libraries (AMSMB2, Reachability) to latest versions.

 

Improves

 

- Improves backend support for receiving, routing Webhook payloads.

- Improves ChinstrapPenguinClient so that it'll notify its delegate (ChinstrapService) when it finishes connecting, so that when Streamie reconnects, we can push our subscriptions to Penguin.

- Improves HelpService (the backend for help.streamieapp.com) with OpenGraph tags so that link previews work better.

- Improves reconnection support for Rhombus secure raw streams.

- Improves the behavior for trying to exceed account limits when adding cameras.

- Improves the decodablePacket() function to (1) eliminate some duplicate code, (2) simplify how it combines the segments in an effort to get rid of this obscure crash, that I never can seem to reproduce.

- Improves PortalService by migrating over to HTTPS with a self-signed certificate that is auto-generated when needed.

- Improves the Rhombus API webhook support: when you disable a webhook, we block future notifications and also send an unsubscribe request to the API server. We also check to make sure a webhook is enabled before initially subscribing to it.

 

Fixes

 

- Fixes an issue in the Recording Files screen where file timestamps were displayed for the time zone in which the recording was made (which is just simply based off the timestamp included in the file name). Once the appendix data for the file loads, the timestamp is now updated to the local time zone.

- Fixes an issue with the Recording Snapshots screen where the start time was not based on the local time zone, and instead showed the time zone of where the recording was made.

- Fixes an AGE OLD issue where I could not figure out how users were adding cameras beyond their camera limit. It turns out that the StreamingSessionTester, which is responsible for grabbing snapshots for the Stream cells in the camera configuration screens, was at fault (of sorts). It creates a new source with slightly different stream characteristics, and then that source was unintentionally being saved. We now make sure that the CMCCameraSource.identifier is an empty string, and ChinstrapCache+Camera has been updated to ignore those sources.

- Fixes a tvOS layout issue for Streams in the ONVIF, RTSP, RHombus, Ubiquit Camera Configure screens.

- Fixes the WebAPI Integration screen so that the apikey is not displayed, much like one would expect of a password.

- Fixes Chinstrap (remote) and Portal (web) streaming so that it supports H264 Raw Streams (Rhombus).

- Fixes a crash in the Home => Members => Member screen associated with the reload that happens when toggling options.

- Fixes a crash in KrillClient that can occur when an RTSP stream becomes corrupt.

- Fixes a crash (maybe) in DataBuffer. I'm really not sure though....

- Fixes a crash (maybe) associated with pushing ping count analytics.

- Fixes a DataBuffer.prune(to:) crash.

- Fixes a DataBuffer.firstIndex(of:) crash.

- Fixes a crash (maybe) related to discovering SMB servers.

- Fixes a Penguin issue in isUpdateAvailable() where we are showing the user the update version and not the latest version.

 

Removes

 

- Removes a dead class, CMIActionCollectionViewCell.

 

Refactors

 

- Refactors some use of various camera source message types with the new CMCCameraSourceMessage protocol. We can do more, later.

- Refactors the Rhombus Integration Configuration screen to use the Screen v2 pattern. Also adds the Webhooks section.

 

Details

 

Created: 1 week ago

Updated: 11 hours ago

Author: Curtis Jones

Topics: Release Notes Webhooks Rhombus

 

About Streamie

 

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.