Release Notes for v3.14.0 (2023.05.19)

 

Overview

 

Enough procrastinating. In this release I intend to bring stability improvements to the YouTube Live Streaming feature. I’ve allowed myself to be distracted with other, easier, features because the current YouTube Live Streaming implementation is a great proof-of-concept, but there are non-fun architectural challenges that need to be handled for this to become production worthy.

 

Somewhat related, I did some looking around at other streaming platforms. Facebook and Twitch both exclusively use RTMP. I couldn’t find any documentation on Twitter. If I want this live streaming feature to be widely used, I’m going to have to get over my distaste for Flash and implement RTMP. We’ll see.

 

I’m really happy with the changes in this version. The StreamingSession class, which encapsulates all of the various streaming mechanisms, now does a far superior job of managing the various decoding and encoding sessions, as required by whatever the streaming outputs are. Beyond cleaning up the API a bit, nothing much changed for video. Audio on the other hand was completely re-written. I was formerly using a number of AudioToolbox APIs, but that has now all been consolidated into the AudioConverter service. These can be chained together as appropriate to produce the requested output.

 

Lastly, this version closes a bug that’s been reported for some months now, that I have (until now) been unable to track down. The bug involves a streaming session just dismissing, mysteriously. It turns out that I was directly at fault. If an account either had an unread support ticket message, or if an app update was available, Streamie would try to present an alert. A timer dismissed that alert (so that it wouldn’t linger forever), but if the user dismissed the alert (in some cases), or if the alert failed to present (in other cases), the timer would instead dismiss whatever happened to be presented (which was the streamer view). This was all really quite maddening. As soon as I understand the cause, I updated the API server to always report ‘false’ for unread support messages. I implemented a fix in the app and pushed that to App Store review (now we wait…) and then updated the API server to report the correct value (instead of always false), but only if the app version making the API call included the necessary bug fix.

 

Changes

 

- Fixes an issue where if you already had several accounts accessible on one device, and you tried to accept an invite to an account which was not permitted so many accounts per device, you'd be unable to join that account. Now, we'll also take into account the max number of accounts per device that the previous account supported.

- Fixes an issue where if you already had several accounts accessible on one device, and you tried to accept an invite to an account which was not permitted so many accounts per device, you'd be unable to join that account. Now, we'll also take into account the max number of accounts per device that the previous account supported.

- Updates the Streamie Free tier to include 3 cameras and 2 devices.

- Refactors the StreamingSession class, which acts as the hub for all types of streaming sources, to create a simplified and more resilient interface for streaming output. Internally there are four consumers (outlined below). Each consumer registers itself to be a "sink" for a media type (audio, video) with associated parameters (quality, codec). Internally, the streaming session sets up and tears down transcoders as necessary, routing the audio and video appropriately.

- Remote Streaming (original audio, reduced-quality video)

- Camera Recording (original audio, original video)

- YouTube Live Streaming (AAC audio, H.264 video)

- Streamer View / Audio Player (decoded audio, decoded video)

- Stabilizes the YouTube Live Streaming support. This should now work with pretty much any source, including UniFi Protect, Google Nest, ONVIF / RTSP and Built-In cameras.

- Fixes an issue where snapshot, recording sharing would not work on iOS 14, 15, 16; it would crash on iOS 13.

- Adjusts the attached camera snapshot delay from 2 to 4 seconds.

- Adjusts the data rate limits for video encoding so that the YouTube stream will be better quality.

- Fixes a PTZ issue with tvOS where you could not toggle between pan/tilt and zoom because the PTZ View was displayed directly from a UIAlertController, and that needs to have a DispatchQueue.main.async in there when doing the focus update (to let the alert controller dismiss, I guess).

- Fixes a tvOS FocusView issue where the focus would keep on going even after you ended the gesture.

- Adds support for activating promo codes to start free trials without having to contact support for assistance.

 

 

Related Topics

 

Release Notes YouTube

 

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 (but you can also reach us by phone). Download Streamie today. Lastly, Streamie is solar powered!