Local File Server
At the behest of a Streamie user, I finally got around to implementing the Local File Server feature. While technically this can be used on any platform, the obvious intended use case is for Macs (with external drives). With the addition of this feature, you can now run Streamie on your Mac and record 24/7 directly to your Mac. Since the feature is just now being introduced, please assume there are undiscovered edge cases and rough edges to be sorted out.
When you create a new Local File Server, you can browse your device to select the destination folder. I've tested this with the Downloads directory as well as external volumes. You may find a use case that doesn't work. If so, just report the bug and it'll get taken care of.
Only a single Member can be associated with a Local File Server because that file server is only applicable to the device on which it was created. You cannot, for instance, record to a Local File Server on a device other than the device on which it was created. This should be obvious.
Timelapse Movies
I'd been wanting to support timelapse movies for a long time. As usual, I was overthinking everything. I just decided to get something working and then figure out what a suitable "MVP" would be for this feature. For a while, I was thinking about implementing this feature purely as a Function. I'd expand the JavaScript API to support the initialization of video encoders and decoders, and then one could craft some JavaScript to enumerate the recordings for a file server, decode each, skip frames, encode the timelapse movie and all that. Too much work. It'd be incredibly flexible, but I think most users would be unimpressed.
Instead, if you navigate in a file server to a list of recording files (that is, select a Camera and then a Date), you can then use Options => Export Timelapse to be directed to the new Timelapse Exporter screen, where you can define some basic options for the timelapse movie export process. In brief, you can specify the frame skip interval, the output framerate and the output average bitrate. You can select which files from that day's recordings you want to include. And finally, you can decide how to save the timelapse movie: iCloud Photo Album, Share Sheet or a File Server.
Taking this back full circle to implementing it as a Function, it occurs to me that making this timelapse code accessible to a function would mean that you could then trigger a timelapse from a Function on command; might be useful.
I look forward to seeing some timelapse movies and learning how people will use this, and what improvements are needed to make it more generally useful.
Streamie Enterprise
Ever since the transition from v2 to v3 some years ago, Streamie lost its support for operating offline. There are a few use cases where this is important, such as boats, off grid homes, planes, etc. Once Streamie has been started, it can stream cameras without any internet access, but that doesn't help you if Streamie crashes or if you try to start it while offline.
I had mulled over the idea of trying to fully cache all data so that Streamie could somehow cope without an API server connection during startup, but I hadn't made it very far with this.
Finally, it occurred to me that the real solution here is what I've dubbed Streamie Enterprise. It isn't so much about supporting being offline, as it is taking the API server with you. While this isn't as simple a solution as some people might like, it opens up a lot of other doors while also fully supporting offline operation. In short, this idea involves customizing Streamie so that it can be pointed at your own API server (called Penguin), and customizing the API server to work with your own database, your own file storage and maybe your own APNS keys (for push notifications).
There are considerable steps required to get to that point, so don't hold your breath. It is on the todo list though.
Adds
- Adds Local File Server support. Technically this can be used on any platform, but the primary use case should be external disks attached to Macs. Local File Servers are to be used for 24/7 recording. They can be remotely accessed just like SMB file servers. You can now use Streamie on your Mac, to record directly to your Mac, without having to use SMB or MinIO.
- Adds support for specifying a server address association for each account. Account invitation can now also include a server address. This is a baby step towards our future "Streamie Enterprise" product.
- Adds support for exporting a set of camera recordings as a timelapse movie. You can export up to a full day of recordings for a particular camera. Streamie can then save the timelapse movie to your iCloud Photo Album, or you can save it using the Share Sheet, or Streamie can write it out to one or more configured file servers.
Updates
- Updates the Penguin Redirect Service so that it can handle query params when redirecting a request for a account member invite. We need the query params because it'll include an addr
param which is used for Streamie Enterprise.
- Updates the release notes link for v4.14.0.
- Updates the Chinstrap caching mechanism to reduce the chances that a client app will display objects it is not supposed to display. [DV]
Fixes
- Fixes local file server access: we needed to use the URL to read the directory, otherwise we ran into access problems.
- Fixes a video decoder error recovery issue: the streaming session now determines if it should handle restart, or if we're leaving that up to the decoder to handle.
- Fixes an issue with event handling where if there are no active modes, we assume that there are no modes at all, and that we should process the event. Instead, it could be that there are modes, but simply none are active (due to schedules, for instance), and that means we should not process an event action.
- Fixes a remote streaming bug that I introduced about a month ago related to starting video on the server side of the remote stream connection. Ugh.
- Fixes another compatibility issue where UniFi started returning a Double for what we expected to always be an Int. Improves debugging support when parsing UniFi data fails.
- Fixes an error where we were using the default limit of 1,000 when reading keys for the purpose of reading groups, and DV blew past this limit cause groups to seemingly disappear. I bumped it up to 10,000.
- Fixes a crash related to parsing attributes from an SDP.
- Fixes a user interface regression where the "Delay" option was unintentionally removed from the UniFi camera configuration screen.
- Fixes an issue where our move to massive concurrency for applying permissions groups a while ago backfired because a user had too many users, groups, cameras, etc. It is less concurrent now, and we async send an alert to the admin user when the process is complete.
- Fixes a crash related to parsing a date from what is supposed to be a "date dir" but with too few characters in its name.
- Fixes a new Ubiquiti UniFi Protect compatibility issue related to rxBytes
(and possibly some other properties) in a recent Early Access release.
Other
- Improves recording playback with "instant" decoder recovery. Regular sources get gradual decoder recovery.
- Disables incremental data refresh because it is fundamentally incompatible with deletions and permission groups. I was thinking that instead of fromRemote: Bool
we should have an enum with cases: local, incremental, full -- but it isn't clear when each should be used, or if there'd ever be a good time to use incremental. Cache invalidation bites me again. This'll add additional load to the API servers, but, whatever.
- Resolves a crash that occurred because of a UniFi web socket message that was truncated. I don't know if that's because it is a multi-part message or not. I've never seen this crash before. I added support for accumulating messages. I'm thinking that the correct procedure should be just to drop truncated messages. I'll revisit this later.
Created: 1 day ago
Updated: 12 hours ago
Author: Curtis Jones
Topics: File Servers Release Notes Timelapse Enterprise
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.