55

GitHub - hensm/fx_cast: Implementation of the Chrome Sender API (Chromecast) wit...

 5 years ago
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/:

  • dist/app/

    ... contains the bridge binary and manifest with the path pointing that binary. install-manifest copies this manifest to the proper location (or adds its current location to the registry).
  • dist/ext/

    ... contains the unpacked extension.

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.

  • dist/app/

    ... contains the installer package: fx_cast_bridge.(pkg|deb|rpm|exe)
  • dist/ext/

    ... contains the built extension in the format 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 to deb. 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:

fx_cast Netflix fx_cast HTML5


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK