Release Notes for v3.17.0 (2023.11.01)




Overlays is the newest feature. A module can be rendered and then composited onto a video stream. To get started, create a new “Message” type Module with some text. Don’t add a background. Start streaming a camera then choose “Overlays” and select your new module. The content is overlayed on the camera, composited into each video frame. If you share this camera, or stream it to YouTube, your viewers will see it with the overlay. But, maybe you don’t want the content right in the center.


Download this simple json file. It presents a text box at the bottom of the screen and a background image. Edit the file and save it to an HTTP-accessible location. Create a new Custom module with the URL to your json file.


Or maybe you want some dynamic content, like a clock. Create a new Clock module. You’ll notice it has a URL to a json file. Save that json as before, edit it, and replace the URL in your Clock module. Now you’ve got a clock overlayed on your video.


Hikvision PCM Audio


A user recently installed a shiny, new Hikvision PTZ camera. For reasons unknown, Hikvision doesn’t support AAC audio, instead using MP2L2 for its high quality option. Apple’s AudioToolbox does not have decoding support for MP2L2, and the only non-GPL option available to me requires a commercial license, which I can’t quite justify. But, there’s this “PCM” audio option as well. This is distinct from the G.711a/mu options, and it’ll sample as high as 48kHz. Seems like a winning option!


But it didn’t work in Streamie. I had assumed that “PCM” was just Hikvision’s label for the “L16” audio codec that the RTP spec includes. Alas, not so much. But, if it is PCM audio as the name suggests, then it’s just a matter of figuring out the specs for it, and it should be playable. It turns out that the only difference between Hikvision’s “PCM” and RTP’s “L16” is that the former is little-endian while the latter is big-endian. They’re both 16-bit, mono, signed, etc; they just (literally) flipped the bits. So, yeah, Streamie will now recognize, play, record, transcode, etc., this non-standard audio stream found in Hikvision cameras.




- Fixes a bug related to the Camera List Screen, where if you just go back instead of making a selection, the video decoders are never signaled to resume, so all you see is just key frames. There's now a hook on the screen disappearing, to cancel the resolver (if it hasn't already been fulfilled). I think this bug must have been in place for months or perhaps a lot longer.

- When remotely managing a Streamie device, the Control requests used the default timeout (7 seconds) which isn't enough time for some commands (like refresh everything), so I've doubled this timeout.

- Makes some improvements to the post-purchase "thank you" text with instructions that are more clear about how to activate one's purchase.

- Adds a new feature, Streaming Overlays, which lets you take a module (like a message or whatever) and overlay it on a video stream. The module is composited onto each video frame in most circumstances. The compositing occurs when video frames are received from the decoder, so if a sink wants the original data from a streaming session, that just passes the still encoded video frames (without any compositing taking place). I haven't yet decided if this is the right behavior, but it is the easy behavior.

- Fixes an alert menu issue when tapping on the Options menu of any Screen, which if it is followed up by a 2nd alert menu, would never appear because the 2nd alert, I guess, is prevented from appearing because the 1st alert has not yet stopped presenting.

- Replaces the old Camera List Screen (used for selecting cameras, modules in various contexts) with the Source List Screen (since it's not just cameras), which has much better defined behavior.

- Updates various 3rd party libraries.

- Adds a "Connections" section to the Member screen so that you can see which socket connections Streamie has open. This is just Chinstrap connections (API server and remote streams) at the moment, but should eventually include RTSP / WebRTC / etc.

- Adds support for Hikvision's "PCM" audio format (called "HPCM" in Streamie), which is a 16-bit, mono, little-endian linear PCM audio stream. The only difference between this non-standard audio codec and the "L16" audio codec that's a part of the RTP spec, is that L16 is big-endian and Hikvision's "PCM" is little-endian. Why bother not just adhering to the spec?

- When remote streaming, we previously preferred connection reuse (if possible), before creating a new connection, but it seemed as though running multiple streams across one TCP socket didn't really work as well as I had hoped, so now we open a new connection for each remote stream. Since we're not reusing connections any longer, that means that we can concurrently open remote streams (concurrency is 3 at the moment), so ultimately this is a bit faster in some situations. Old, idle connections are cleaned up after several minutes of inactivity.

- Updates the Group Edit functionality so that it always pulls from the server first.

- Fixes some sort of serial queue deadlock issue in ChinstrapStreamingSession that was sometimes preventing reconnections. Hopefully fixes....

- Fixes a Ubiquiti UDM authentication issue where the formerly required "x-csrf-token" is apparently no longer provided or required (in the Early Access release), so we'll use it if we get one, and we'll proceed happily without it.

- Fixes an issue where, after switching accounts, the navigation is supposed to pop back to the main home screen, but I guess at some point I broke that, which is weird. It's fixed now.

- When streaming a group, first read it from the cache to make sure we have a recent version.

- Fixes a remote streaming audio issue that occurs when the stream is already running and the audio format arrives before the producer is added to the router. This has been fixed in play-v1 and play-v2 for both Penguin (relay) and Streamie (direct) connections. This bug has been here for a long while. Whoops.

- Fixes a Streaming Session issue related to HPCM audio streams, where we would try to HPCM ==> L16 before (for instance) converting to AAC, which was unnecessary and didn't actually work.

- Fixes a tvOS main thread issue that we had already fixed for iOS, but failed to copy over, where we needed to DispatchQueue.main.async() before loading the camera profiles. Whoops.



Related Topics


Modules 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!