Interesting approach using AVFoundation for the video playback. I've worked with streaming video on macOS and found that AVPlayer can be quite memory-hungry when handling multiple streams. Have you considered using VLCKit instead? In our testing, VLCKit used about 40% less memory and handled network interruptions more gracefully.

One potential enhancement would be to add support for adaptive bitrate streaming (HLS/DASH). Most live streams nowadays offer multiple quality levels, and automatically switching based on available bandwidth/CPU makes a big difference in reliability. The AVPlayerItem.preferredPeakBitRate property gives you basic control, but implementing a full ABR solution with VLCKit gives much finer-grained control over quality transitions.

Also curious about your strategy for handling screen sleep/wake cycles. We found that AVPlayer instances sometimes get stuck in a bad state after sleep, requiring a full teardown and reinit. Using notification observers for NSWorkspaceDidWakeNotification helped catch and recover from these cases.