return to table of content

FCast: Casting Made Open Source

riedel
11 replies
2d22h

Why not use straight UPnP (DLNA). Tons of open source there. The only problem was standardising codecs (also related to the Chromecast spinoff)

IshKebab
4 replies
2d10h

UPnP/DLNA seems to be a bit of a disaster protocol wise. As you say the codec support is "eh whatever" which means whether it works or not depends on too many random factors. It's also a massively over-complicated design-by-committee relic.

There also isn't a good open source DLNA server (presumably because of the above issues).

nsteel
3 replies
2d9h

That's actually pretty fair. I was ready to jump in and say that miniDLNA is such a server but having looking I see it's actually been unmaintained for 10+ years! It has worked pretty well for me but I think I must have just gotten everything in the right formats years ago so I don't notice the issues I see reported now (I used to just restart it to avoid the notify 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?

nsteel
1 replies
2d6h

Oh, that's great, thanks. I didn't realise it changed its name to ReadyMedia.

JonChesterfield
0 replies
2d

You're not alone. apt install minidlna didn't work so I assumed it was dead. Just learned of the rename from your comment.

brnt
3 replies
2d6h

I don't know that you can 'cast' using DLNA. Live streams and such.

nsteel
2 replies
1d22h

I think it depends on the server. I believe serviio supports it. Mediatomb supposedly could (another project I thought was dead but turns out has been reborn under the 'Gerbera' name!). They transcode the original stream into something that a dumb DLNA renderer (i.e. your TV) supports.

brnt
1 replies
1d4h

How do they work with encrypted streams though (because aren't they all)?

nsteel
0 replies
22h41m

They work for simple online radio streams etc.

paulryanrogers
0 replies
2d1h

DLNA is okay if the receiver supported the codecs well enough to avoid playback stalling. Though it lacks search and dashboard features.

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.)

nsteel
0 replies
2d10h

Yes, 100% this is what I've ended up doing. There's existing support on a lot of platforms for DLNA and if you're really lucky, it works. I'd be interested in hearing what the advantages of something like this is.

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.

oezi
5 replies
4d22h

I wonder what is their ecosystem play? Why would Netflix implement this in their app? Why would any TV manufacturer?

koen31
4 replies
2d22h

I am not counting on anybody to implement this on their TV. We don't have big budgets to pay TV manufacturers to put FCast receivers inside.

Instead, I hope to have receivers that the user can install if they wish.

oezi
2 replies
2d9h

I am more troubled by how you want to get the Cast button into Netflix, YouTube, etc.

koen31
1 replies
2d8h

I am not counting on this to happen quickly if at all. Though if FCast is the thing everyone has access to (regardless of Apple TV, Fire TV, Android TV, etc) then maybe eventually it will happen. If you have a raspberry pi, and old computer or an old phone you aren't using, you can easily convert it into a FCast receiver. Doing the same with Chromecast is more tricky since the protocol is more extensive and most clients verify the certificates of the casting device to be authorized by Google.

JonChesterfield
0 replies
2d

Jellyfin exists on various hardware as an optional install so it seems likely FCast would work on that distribution model.

koen31
15 replies
2d22h

FCast engineer here. Look forward to FCast receivers on platforms like AppleTV, Roku, Tizen (Samsung), WebOS (LG).

viernullvier
2 replies
1d20h

Would it be possible (in theory) to build a receiver on an embedded platform, for instance an audio-only ESP32 speaker, or is there something in the protocol that requires a more powerful device?

koen31
1 replies
1d10h

The protocol has been designed by taking the commonalities between all different casting protocols like AirPlay and Chromecast as a base. This is what has been used to make version 1.0. I tried making it as simple as possible and low effort to implement.

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.

beagle3
0 replies
1h50m

For multiple speakers/screens, some kind of guarantee or description about the precision of the update callback would make it possible to synchronize multiple speakers and screens.

teruakohatu
2 replies
2d12h

Are any efforts being made to incorporate this into VLC? Both as a receiver and caster?

koen31
0 replies
2d9h

Not ongoing but certainly something I am open to.

mintplant
1 replies
2d2h

The site talks about setting up a receiver, but I can't figure out how I would cast something to an FCast receiver, or what is currently available to cast.

