-
-
Notifications
You must be signed in to change notification settings - Fork 67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Chromecast Support #16
Comments
Maybe this would help: https://github.com/react-native-google-cast/react-native-google-cast/ |
For reference: https://forums.expo.io/t/chromecast-support/4699/2 https://expo.canny.io/feature-requests/p/support-for-chromecast Apparently it’s been requested since 2017 with no movement, so we’d have to detach |
Old issue, but are there any current discussions on how to move forward on this? Not having Chromecast support on iOS is probably the only thing keeping me from migrating my users from plex/emby to Jellyfin. If not, what workarounds are available? |
BUMP. This is an important feature, and the only thing keeping me on Plex in absence of a dedicated client app for Raspberry Pi. |
This doesn't need to be bumped. That just adds extra noise and notifications that we have to deal with. Normally you could leave a thumbs up reaction on the top comment, or even upvote the feature request on our dedicated site: We know it is in demand. Thornbill even pinned this just a few hours ago to show that we're aware of it. It's still not possible yet for a variety of reasons that I've shared before on Reddit. I'll find those and post them here some time. |
Hey folks! Really interested in getting this feature figured out. Just a quick note to add to the discussion - it appears when chromecasting from Plex for iOS, it actually initiates a cast via the Plex server's address (127.0.0.1:32400) to the device. Shouldn't Jellyfin be doing the same? The Jellyfin iOS app would ping the Jellyfin server for Chromecast devices, return the list to the iOS device, present them to the user, user chooses one to start the connection, then when content is played it's actually the server that is doing the Chromecasting. I may be completely wrong here, just spitballing, so feel free to disregard. Thoughts? |
@jaredreich Almost, not quite. Say you are in a remote location, away from home. In that case, the server can't necessarily reach those devices on that network to cast ;-) The way casting works (very, very simplified):
|
@anthonylavado thank you very much for the breakdown. Though I must still ask, shall we not implement this feature only because it won't work on an external network? I'd imagine a lot of users are casting at home while on the same network as the Jellyfin server right? Are there other reasons it can't be implemented other than not working from external networks? |
@jaredreich My apologies if that was the impression - there's other technical reasons why it's not there yet. I was just describing how the process works, and why just sending a session from the server isn't enough. I realize I never fully explained the reasons here. This app for iOS is written using a Javascript framework known as Expo. It's a special set of packages and a workflow based around React Native. The good part about Expo is they they make building apps very easy for both iOS and Android. They even take care of the build/compile process for you, so you can create an iOS app without owning a Mac (but you still have to have an Apple Developer Program membership). This is known as the "Managed" process. The downside to Expo is that in most cases, you're limited to using packages and frameworks that they directly support. It's not possible to simply pull in whatever React Native package you'd want. In order to add Chromecast playback, we need to add the Cast SDK in a supported way. One of those packages for React Native is linked towards the top, and I'm sure there's many others. To have Expo include a package, you have to make a feature request, hope it gets their attention/enough votes, and then hopefully they include it. People have been asking for years now (see above again), and it hasn't happened yet. Now you might be thinking - surely there's a way around this, right? Well, there is. The process is known as "ejecting to ExpoKit". This takes everything you've done as an Expo managed project, and converts it to a React Native project that happens to include some Expo modules. This adds a bit more complexity - builds must now be done on the correct platform. For example, the bundle for iOS would have to be compiled on a Mac, instead of just using Expo's servers. Though I have a Mac, I'm not the primary developer. Heck, I'm not really much a developer at all (my expertise is in other areas for Jellyfin, including "management"). My dear friend @thornbill has mostly been working on this from a Linux machine. As it turns out, this year there are some things falling in to place that will make this transition easier, and we are getting closer to a solution, including ejecting and then adding on the modules we need. Hopefully this helped explain it better 😄 Edit: Here's a link from Expo on the different "workflows" - https://docs.expo.io/introduction/managed-vs-bare/ |
Expo just released a proof of concept on getting Chromecast working on Expo projects without having to eject: https://github.com/EvanBacon/prototype-config-plugins/tree/master/packages/react-native-google-cast |
Yes, we got a notification about this since we have voted on the item. We're investigating. Our other beta app, Swiftfin, does have Chromecast support in testing as well. |
Current version of the app has a Chromecast button but it can't find my Chromecast (it only shows my web browser on my computer and the DLNA device for my audio receiver): want a separate bug filed or is this one still tracking the ongoing effort? Edit: filed as #309 |
@edenman Yep, this is still the correct issue. All - We are in the process of updating the Expo SDK we're using and will update if there's any more info to provide. In the meanwhile, if you need Chromecast support, the Swiftfin beta client does have that integrated right now. |
Sounds good. And yeah, Swiftfin just unfortunately doesn't support external playback control jellyfin/Swiftfin#177 so I'm sticking with Emby for the time being. |
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
No updates on this yet. I will make sure to comment here when there is something to report. |
Expo have released Chromecast support! |
Yes they did... kind of. It's not implemented as one of their standard packages, but uses their relatively new "config plugin" system. Using these new plugins requires you to build native code which requires a Mac for iOS. This defeats my whole reason for using Expo which allows me to develop for iOS from my normal Linux computer. Personally I don't see any benefit in using Expo vs standard React Native given this is the direction things seem to be going. Hopefully at some point this year I will pickup a Mac that I am able to develop from and I can move forward with ejecting from Expo to React Native proper. |
I'm not familiar with Expo but is it feasible to develop the Chromecast support locally on Linux and rely on macOS CI/CD machines to build, test and deploy the app? GitHub Actions have a macOS runner but consume minutes at a 10x rate. |
Hey I have a Mac and I'm a dev, I don't have much experience with Expo, but I can help with building and do the testing just need some help to know what I should be looking at. |
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
@thornbill Is there any update on the likelyhood of this? Was very annoying to spend ages setting up my instance to discover my wife cannot cast to any of our TVs. I have a Mac and while have not worked on Expo before, am willling to take a look at how this could be implemented with the |
No. See this comment for details. Using the Expo plugin system would remove my ability to develop for or maintain this app. |
Any update for this? Would love to see Chromecast support in IOS :) |
When will we probably use Chromecast on iOS clients? |
For anyone interested, i am using the "infuse" App on iOS to connect my jellyfin instance and stream to my Chromecast. |
Maybe consider a rewrite in Flutter. I’ve tried it and works well. I see some cast plugins for flutter. Although I have not tried them. |
In addition to having absolutely no personal interest in learning Flutter, rewriting in Flutter solves none of these issues. The main blocker is just that I lack access to a modern Mac to develop on and both ejecting to vanilla React Native or using Expo's native plugin system would require building on a Mac. |
Can you not implement it to stream directly from the server to the chromecast device like plex? @thornbill |
@thornbill im a dev work in RN daily. Have all the tooling. |
@Aireezz I have no idea what Plex does, but that is not how casting typically works. Possibly a plugin could be written to include cast devices as targets for the normal remote control feature but that is different than what this issue covers. |
@thornbill thank you. Just posted on that issue. re chromecast: Do you know how from the client can we get an authenticated url for this stream? |
I'm really amazed this issue has been open 4 years and no one else has ever asked about how this would need to be implemented... 🤣 We would need to write a plugin (similar to the native video player plugin) that gets injected into the webview. The plugin will need to replicate some of the functions available in the normal Chromecast plugin from the web project. Similar to the video player, the plugin will need to post messages to trigger calls to the cast library on the react native side. That at least provides a very high level overview and I'm more than happy to answer any additional questions. |
This comment has been minimized.
This comment has been minimized.
I’ve got a Mac and would be happy to pick this up and try poking it into a PR. I’ve got some small experience with expo apps but never actually published anything myself. Just so I’m clear (since its’s been a bit since this issue is open), as far as it looks right now, is the goal to keep the app in expo or to eject it? |
AirPlay is natively supported, we just need to add the button in the controls in Web.
To make it a more complete client, Chromecast should be added, to finally give iOS users the option of using it.
A quick search shows that we might have to eject and use ExpoKit, so I'm unsure how to proceed.
The text was updated successfully, but these errors were encountered: