mirror of
https://github.com/Igalia/gst-wpe-webrtc-demo
synced 2024-11-21 15:20:59 +00:00
Add README.md
This commit is contained in:
parent
e5a3621705
commit
82d5324310
1 changed files with 60 additions and 0 deletions
60
README.md
Normal file
60
README.md
Normal file
|
@ -0,0 +1,60 @@
|
|||
# GStreamer WPE Web Overlay WebRTC Broadcast demo
|
||||
|
||||
This application allows the live video input (webcam) to be mixed with the
|
||||
contents of a web page and streamed to a [Janus WebRTC server](https://janus.conf.meetecho.com).
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
No binary package is provided for this demo yet. For the time being you need to
|
||||
build it from source.
|
||||
|
||||
The pre-requirements on the publisher side are:
|
||||
|
||||
- NodeJS
|
||||
- Rust
|
||||
- GStreamer (including gst-plugins-bad with wpesrc enabled)
|
||||
|
||||
Then you need a Janus instance, running on a remote server. This Janus instance
|
||||
should have the video-room plugin enabled and the WebSocket transport plugin
|
||||
enabled. You might need to open the TCP port 8989 and some UDP ports as well, as
|
||||
required for RTP. Then copy the contents of the janus-web-app to the server HTTP
|
||||
htdocs directory. We will assume the location of the Janus instance is
|
||||
https://janus.example.com.
|
||||
|
||||
The next step is to build the publisher app:
|
||||
|
||||
1. Ensure you have Rust/Cargo installed with [rustup](https://rustup.rs)
|
||||
2. Make sure you have GstWPE available on your Linux machine. It is provided by
|
||||
gst-plugins-bad since version 1.16. This command should show the details of
|
||||
the plugin: `gst-inspect-1.0 wpesrc`.
|
||||
3. Compile the Rust app: `cargo build --release`
|
||||
4. Start the Node app: `npm i wpe-graphics-overlays; node wpe-graphics-overlays/server.js`
|
||||
5. Open the admin web-ui located at http://127.0.0.1:3000/admin
|
||||
6. Start the Rust app: `cargo run --release -- -s wss://janus.example.com:8989 -r 1234 -f 42`
|
||||
|
||||
So the app will connect to Janus over WebSockets and hopefully publish the live
|
||||
stream in the room 1234, with a feed ID of 42. These values are also referenced
|
||||
in the webrtc.js file of the janus-web-app.
|
||||
|
||||
You should also see a GTK window popup on your desktop, showing the video
|
||||
preview. This could be made optional though.
|
||||
|
||||
Finally, more clients can connect to the janus-web-app, to watch the live stream.
|
||||
|
||||
## Further configuration
|
||||
|
||||
By default the publisher app will encode the video in VP8. You can switch to VP9
|
||||
or H264 by editing the
|
||||
`~/.config/com.igalia.gstwpe.broadcast.demo/settings.toml` file. You can also
|
||||
change the video resolution there.
|
||||
|
||||
## Credits
|
||||
|
||||
The code is adapted from the [RustFest 2019 Barcelona Rust/GTK/GStreamer workshop app](https://github.com/sdroege/rustfest-barcelona19-gst-webrtc-workshop). Many thanks to Sebastian Dröge <sebastian@centricular.com>!
|
||||
|
||||
The HTML/CSS template is based on the [Pure CSS Horizontal Ticker codepen](https://codepen.io/lewismcarey/pen/GJZVoG).
|
||||
|
||||
The NodeJS app is a fork of the [Roses CasparCG
|
||||
Graphics](https://github.com/moschopsuk/Roses-2015-CasparCG-Graphics) authored
|
||||
by Luke Moscrop.
|
Loading…
Reference in a new issue