mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-08 08:39:59 +00:00
628 lines
36 KiB
HTML
Executable File
628 lines
36 KiB
HTML
Executable File
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta
|
||
name="description"
|
||
content="A browser extension that enables Chromecast support for casting web apps (like YouTube, Netflix or BBC iPlayer)."
|
||
/>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
|
||
<title>fx_cast: Chromecast for Firefox</title>
|
||
|
||
<link rel="stylesheet" href="fonts/stylesheet.css" />
|
||
<link rel="stylesheet" href="photon-colors.css" />
|
||
<link rel="stylesheet" href="photon.css" />
|
||
<link rel="stylesheet" href="index.css" />
|
||
|
||
<link rel="icon" type="image/svg+xml" href="favicon.svg" sizes="any" />
|
||
<link rel="icon" type="image/png" href="favicon-16.png" sizes="16x16" />
|
||
<link rel="icon" type="image/png" href="favicon-32.png" sizes="32x32" />
|
||
|
||
<script src="index.js" defer></script>
|
||
</head>
|
||
<body>
|
||
<div class="container">
|
||
<div class="page-width">
|
||
<header class="site-header">
|
||
<h1 class="site-header__title">fx_cast</h1>
|
||
<p class="site-header__subtitle">
|
||
Chromecast <nobr>for Firefox</nobr>
|
||
</p>
|
||
</header>
|
||
</div>
|
||
<main class="site-content">
|
||
<div class="page-width">
|
||
<section class="entry">
|
||
<div>
|
||
<div class="description">
|
||
<p>
|
||
A Firefox extension that enables Chromecast
|
||
support for casting web apps (like YouTube,
|
||
Netflix or BBC iPlayer) and HTML5 media.
|
||
</p>
|
||
<p class="disclaimer">
|
||
Requires a companion bridge application to
|
||
connect with receiver devices. Currently
|
||
supported on Windows, macOS and Linux.
|
||
</p>
|
||
<p class="disclaimer disclaimer--warning">
|
||
The current v0.x.x releases are incomplete
|
||
and may be unstable.
|
||
</p>
|
||
</div>
|
||
<div class="download">
|
||
<h2 hidden>Downloads</h2>
|
||
<a
|
||
class="download__ext button button--puffy button--primary"
|
||
title="No available download found"
|
||
disabled
|
||
>
|
||
Firefox Extension
|
||
</a>
|
||
<div class="download__bridge-primary"></div>
|
||
<details class="download__bridge-all">
|
||
<summary>Other bridge downloads</summary>
|
||
<div class="download__bridge-list"></div>
|
||
</details>
|
||
</div>
|
||
</div>
|
||
<picture class="preview">
|
||
<source
|
||
type="image/webp"
|
||
srcset="images/preview.webp"
|
||
/>
|
||
<source
|
||
type="image/png"
|
||
srcset="images/preview.png"
|
||
/>
|
||
|
||
<img
|
||
alt="Screenshot, receiver selector popup."
|
||
width="512"
|
||
src="images/preview.png"
|
||
/>
|
||
</picture>
|
||
</section>
|
||
</div>
|
||
<section class="faqs">
|
||
<div class="page-width">
|
||
<h2>FAQs</h2>
|
||
<ul class="faqs__list">
|
||
<li class="faqs__list-item">
|
||
<details class="faq" open>
|
||
<summary class="faq__summary">
|
||
<h3>How do I cast something?</h3>
|
||
</summary>
|
||
<div class="faq__content">
|
||
<picture style="float: right">
|
||
<source
|
||
type="image/webp"
|
||
srcset="images/menu.webp"
|
||
/>
|
||
<source
|
||
type="image/png"
|
||
srcset="images/menu.png"
|
||
/>
|
||
|
||
<img
|
||
alt="Screenshot, media context menu."
|
||
src="images/menu.png"
|
||
width="270"
|
||
/>
|
||
</picture>
|
||
<h4>Sites with Chromecast support</h4>
|
||
<p>
|
||
For sites with built-in Chromecast
|
||
support, the site must be added to
|
||
the whitelist to get the cast
|
||
button to appear. You can easily
|
||
add a site to the whitelist from
|
||
the toolbar button context menu.
|
||
</p>
|
||
<p>
|
||
Once whitelisted, reload the page
|
||
and click the cast button in the
|
||
player controls to start casting.
|
||
</p>
|
||
<p class="disclaimer">
|
||
Not all sites are well-supported and
|
||
you may encounter issues.
|
||
<a href="#Why_doesn't_𝑥_site_work?"
|
||
>See below</a
|
||
>, for more info.
|
||
</p>
|
||
<h4>HTML5 Media</h4>
|
||
<p>
|
||
For certain types of media, there is
|
||
a "Cast..." menu item in the browser
|
||
context menu for the media player
|
||
(if the player has a custom context
|
||
menu, try shift-clicking to bring up
|
||
the browser context menu).
|
||
</p>
|
||
<p>
|
||
This may not be visible depending on
|
||
whether the media is
|
||
<a
|
||
href="#Why_can't_I_cast_DRM-encumbered_media?"
|
||
>DRM-encumbered</a
|
||
>
|
||
or has a network-accessible URL to
|
||
send to the Chromecast device.
|
||
</p>
|
||
<div style="clear: right"></div>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
<li class="faqs__list-item">
|
||
<details class="faq">
|
||
<summary class="faq__summary">
|
||
<h3>Why do I need the bridge?</h3>
|
||
</summary>
|
||
<div class="faq__content">
|
||
<p>
|
||
API limitations. Chromecast device
|
||
discovery requires an mDNS/DNS-SD
|
||
implementation, something which
|
||
isn't provided by (or possible with)
|
||
WebExtension APIs. Communicating
|
||
with Chromecast devices require
|
||
making TCP connections, which is
|
||
also not possible.
|
||
</p>
|
||
<p>Relevant Firefox bugs:</p>
|
||
<ul>
|
||
<li>
|
||
<a
|
||
href="https://bugzilla.mozilla.org/show_bug.cgi?id=1247628"
|
||
>bug 1247628 — Enable "TCP
|
||
and UDP Socket API" for
|
||
WebExtensions</a
|
||
>
|
||
</li>
|
||
<li>
|
||
<a
|
||
href="https://bugzilla.mozilla.org/show_bug.cgi?id=1461830"
|
||
>bug 1461830 — [experimental
|
||
api] mDNS APIs for IoT and
|
||
p2p extensions</a
|
||
>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
<li class="faqs__list-item">
|
||
<details class="faq">
|
||
<summary class="faq__summary">
|
||
<h3>
|
||
Can I install the bridge through a
|
||
package manager?
|
||
</h3>
|
||
</summary>
|
||
<div class="faq__content">
|
||
<p>
|
||
The bridge is available for macOS
|
||
and Arch Linux via several third
|
||
party packages. The extension is not
|
||
bundled with these packages and must
|
||
still be installed separately.
|
||
</p>
|
||
<p class="disclaimer">
|
||
Any issues specific to these
|
||
packages should be directed to the
|
||
respective package maintainers.
|
||
</p>
|
||
<h4>macOS</h4>
|
||
<p>
|
||
The bridge is available via
|
||
<a href="https://brew.sh"
|
||
>Homebrew</a
|
||
>
|
||
for macOS by running
|
||
<code
|
||
>brew install --cask
|
||
fx-cast-bridge</code
|
||
>.
|
||
</p>
|
||
|
||
<h4>Arch Linux (AUR)</h4>
|
||
<p>
|
||
<code>fx_cast-bin</code> —
|
||
<a
|
||
href="https://aur.archlinux.org/packages/fx_cast-bin"
|
||
>https://aur.archlinux.org/packages/fx_cast-bin</a
|
||
>
|
||
</p>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
<li class="faqs__list-item">
|
||
<details class="faq">
|
||
<summary class="faq__summary">
|
||
<h3>
|
||
Why aren't my devices being found?
|
||
</h3>
|
||
</summary>
|
||
<div class="faq__content">
|
||
<p>
|
||
The bridge relies on system services
|
||
(Bonjour on Windows/macOS, Avahi on
|
||
Linux) to provide device discovery.
|
||
If the bridge isn't able to find any
|
||
devices, there may be a
|
||
configuration issue (either with the
|
||
system service or the network).
|
||
</p>
|
||
<p class="disclaimer">
|
||
If you're using Arch Linux, Avahi is
|
||
not configured by default to resolve
|
||
<code>.local</code> hostnames via
|
||
the
|
||
<abbr title="Name Service Switch"
|
||
>NSS</abbr
|
||
>
|
||
which is required to resolve
|
||
Chromecast device addresses. See
|
||
more information
|
||
<a
|
||
href="https://wiki.archlinux.org/title/avahi#Hostname_resolution"
|
||
>here</a
|
||
>.
|
||
</p>
|
||
<p>Other issues include:</p>
|
||
<ul>
|
||
<li>
|
||
The devices you're looking for
|
||
may not be compatible. Chrome
|
||
also supports a limited number
|
||
of apps on some Smart TVs via an
|
||
older protocol called
|
||
<abbr
|
||
title="DIscovery And Launch"
|
||
>DIAL</abbr
|
||
>
|
||
which
|
||
<a
|
||
href="https://github.com/hensm/fx_cast/issues/7"
|
||
>isn't currently
|
||
supported</a
|
||
>.
|
||
</li>
|
||
<li>
|
||
<p>
|
||
Some network configurations
|
||
may interfere with mDNS
|
||
packets. Virtual machine
|
||
network adapters typically
|
||
will not work out of the
|
||
box, for example.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
<p>
|
||
There may be an issue with
|
||
the bridge causing it to
|
||
close unexpectedly. Check
|
||
the
|
||
<a
|
||
href="https://firefox-source-docs.mozilla.org/devtools-user/browser_console/index.html"
|
||
>Browser Console</a
|
||
>
|
||
for error logs and submit a
|
||
new issue on GitHub with
|
||
some more information (if
|
||
necessary).
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
<li class="faqs__list-item">
|
||
<details class="faq">
|
||
<summary class="faq__summary">
|
||
<h3>
|
||
Why isn't the bridge found when
|
||
using the Firefox snap/Flatpak
|
||
package?
|
||
</h3>
|
||
</summary>
|
||
<div class="faq__content">
|
||
<p>
|
||
Whilst running inside a sandboxed
|
||
version of Firefox, the extension is
|
||
unable to start the bridge by
|
||
itself. The bridge must be started
|
||
in
|
||
<a
|
||
href="https://github.com/hensm/fx_cast/#daemon-configuration"
|
||
>daemon mode</a
|
||
>, and the
|
||
<i
|
||
>"Enable backup daemon
|
||
connection"</i
|
||
>
|
||
option enabled in the extension.
|
||
</p>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
<li class="faqs__list-item">
|
||
<details class="faq">
|
||
<summary class="faq__summary">
|
||
<h3>
|
||
How do I completely remove the
|
||
bridge?
|
||
</h3>
|
||
</summary>
|
||
<div class="faq__content">
|
||
<h4>Windows</h4>
|
||
<p>
|
||
Removing the bridge on Windows
|
||
should be as easy as running the
|
||
uninstaller found in the control
|
||
panel, settings application, or
|
||
application directory.
|
||
</p>
|
||
<p>
|
||
To manually uninstall, remove the
|
||
following files/directories and
|
||
registry keys:
|
||
</p>
|
||
<ul>
|
||
<li>
|
||
<code
|
||
>C:\Program
|
||
Files\fx_cast\</code
|
||
>
|
||
</li>
|
||
|
||
<li>
|
||
<code
|
||
>HKLM\Software\Mozilla\NativeMessagingHosts\fx_cast_bridge</code
|
||
>
|
||
</li>
|
||
<li>
|
||
<code
|
||
>HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\fx_cast_bridge</code
|
||
>
|
||
</li>
|
||
</ul>
|
||
|
||
<h4>macOS</h4>
|
||
<p>
|
||
Remove the following
|
||
files/directories:
|
||
</p>
|
||
<ul>
|
||
<li>
|
||
<code
|
||
>/Library/Application
|
||
Support/fx_cast/</code
|
||
>
|
||
</li>
|
||
<li>
|
||
<code
|
||
>/Library/Application
|
||
Support/Mozilla/NativeMessagingHosts/fx_cast_bridge.json</code
|
||
>
|
||
</li>
|
||
</ul>
|
||
|
||
<h4>Linux</h4>
|
||
<p class="disclaimer">
|
||
For third-party packages, check the
|
||
documentation provided by the
|
||
package maintainer.
|
||
</p>
|
||
<p>
|
||
On Debian-based systems, remove the
|
||
<code>fx-cast-bridge</code>
|
||
package, otherwise for Fedora-based
|
||
systems, remove the
|
||
<code>fx_cast_bridge</code>
|
||
package.
|
||
</p>
|
||
<p>
|
||
To manually uninstall, remove the
|
||
following files/directories:
|
||
</p>
|
||
<ul>
|
||
<li>
|
||
<code>/opt/fx_cast/</code>
|
||
</li>
|
||
<li>
|
||
<code
|
||
>/usr/lib/mozilla/native-messaging-hosts/fx_cast_bridge.json</code
|
||
>
|
||
</li>
|
||
<li>
|
||
<code
|
||
>/usr/lib64/mozilla/native-messaging-hosts/fx_cast_bridge.json</code
|
||
>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
<li class="faqs__list-item">
|
||
<details class="faq">
|
||
<summary class="faq__summary">
|
||
<h3>
|
||
Why is there no sound when casting a
|
||
screen or tab?
|
||
</h3>
|
||
</summary>
|
||
<div class="faq__content">
|
||
<p>
|
||
API limitations. There's no method
|
||
of obtaining the audio streams.
|
||
Merging of audio streams from remote
|
||
media is also not possible due to
|
||
cross-origin issues.
|
||
</p>
|
||
<p>Relevant Firefox bugs:</p>
|
||
<ul>
|
||
<li>
|
||
<a
|
||
href="https://bugzilla.mozilla.org/show_bug.cgi?id=1391223"
|
||
>bug 1391223 — Implement
|
||
tabCapture API</a
|
||
>
|
||
</li>
|
||
<li>
|
||
<a
|
||
href="https://bugzilla.mozilla.org/show_bug.cgi?id=1541425"
|
||
>bug 1541425 — Implement
|
||
audio capture for
|
||
getDisplayMedia</a
|
||
>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
<li class="faqs__list-item">
|
||
<details class="faq">
|
||
<summary class="faq__summary">
|
||
<h3>Why doesn't 𝑥 site work?</h3>
|
||
</summary>
|
||
<div class="faq__content">
|
||
<p>
|
||
Compatibility with Chrome is far
|
||
from perfect. Most sites will only
|
||
enable their cast support if the
|
||
browser reports itself as Chrome, so
|
||
ensure that you've added the site to
|
||
the whitelist. Some sites may not
|
||
test their Chrome-specific code with
|
||
Firefox, so it's possible that
|
||
they're using
|
||
incompatible/non-standard APIs.
|
||
</p>
|
||
<p>
|
||
The Cast API is also not fully
|
||
implemented and has some stubbed
|
||
methods. The current implementation
|
||
likely also has edge-cases and bugs
|
||
which may cause issues.
|
||
</p>
|
||
<p>
|
||
Check the
|
||
<a
|
||
href="https://github.com/hensm/fx_cast-compat/issues?q=is%3Aissue+label%3Acompat"
|
||
>compatibility list</a
|
||
>
|
||
or if the site is not yet added,
|
||
<a
|
||
href="https://github.com/hensm/fx_cast-compat/issues/new/choose"
|
||
>submit a new compatibility
|
||
report issue</a
|
||
>.
|
||
</p>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
<li class="faqs__list-item">
|
||
<details class="faq">
|
||
<summary class="faq__summary">
|
||
<h3>
|
||
Why can't I cast DRM-encumbered
|
||
media?
|
||
</h3>
|
||
</summary>
|
||
<div class="faq__content">
|
||
<p>
|
||
Unforunately, for DRM-encumbered
|
||
media, there's no network-accessible
|
||
URL to provide to the Chromecast and
|
||
no means of accessing the media
|
||
streams. The only way to cast on
|
||
sites like this is via built-in
|
||
Chromecast support, which may not
|
||
always be available.
|
||
</p>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
<li class="faqs__list-item">
|
||
<details class="faq">
|
||
<summary class="faq__summary">
|
||
<h3>
|
||
Why is it taking so long for a full
|
||
release?
|
||
</h3>
|
||
</summary>
|
||
<div class="faq__content">
|
||
<p>
|
||
Though I do enjoy working on this,
|
||
it's (obviously) not a full-time
|
||
thing. It's just a hobby project.
|
||
You can help speed up development by
|
||
contributing (see below).
|
||
</p>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
<li class="faqs__list-item">
|
||
<details class="faq">
|
||
<summary class="faq__summary">
|
||
<h3>How can I support development?</h3>
|
||
</summary>
|
||
<div class="faq__content">
|
||
<p>
|
||
Contributing code, translations,
|
||
compatibility reports, or even
|
||
reporting bugs is very helpful. See
|
||
the
|
||
<a
|
||
href="https://github.com/hensm/fx_cast/blob/master/CONTRIBUTING.md"
|
||
>contributing guide</a
|
||
>
|
||
for more information.
|
||
</p>
|
||
<hr />
|
||
<p>You can also donate via PayPal:</p>
|
||
<p>
|
||
<a
|
||
href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3Z2FTMSG976WN&source=url"
|
||
>
|
||
<img
|
||
src="images/paypal.png"
|
||
alt="Donate with PayPal button"
|
||
/>
|
||
</a>
|
||
</p>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
|
||
<footer class="footer">
|
||
<div class="page-width">
|
||
<a
|
||
class="github-link"
|
||
href="https://github.com/hensm/fx_cast"
|
||
title="Visit GitHub repository"
|
||
>
|
||
<img
|
||
src="icons/GitHub-Mark-32px.png"
|
||
srcset="
|
||
icons/GitHub-Mark-32px.png,
|
||
icons/GitHub-Mark-64px.png 2x,
|
||
icons/GitHub-Mark-120px-plus.png 3x
|
||
"
|
||
alt="GitHub logo"
|
||
/>
|
||
</a>
|
||
</div>
|
||
</footer>
|
||
</div>
|
||
</body>
|
||
</html>
|