hensm / fx_cast Goto Github PK
View Code? Open in Web Editor NEWChromecast Web Sender SDK implementation for Firefox
Home Page: https://hensm.github.io/fx_cast/
License: MIT License
Chromecast Web Sender SDK implementation for Firefox
Home Page: https://hensm.github.io/fx_cast/
License: MIT License
Implement controls for existing sessions. Should be able to view existing session status, play, pause, adjust volume and seek.
chrome.cast.addReceiverActionListener
chrome.cast.precache
chrome.cast.removeReceiverActionListener
chrome.cast.requestSessionById
chrome.cast.setCustomReceivers
chrome.cast.setPageContext
chrome.cast.setReceiverDisplayStatus
chrome.cast.Session#addMediaListener
chrome.cast.Session#removeMediaListener
chrome.cast.Session#queueLoad
chrome.cast.media.Media#editTracksInfo
chrome.cast.media.Media#getEstimatedBreakClipTime
chrome.cast.media.Media#getEstimatedBreakTime
chrome.cast.media.Media#getEstimatedLiveSeekableRange
chrome.cast.media.Media#queueAppendItem
chrome.cast.media.Media#queueInsertItems
chrome.cast.media.Media#queueJumpToItem
chrome.cast.media.Media#queueMoveItemToNewIndex
chrome.cast.media.Media#queueNext
chrome.cast.media.Media#queuePrev
chrome.cast.media.Media#queueRemoveItem
chrome.cast.media.Media#queueReorderItems
chrome.cast.media.Media#queueSetRepeatMode
chrome.cast.media.Media#queueUpdateItems
chrome.cast.media.Media#supportsCommand
Provide support for DIAL 1st screen apps.
When the *.deb package is installed, if the user does ANYTHING with apt/dpkg through the command line, dkpg throws this error:
dpkg-query: warning: parsing file '/var/lib/dpkg/status' near line 53457 package 'fx-cast-bridge':
missing maintainer
If the *.deb package is built using some sort of helper tool such as Debreate then this should be easy to fix. If this is being built in a more manual method then it may be more involved.
Best way to distribute?
I installed the bridge, as well as the extension. But it never seems able to actually cast. No cast button appears on any media, and trying to use the toolbar button never populates the list of chromecast devices, nor can I ever enable casting.
I tried fiddling with the various addon options but nothing seems to help. What am I doing wrong?
Additional data to pass at init:
popupCastButtonLabel
: ReceiverView cast buttonsextensionName
: May as well use as window title for consistencyExpand test suite
Could we get an actual icon for the extension? Possibly even with the letter Beta on it to show that it's in beta status.
Not really "critical", but it would be nice to have a actual icon.
Technically there should be four modes:
A Unavailable: While Cast receivers are not available, the Cast button does not appear. (Probably easier to make the icon red or with an X instead of the cast waves. Useful to show that there is nothing to cast to.)
B Disconnected: While Cast receivers are available, the Cast button appears. (Normal default behavior, probably all we really need right now.)
C Connecting: While the Cast receiver is connecting, the Cast button animates the waves in the icon progressively. (Not essential at this stage but should be planned for)
D Connected: While this app is connected to the Cast receiver, its Cast button appears with a filled frame shape. (Again not required at this stage but should be planned for)
The Chrome/Android/iOS sender API libraries implement device authentication to prevent unauthorised cast devices, but fx_cast can run chrome sender apps without the authentication opening up the possibility of creating a custom generic Chromecast emulator without app-specific workarounds.
When the user agent whitelist is enabled, the user agent applied to YouTube is deemed incompatible with YouTube's "New Look," as determined by the page youtube.com/new.
While it doesn't harm actual casting functionality, it is a bit annoying to not be able to use dark mode on YouTube.
The match pattern I applied for YouTube is https://www.youtube.com/*
.
This issue does not persist if the whitelist is disabled.
In case it helps, Firefox v67.0.1 w/ extension, bridge v0.0.3.
Fix to work with castv2/protobuf.
fx_cast/app/rollup/rollup.config.js
Lines 12 to 13 in b43f6e4
I'm not sure if this is because SmartScreen tried to block the .exe but the installer doesn't automatically try to run as administrator, which makes the install fail since it doesn't have the permissions to write the files to the Program Files directory. Manually running the .exe as admin works fine though.
Suggested fix: "sudo apt install dpkg rpm makensis" -> "sudo apt install dpkg rpm nsis"
Within the Debian/Ubuntu installation guide section.
Error below:
par@parcar-LG-Laptop:~/Downloads$ sudo apt install dpkg rpm makensis
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package makensis
par@parcar-LG-Laptop:~/Downloads$ makensis
The program 'makensis' is currently not installed. You can install it by typing:
sudo apt install nsis
par@parcar-LG-Laptop:~/Downloads$ sudo apt-get install dpkg rpm nsis
Reading package lists... Done
...
0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
Add a way to disconnect / stop casting button / option so when we are done we can stop sharing.
Normally, when casting from an Android App or Chromium-based browser, a notification pops up on any Android smartphone or tablet on the same Wi-Fi as the device that is casting. FX_Cast is not doing this.
If you could add this in it would be great, to help with controlling casting. It would also provide an easier (for the end user at least), temporary work around to Issue #50 . Otherwise, users have to have the Google Home app installed and go through that to end the casting. And even then, it only works if the device is linked somehow to your account. So doing at least this for the time being would be greatly appreciated!
This is on the latest release of the FX_Cast app and extension.
Ahoi!
Great work! I would like to wire some thank-you dimes somewhere :)
When casting a video, audio is not being played on the device being cast to. Same issue on YouTube, Netflix, and VRV. Others may potentially have that issue as well. This may also be a Linux specific issue. Unsure about that part.
Right now the extension is looking for the bridge under /opt/fx_cast/
but inside a snap, Firefox is unable to read such directory.
Under Linux, when /opt/fx_cast/bridge
fails to be found, could it be possible to look for the bridge under a user-owned directory (like $HOME, for example)? Maybe a symlink could make the trick in such case.
Give the user the option to indicate the path under which the bridge is located.
I'm not by any means a Linux nor a Firefox extensions expert. But I'd like to try fx_cast without giving away the option of using Firefox as a snap (I like it to has limited access to my system).
Re #4
Options:
Can cause long delay between user action and popup opening before any serviceUp
events.
Hi,
I want to help with translating the extension into spanish. I'm part of the es-CL localization team from Firefox.
Can I send a PR?
Thanks
Message passing between the different destinations is fragile and difficult to understand.
Destinations:
Need some way to handle this cleanly. Possibly a separate library or util class that allows for registering a destination with a callback for sending messages. Needs to provide a message handler function to be called from runtime.onMessage
/ port.onMessage
.
Should also document existing messages and order in which they're sent during initialization.
I'm using version 0.0.3, trying to cast YouTube to a Fire TV stick with AirPlay&UPnP app.
This app support miracast, chromecast, airplay and other services and works fine normally.
Just when I try to cast with fx_cast I get an error on the Fire TV stick that the app isn't supported.
Do you think you could take a look at it?
I cant seem to get the thing to work atm and i cant find how to uninstall it to try again.
Currently the receiver selector does not allow (or ignores) changes to the media type once opened. Instead, it should cancel session requests if launched from a sender app and initialize an alternate sender for screen sharing or vice versa.
Fails to fetch updates with default CSP in production mode.
Embedded iframe players or scripts on CDN domains won’t inherit the user agent string that the main page has and won’t load the cast API.
webRequest.onBeforeSendHeaders
listener can get document URL, but the current request filter only allows for the listener to be called on URLs matching the whitelist match patterns.
Check performance on expanded filter vs temporary additional listeners, if at all significant.
It cannot be installed in Firefox 60.6, opensuse. It says it is incompatible.
Provide context menu items to construct match patterns for sites to add to the whitelist
Example:
with https://www.example.com/some/directory/with?a=file
https://www.example.com/*
(Recommended)https://www.example.com/some/directory/with?a=file
https://www.example.com/some/directory/with*
https://www.example.com/some/directory/*
https://www.example.com/some/*
*://www.example.com/*
*://*.example.com/*
Support for Firefox on macOS.
I installed fx_cast_bridge-0.0.3-x64.exe too. https://imgur.com/Ai4NR3Y
The media sender currently casts to a receiver and then uses the local player for playback control. Video downloads on both. Downside of this is increased bandwidth, though syncing the player state allows for audio playback on the sender device with video playback on the receiver.
Host a site at https://hensm.github.io/fx_cast
Create an HTTP server in the native app to stream local media files to the receiver.
Regression introduced in #70
Like Chrome, should default media source to any initialized sender apps when casting without using in-page cast buttons.
When installing as described in the README
Transaction check error: package fx_cast_bridge-0.0.1-1.x86_64 is intended for a different operating system
I don't find any way to remove the bridge in macOS.
Either a separate button or an <option>
that triggers a file picker dialog. Will need to change the way media casting is triggered since there's no calling page for the cast API, either allowing cast API to be called from privileged contexts or making a new interface to the bridge.
Should forward any subtitles defined as <track>
elements to the MediaInfo passed as part of the media load request.
For local media, should try to detect if there are subtitles present in the same directory and convert if necessary (from SRT to WebVTT).
When casting on Wi-Fi latency is extremely high (about 2 seconds). This of course will vary with internet speeds, but with the internet speeds I deal with, normal latency when casting from Android or a Chromium-based browser is usually below a quarter of a second. Issue found on YouTube, VRV, and Netflix.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.