The overlords at Google blessed me with verification so that you folks can try out the Streamie YouTube Live Streaming integration. With some 3rd party testing, I was able to nail down some authorization issues (all related to the Apple TV integration). You can watch a tutorial video here and read about how it all works here.
I recently did a thing at home that lead to some new Streamie features. I bought a bird feeder, dug a 2ft deep post hole, chopped down a dying pine tree, grabbed a 10ft section of the tree and planted it into the post hole, affixed the bird feeder, affixed a perch, and zoomed in my 20x PTZ camera on it. The camera refused to auto-focus on the bird feeder and instead only wanted to focus on the grass in the background. So, I delved into the ONVIF Imaging Services Specification and added manual focus support. But, I also have a deer feeder and folks have been bugging me to add a bird bath, so I went looking at the ONVIF PTZ Services Specification and added Presets support (get a list of them, and go to a preset). It’s all tied into the app so that instead of activating manual PTZ controls, you can (optionally) jump to a named preset. I should have done all of this ages ago, but as with most things, I need some necessity to drive my motivation.
A number of new crashes (all the same crash really, just produced in various screens) related to the UI refactor have been resolved.
As always, you can join the TestFlight beta group here.
- Write YouTube Live Streaming MPEG-DASH blog post
- When deleting a Camera, Group, Module, Smart Device, File Server, also delete any associated permissions for that object from any Permissions Groups.
- Google Verification for YouTube Live Streaming changes:
- Replaced the sign-in with Google button with a button that just says "YouTube" (somehow the user is supposed to know what that does)
- Updates the Redirect service removing scopes that aren't necessary.
- Fixes issues related to performing YouTube OAuth Authorization on Apple TV
- Fixes a server-side issue where you could not perform YouTube authorization on the Apple TV because we were limiting authorization requests to just GoogleNest integration types.
- Adds the PenguinIntegration.Service type to the push notification following successful authorization when using an Apple TV, because otherwise the Apple TV just tries to resolve the GoogleNest authorization screen, which isn't always the correct move.
- Improves the error handling when starting a YouTube Live Stream: if starting fails, then the StreamToMe session is closed, the YouTubeService instance is removed and the error is displayed to the user.
- Adds a YouTube-specific sign-in image to the Authorize button in the YouTube Integration.
- The CMCVideoToolboxDecoder class can have "back logs" associated with waiting on the decoder, and with waiting on sinks. In either case, the memory from the back logs is not expunged when the problem becomes critical because DispatchQueue is managing that. I've transitioned from DispatchQueue to CMCTaskScheduler and added a new purge() function so that when we hit the back log limit, we can immediately purge all pending tasks. This also simplifies a lot of stuff associated with knowing when to skip old queued tasks (since they're gone).
- Fixes a crash that would occur if the tapped-on item was out of bounds. I believe this can happen as the screen reloads when the user interacts with it, particularly when an animation delay is employed. This same crash occurred on multiple screens, so I'm trying a fix on the BaseScreenViewController level.
- Fixes an issue in the Home-Member screen where the Device Offline Alerting toggle button would actually toggle the Stop Offscreen Cameras feature.
- Updates the setup instructions in the Welcome pages that are printed out and included with camera purchases, to reflect the updated app UI. Whoops.
- Fixes a long-standing Markdown rendering issue (both for UIKit and HTML) where some attributes in a paragraph could be ignored.
- Improves the mechanism that establishes a "channel" between two Streamie devices to perform remote streaming. Specifically, if the request times out, the client gives up, but the server may eventually succeed, and then the client gets pummeled with a stream it no longer cares about. This generic mechanism allows the client to report the channel as closed, which'll result in an error when whatever code is feeding the channel attempts to send data.
- Adds manual focus support with a horizontal pan gesture on iOS. On tvOS it uses the same vertical volume control. Based on limited testing, the manual focus behavior of each camera varies quite significantly. Please report any focus issues and the camera make/model.
- Improves the display layer so that if frames with a past presentation time are queued for display, we'll adjust the start-time offset accordingly so that the past presentation time becomes current. This is mainly an issue when a reconnect happens and time continuity is lost. I could endeavor to provide that continuity, but that'd be a whack-a-mole situation vs solving the problem once at the point where it really matters.
- Possible fix for an RTSP streaming related crash in handleRtpChunkVideo(), which is maybe related to a force-unwrap if somehow the video setup had not yet succeeded by the time we were processing video frames. I dunno.
- Adds PTZ Preset support. If your ONVIF-compatible camera lets you define PTZ presets, Streamie can query the camera for them and will present those options to you when you access a camera's PTZ controls. The PTZ manual controls are, of course, still available as well (and by default, if there are not PTZ presets available).
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!