2023-06-20 09:36:56 +02:00
# What is FCast?
2023-06-20 08:45:01 +02:00
2023-06-20 09:36:56 +02:00
FCast is a protocol designed for wireless streaming of audio and video content between devices. Unlike alternative protocols like Chromecast and AirPlay, FCast is an open source protocol that allows for custom receiver implementations, enabling third-party developers to create their own receiver devices or integrate the FCast protocol into their own apps.
2023-06-20 08:45:01 +02:00
2023-06-20 09:36:56 +02:00
# Why do I need a receiver?
2023-06-20 08:45:01 +02:00
2023-06-20 09:36:56 +02:00
The FCast receiver is a working receiver implementation compatible with Linux, Windows and MacOS that supports various stream types such as DASH, HLS and mp4.
2023-06-20 08:45:01 +02:00
2024-11-19 17:44:17 -06:00

2023-06-20 08:45:01 +02:00
2023-06-20 09:36:56 +02:00
# Protocol specification
2023-06-20 08:45:01 +02:00
2024-11-19 17:44:17 -06:00
The protocol specification can be found here https://gitlab.futo.org/videostreaming/fcast/-/wikis/home
2023-06-20 08:45:01 +02:00
2024-11-19 17:44:17 -06:00
# Receiver application
2023-06-20 08:45:01 +02:00
2024-11-19 17:44:17 -06:00
1. Download the latest build for your platform from https://fcast.org/#downloads or build it yourself by following the build instructions.
2023-06-20 09:36:56 +02:00
2. Unzip the archive at your desired location.
3. Run the FCast receiver.
2024-11-19 17:44:17 -06:00
- **MacOS:** Run the `FCast Receiver` application
2023-06-20 09:36:56 +02:00
- **Linux:** Run the `fcast-receiver` application
- **Windows:** Run the `fcast-receiver.exe` application
2024-11-19 17:44:17 -06:00
4. The application will open the main window where you can setup a connection to your sender device.

2023-06-20 08:45:01 +02:00
2024-11-19 17:44:17 -06:00
The application will continue to run in the system tray when you close the player or main window. You can exit the application or access other menu options from the tray icon.
There are also command line flags to customize application behavior, some of which include:
* `--no-main-window` : Hide the main window on start
* `--fullscreen` : Start the main window in fullscreen
Use the `--help` flag to see full list of available flags.
2023-06-20 08:45:01 +02:00
2023-06-20 09:36:56 +02:00
# Connecting to the FCast receiver with the video streaming application
2023-06-20 08:45:01 +02:00
2023-06-20 09:36:56 +02:00
## Automatic discovery
1. Open the video streaming application.
2. Open the FCast receiver or restart it.
3. The receiver should now be visible in the casting dialog under "Discovered Devices".
4. If this failed, try manually connecting it. Automatic discovery does not work on all network types.
5. Click start to connect to the device.
6. Start watching content.
## Manual
1. Open the FCast receiver.
2. Find the IP of the device running the receiver.
3. Open the video streaming application.
4. Open the casting dialog.
5. Click add to manually add a device.
6. Select the FCast protocol, enter a descriptive name, the IP you found and port 46899.
7. Click start to connect to the device.
8. Start watching content.

# How to build
2024-11-19 17:44:17 -06:00
## Preparing for build
2023-06-20 09:36:56 +02:00
2024-11-19 17:44:17 -06:00
A docker file is provided to setup your build environment. From the root of the repository:
* Build: `docker build -t fcast/receiver-electron-dev:latest receivers/electron/`
* Run: `docker run --rm -it -w /app/receivers/electron --entrypoint='bash' -v .:/app fcast/receiver-electron-dev:latest`
2023-06-20 09:36:56 +02:00
2024-11-19 17:44:17 -06:00
You can then run the following commands to finish setup.
2023-06-20 09:36:56 +02:00
```
2024-11-19 17:44:17 -06:00
npm install
2023-06-20 09:36:56 +02:00
```
2024-11-19 17:44:17 -06:00
## Development
2024-05-28 18:55:18 +01:00
2024-11-19 17:44:17 -06:00
Run the following commands in the `/app/receivers/electron` directory.
* Build: `npm run build`
* Run: `npm run start`
2024-05-28 18:55:18 +01:00
2024-11-19 17:44:17 -06:00
## Packaging
2024-05-28 18:55:18 +01:00
2024-11-19 17:44:17 -06:00
Below are the following platforms currently used for packaging:
* `npm run make -- --platform="darwin" --arch="arm64"`
* `npm run make -- --platform="darwin" --arch="x64"`
* `npm run make -- --platform="win32" --arch="x64"`
* `npm run make -- --platform="linux" --arch="x64"`
* `npm run make -- --platform="linux" --arch="arm64"`
2024-05-28 18:55:18 +01:00
2024-11-19 17:44:17 -06:00
Other platforms and architectures supported by [Electron Forge ](https://www.electronforge.io/ ) might work, but are currently untested.
2023-06-20 09:36:56 +02:00
2024-11-19 17:44:17 -06:00
Packages that will be built from running the above `make` commands:
* Windows: `.msi` and `.zip`
* MacOS: `.dmg` and `.zip`
* Linux: `.deb` , `.rpm` and `.zip`
2023-06-20 09:36:56 +02:00
2024-11-19 17:44:17 -06:00
Package artifacts will be located in `/app/receivers/electron/out/make`