GitHub - jech/pw-whip: PipeWire-WHIP bridge

2 min read Original article ↗

pw-whip: a bridge between PipeWire and WHIP

PipeWire is a multimedia (audio and video) framework for Linux. WHIP (RFC 9725) is a standardised protocol for streaming audio and video to network servers. WHIP is notably implemented by the Galene videoconferencing server.

The program pw-whip acts as a bridge between PipeWire and WHIP: it allows any Linux program that is able to speak to PipeWire to stream its audio over WHIP.

Building

Install libopus and libpipewire.

For example, on Debian, do

apt install libopus-dev libpipewire-0.3-dev

Build and install libdtachannel

cd ~/src
git clone https://github.com/paullouisageneau/libdatachannel
cd libdatachannel
cmake -Bbuild
cd build
make -j
sudo mv libdatachannel.so* /usr/local/lib/
sudo ldconfig

Build pw-whip

cd ~/src/pw-whip/
make -j

If your copy of the libdatachannel sources doesn't live at ~/src/libdatachannel, specify its location as LIBDATACHANNEL_ROOT:

make -j LIBDATACHANNEL_ROOT=/usr/local/src/libdatachannel

You may optionally install pw-whip:

Usage

./pw-whip https://galene.org:8443/group/public/pw-whip/.whip

By default, pw-whip appears as an audio sink to PipeWire, but isn't connected to a source. You will need to connect it manually to a source using something like qpwgraph.

You may request automatic connection using the -c flag, or connection to a specific target using the -C flag:

./pw-whip -C mpv https://galene.org:8443/group/public/pw-whip/.whip

For more information, please consult the manual page:

Limitations

  • No support for ICE restarts, even if supported by the server.
  • No support for trickling local ICE candidates, even if supported by the server.
  • No support for video.
  • We do not currently adapt the throughput and the amount of FEC to varying network conditions.

— Juliusz Chroboczek https://www.irif.fr/~jch/