FCast: Casting Made Open Source
fcast.org
fcast.org
As an aside, I wonder what it will take to get the protocol integrated into browsers? I presume Chrome is a foregone conclusion, but maybe Firefox and/or Brave would be interested in an integration?
Casting video should be simple, straight forward, and open. Glad to see there's projects like this trying to solve this problem rather than leaving it up to advertising firms.
I'm glad we are taking this into our own hands. The programming community is learning that we have to make the software ourselves and also fund it ourselves to have quality software in the future.
1. Grayjay can cast to an FCast receiver
2. There are some terminal clients and a nautilus plugin, but we don't provide binaries (yet). These can be used to cast local media and remote media https://gitlab.com/futo-org/fcast/-/tree/master/client
3. Someone made a yt-dlp client that can cast to FCast: https://git.sr.ht/~shironeko/fcast/tree/yt-dlp/item/clients/...
4. Cloudfstream supports it: https://github.com/recloudstream/cloudstream/blob/master/app...
https://gitlab.com/futo-org/fcast/-/wikis/Protocol-version-1
As you can see the 1.0 protocol is very lean and fits on an A4.
If you want to have an audio-only ESP32 speaker I don't see why it wouldn't be possible with the FCast protocol.
Briefly looked at SoundCloud script js, for the moment it seems to be written to pull frontpage with basic API implementation, correct me if I'm wrong.
https://news.ycombinator.com/item?id=41171060&p=2#41172407
"What Is Matter Casting and How Is It Different From AirPlay or Chromecast?" (2024) https://www.howtogeek.com/what-is-matter-casting-and-how-is-... :
> You can also potentially use the new casting standard to control some of your TV’s functions while casting media on it, a task at which both AirPlay and Chromecast are somewhat limited.
Feature ideas: PIP Picture-in-Picture, The ability to find additional videos and add to a [queue] playlist without stopping the playing video
Some feedback: I would also add dedicated buttons for downloading MacOS and Windows binaries - for typical users gitlab button will be to scary. Website also not clear if there is and SDK for developers (the one that supports also airplay and chromecast) and what languages bindings it supports.
A SLSA Builder or Generator can sign packages and container images with sigstore/cosign.
It's probably also possible to build and sign a repo metadata index with GitHub release attachment URLs and host that on GitHub Pages, but at scale to host releases you need a CDN and release signing keys to sign the repo metadata, and clients that update only when the release attachment signature matches the per-release per-platform key; but the app store does that for you
There also isn't a good open source DLNA server (presumably because of the above issues).
Presumably you still need some kind of media server for the fcast receiver to stream from when playing local media, I assumed that would be dlna based but what is the actual idea here?
Edit: And then there's stuff like Plex and Kodi too with existing servers and clients for numerous platforms. I'm fairly sure I can "share" a URI to the Kodi app on my phone and the Kodi server will stream it. I remember that working well but it's been a while.
I prefer having an app that can save progress and remember what I've already watched. (As a younger person I could recognize a show or movie from a glimpse while surfing. Nowadays I find myself rewatching for several minutes before recognizing the program.)
Instead, I hope to have receivers that the user can install if they wish.
I wish I could use this with local videos.
For local videos with GNOME Nautilus, there is https://gitlab.com/futo-org/fcast/-/tree/master/clients/naut...
In FCast, a "client" is a device or software application that discovers and
communicates with a "receiver".
The client, which can be a terminal client or an Android application, uses
the FCast protocol to send media content to the receiver, such as a TV or
media top box. The client initiates the media streaming by connecting to the
receiver, launching the media, and then the receiver begins playing the media.
Once the media is launched, the client can control the playback, allowing
operations like pause, resume, seek, and volume adjustment.
Seems like basically a client-server relationship, but with the "client" acting as a server and a "receiver" acting as a er... client?But with the "client" being the thing to control the start/stop/etc of the media, which is a weird thing for a server to do.
ie: give me file XYZ
With the FCast project, it seems like the bulk of the transmitted data is from the "client" to the "receiver"?
At least, that's what it sounds like from this description?
The client [...] uses the FCast protocol to send media content
to the receiver, such as a TV or media top box.
Is my reading of this wonky? :)The receiver does not send requests to the client. The receiver is server-like in that it responds to client requests, but it's not like a file server, those responses don't contain media data. Their description could be clearer.
This is not new or novel. See: SMTP