koen31
0 replies
1d10h

We will do a better job explaining this soon and also provide binaries. For now there are a few possibilities:

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...

grepexdev
1 replies
2d14h

Will there be a receiver for Fire TV too?

akvadrako
1 replies
2d8h

What about as a Kodi plugin?

junon
0 replies
2d11h

Question, is it named after the sites?

cobalt60
0 replies
2d6h

Any road map for Bandcamp and SoundCloud (logged in) support.

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.

brnt
0 replies
2d6h

Thanks for taking this effort, I hope it takes off!

justinclift
7 replies
4d4h

Seems to use confusing terminology?

  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.

nsteel
3 replies
3d8h

What in the above makes you think that? The receiver is the "server". Playback happens on the "server" (just like mpd, if that helps).

justinclift
2 replies
3d7h

In a more normal client-server architecture, initial requests are sent to a server, which then responds with the requesting data.

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? :)

nsteel
0 replies
3d6h

The client provides a pointer (usually a URI but I think they also support playlists) of what to play. The receiver then requests the actual content directly from that URI and plays it. I guess it sends some kind of ok/fail response back to the client when it's done that.

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.

bastawhiz
0 replies
2d23h

the bulk of the transmitted data is from the "client" to the "receiver"?

This is not new or novel. See: SMTP

zigzag312
1 replies
2d11h

Media provider and controller might be less confusing terms.

justinclift
0 replies
1d8h

Thanks, that is helpful. :)

riedel
0 replies
2d22h

Speaking of terminology. I open the discussion because I thought the title was about the manufacturing process (casting with a mold).

westurner
4 replies
2d14h

How does FCast differ from Matter Casting?

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

koen31
3 replies
2d9h

Instead of waiting, hoping that big companies will implement the standard. Just make it as easy as possible to adopt by having receivers for all platforms and making client libraries that can cast to AirPlay, Chromecast, FCast and others seamlessly.

pzo
2 replies
2d8h

Doest current app support AirPlay and Chromecast as different receivers/backends? Websites doesn't mention anything about it. Is there any plan also for iOS app?

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.

westurner
0 replies
2d

GitHub has package repos for hosting package downloads.

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

koen31
0 replies
1d10h

The plan is that the FCast SDK will eventually allow you to cast (with a reduced feature set compared to FCast) to Chromecast, Airplay and others. Improving the download experience for users for sure is something we will look at.

_volatile
4 replies
5d2h

Is it currently usable in anything other than GrayJay?

I wish I could use this with local videos.

qmarchi
0 replies
4d23h

Thus far, nope.

zigzag312
2 replies
2d11h

I'm not a native English speaker, but FreeCast would be better, more meaningful name in my opinion.

zigzag312
0 replies
2d7h

Oh, that's unfortunate. Thanks for pointing that out.

dblitt
2 replies
5d5h

Could this end up on an embedded smart tv device, like a Roku?

koen31
0 replies
2d22h

FCast engineer here. Yes it will come to Roku.

throwaway81523
1 replies
1d13h

I've used Icecast before. It worked great. Is Fcast better somehow?

koen31
0 replies
1d10h

Had not heard of Icecast before, but it doesn't look like they have the same aim of having receivers on every platform (AppleTV, Roku, TizenOS, Android, Linux, MacOS, Windows, ...)

ravenstine
1 replies
3d

Now we're talking! The experience of casting has recently become a bigger headache for me than ever. Last month, I made a comment on HN about how the original Chromecast was great and that I'm disappointed in the state of the current Chromecast devices; a lot of people seem to agree with this. I've also had trouble with Airplay since streaming from Quicktime seems to only support h264, and even that hasn't really worked for me even though my 1st gen Chromecast worked great before my TCL television fried it.

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.

ilrwbwrkhv
0 replies
2d10h

I swear like all of these things used to be so much better and if given a chance large companies will make it worse.

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.

r-w
1 replies
2d15h

This project comes from FUTO, which is now making a name for itself by releasing and maintaining OSS alternatives like this, as well as sponsoring development of other OSS options. I personally first came across them when Louis Rossmann announced his affiliation. Very excited to see where this goes!

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?