![](/style/images/good.png)
![](/style/images/bad.png)
GitHub - hensm/fx_cast: Implementation of the Chrome Sender API (Chromecast) wit...
source link: https://github.com/hensm/fx_cast
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
fx_cast
Very WIP! Not ready for release. Expect many bugs. Please don't sign builds on AMO with current ID.
Credit:
Supported platforms
- Linux
- macOS
- Windows
Building
Requirements
- NodeJS
- dpkg (for building deb packages)
- rpm (for building rpm packages)
- macOS (for building macOS installer packages)
Installing dependencies
macOS:
brew install dpkg rpm
Debian/Ubuntu:
sudo apt install dpkg rpm
Fedora:
sudo dnf install dpkg rpm-build
Instructions
git clone https://github.com/hensm/fx_cast.git
cd fx_cast
npm install
npm run build
npm run install-manifest
This will build the ext and app, outputting to dist/
:
-
... contains the bridge binary and manifest with the path pointing that binary.dist/app/
install-manifest
copies this manifest to the proper location (or adds its current location to the registry). -
... contains the unpacked extension.dist/ext/
Watching ext changes:
npm run watch --prefix ./ext
Launch Firefox and auto-reload on rebuild (run in separate terminal):
npm run start --prefix ./ext
Packaging
Packaging currently only possible for macOS/Linux. macOS packages can only be created on macOS, Linux .deb/.rpm packages can be built on any platform with dpkg-deb
and rpmbuild
binaries.
-
... contains the installer package:dist/app/
fx_cast_bridge.(pkg|deb|rpm|exe)
-
... contains the built extension in the formatdist/ext/
fx_cast-<version>.zip
.
Build and package app and extension for current platform:
npm run package
Build and package app for linux platforms:
npm run package --prefix ./app -- --platform=linux --packageType=deb npm run package --prefix ./app -- --platform=linux --packageType=rpm
Package script arguments
--platform
"win"
,"mac"
,"linux"
Select the platform to build for.--packageType
"deb"
,"rpm"
Select the package type. Defaults todeb
. Only relevant when building for Linux.
Testing
Testing requires geckodriver (or chromedriver for Chrome parity testing). See selenium-webdriver installation instructions (ignore npm install
).
Test results will be displayed within the opened browser tab.
npm run build --prefix ./app npm run install-manifest npm run package --prefix ./ext npm test SELENIUM_BROWSER=chrome npm test
Usage
Extension can be loaded from about:debugging
as a temporary extension.
Most sites won't load the cast API unless the browser presents itself as Chrome. The extension includes a method of spoofing the user agent string, sites can be whitelisted via the options page. Whitelist entries are specified as match patterns. To whitelist all sites, add <all_urls>
to the whitelist, though this could cause breakage on random sites.
HTML5 media elements have a "Cast..." context menu item that triggers a sender application. Only works on remote (non-local) media that isn't DRM-encumbered.
Cast-enabled websites will load the sender API shim and display a cast button as in Chrome, provided there are no bugs/incompatibilities with the shim.
Video Demos
Netflix / HTML5:
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK