Commit graph

155 commits

Author SHA1 Message Date
Sebastian Dröge
65db695212 Set TURN server in Rust sendrecv example too
Previously it was only in the multiparty example.
2020-03-24 12:57:17 +02:00
Jan Schmidt
5bf67feae8 sendrecv: Add a switch for remote-offerer
Add a switch to the command line utility that makes it request
the initial offer from the peer instead of generating it.

Modify the webrtc.js example to support a new REQUEST_OFFER
message, and generate the offer when receiving it.
2020-03-05 03:03:17 +11:00
Jan Schmidt
c8e79c9671 webrtc-sendrecv.py: Add a stun server
Fixes https://github.com/centricular/gstwebrtc-demos/issues/160
2020-02-21 14:01:58 +11:00
Jan Schmidt
d2236266dc Android: Update build for android example 2020-02-07 23:00:20 +11:00
Sebastian Dröge
699b830213 Update Rust examples to async-tungstenite 0.4 2020-02-01 15:21:08 +02:00
Jan Schmidt
1f1233064f janus: Add picture-id-mode=2 to VP8 payloading
This writes an extended header and Picture-ID into each RTP packet
which makes Janus able to detect which frames are keyframes and
to request replacement keyframes.
2020-01-28 00:05:59 +11:00
Jan Schmidt
d8e7687132 janus: Add options near the top
Add some script configuration options to choose
between VP8 and H.264 near the top, to modify the video input
source, and to enable/disable RTX support
2020-01-28 00:05:59 +11:00
Sebastian Dröge
42c6eac7f1 Update dependencies of Rust examples and simplify slightly 2020-01-23 08:36:21 +02:00
Jan Schmidt
3cabee61c7 Add python Janus videoroom streaming example.
Added with permission and copyright @tobiasfriden and @saket424
on github. See https://github.com/centricular/gstwebrtc-demos/issues/66
2020-01-15 10:47:27 +11:00
Jan Schmidt
666f982882 Add a sendonly example 2020-01-15 10:47:27 +11:00
Sebastian Dröge
d995a00774 Update Rust examples to async-tungstenite 0.3 2020-01-05 11:41:31 +02:00
Sebastian Dröge
f5e4df464f Update Rust demos to gstreamer 0.15 bindings release 2019-12-19 01:04:01 +02:00
Sebastian Dröge
5e18b460b3 multiparty/rust: Add Rust version of multiparty demo
Different to the C version this also mixes all participants into a grid
with videomixer.
2019-11-29 20:49:46 +01:00
Sebastian Dröge
9a46977a4c sendrecv/rust: Port from tokio to async-std and use async/await 2019-11-29 20:47:21 +01:00
Sebastian Dröge
3d2b63615a Update dependencies of Rust sendrecv example 2019-10-25 02:05:16 +03:00
Sebastian Dröge
8b44f32435 Return gst::BusSyncReply::Drop from the bus sync handler in the Rust sendrecv example
Otherwise all messages accumulate on the queue inside the bus and
nothing is ever removing them from there.

We handle messages elsewhere and only intercept them from the sync
handler.
2019-10-25 02:02:59 +03:00
Jan Schmidt
b3625eca9f android: Reenable x86/x86_64 ABI builds 2019-09-16 14:55:58 +00:00
Jan Schmidt
1ba85de76c Android: Restrict camera capture size, and add 1 keyframe / sec. 2019-09-16 14:55:58 +00:00
Jan Schmidt
46ea108b5e Android: Add 25% FEC to the video stream 2019-09-16 14:55:58 +00:00
Jan Schmidt
68f30a2431 android: Expand gradle memory to avoid Metaspace out of memory errors 2019-09-16 14:55:58 +00:00
Jan Schmidt
d022b7c61e android: Change the default URL to webrtc.nirbheek.in 2019-09-16 14:55:58 +00:00
Jan Schmidt
1c3c194fd2 android: Switch to the camera for input 2019-09-16 14:55:58 +00:00
Jan Schmidt
91b3002fa0 android: Fix missing sentinel and return value compiler warnings 2019-09-16 14:55:58 +00:00
Jan Schmidt
75fd7046fb android: update gradle and build tools versions
Also disable erroring out on lint failure for now.
2019-09-16 14:55:58 +00:00
Jan Schmidt
0b116cc2be android: Fix build with r18b by linking libc++_shared 2019-09-16 14:55:58 +00:00
Matthew Waters
421f21adb1 Simple android app 2019-09-16 14:55:58 +00:00
Shane Perry
7b8d466cbb Make health check route configurable 2019-08-12 17:58:30 +00:00
Shane Perry
b60d0d112c Added a basic health check endpoint to the server 2019-08-12 17:58:30 +00:00
Nirbheek Chauhan
7fe9f8e092 signalling/simple-server: Listen on both ipv4 and ipv6 by default
Empty string or `None` mean all interfaces. Specifying 0.0.0.0 means
ipv4 interfaces only.

Fixes https://github.com/centricular/gstwebrtc-demos/issues/120
2019-07-16 02:31:56 +05:30
Sebastian Dröge
48130e07a1 Add FIXME comment to the Rust sendrecv example for implementation proper SDP negotiation 2019-07-09 14:51:41 +03:00
Sebastian Dröge
a8fca4037d Enable RTX in the Rust sendrecv example only for video
Chrome et al don't like RTX for audio streams.
2019-07-09 14:50:19 +03:00
Sebastian Dröge
8606b54671 Update dependencies of Rust example 2019-07-08 16:45:08 +03:00
Sebastian Dröge
b3f9959a30 Add support for RTX with --rtx commandline parameter in the Rust example 2019-07-08 16:45:08 +03:00
Seungha Yang
60dbf27896 Add meson build script
make build easy with meson
2019-07-02 14:40:36 +01:00
Bernhard Jung
62469f1155 unref sinkpad also in mp version 2019-07-01 13:21:20 +03:00
Bernhard Jung
21e5f4fbda unref sinkpad 2019-07-01 13:21:20 +03:00
Bernhard Jung
92050d6a59 do no use gst_element_link but gst_pad_link in pad-added callbacks to prevent situations where
on multiple incoming streams they might not get linked correctly and leave a stream unconnected
2019-07-01 13:21:20 +03:00
Sebastian Dröge
d74e2ac147 Add support for creating the offer in the Rust sendrecv client 2019-06-27 14:35:47 +03:00
Sebastian Dröge
d393063868 Update Rust sendrecv example to latest GLib/GStreamer bindings 2019-06-27 13:57:42 +03:00
Sebastian Dröge
a47bdbb21f Port Rust sendrecv example to asynchronous IO and completely rewrite
Code should be easier to follow now and also supports TLS WebSockets
now.

Fixes https://github.com/centricular/gstwebrtc-demos/issues/70
2019-06-27 13:54:23 +03:00
Yevgeny Kazakov
bb36c08126 Add video tag playsinline to enable autoplay in iOS Safari 2019-04-12 18:07:38 +00:00
Yevgeny Kazakov
49e1478150 Replace deprecated onaddstream with ontrack; fixes #98 2019-04-12 18:07:38 +00:00
Emmanuel Gil Peyrot
1595972c90 Update Rust dependencies 2019-02-26 19:56:49 +02:00
svangasse
6620b49d50 Java demo (#81)
Added working demo using GStreamer Java bindings
2019-02-26 13:41:15 +01:00
Jason Sun
92bce589d8 Improve building documentation
- Add apt-get install lines for Ubuntu 18.04
- add gstreamer-webrtc-1.0 and gstreamer-sdp-1.0 to CFLAGS
- make the CLAGS match LIBS in Makefile dependencies
2018-11-22 05:23:15 +00:00
Matthew Waters
a63902e621 webrtc: fix data channel usage after requiring a READY webrtcbin
c4fe52395b
7bf18ad258

Fixes https://github.com/centricular/gstwebrtc-demos/issues/55
2018-11-06 15:44:14 +11:00
Mathieu Duponchelle
4df6d21992 sendrecv: port all examples to use a max-bundle policy 2018-10-15 20:46:28 +02:00
Sebastian Dröge
5c4b9a7f53 Update Rust dependencies 2018-10-15 15:54:06 +03:00
Sebastian Dröge
adadc2de63 Add Rust instructions to README.md 2018-10-15 15:53:56 +03:00
Matthew Clark
738e969a06 Add check_plugins() to Python example, matching C and Rust versions 2018-09-24 03:33:11 +00:00
Jan Alexander Steffens (heftig)
fd1d53b04a on_server_message: Do not unref message GBytes
We don't own the reference. Since GLib 2.58, the g_bytes_unref that
follows the signal emission in libsoup loudly complains about the
attempt to underflow the refcount.
2018-09-21 13:12:43 +00:00
Mathieu Duponchelle
547f296293 sendrecv: try to add a data channel 2018-09-21 13:12:16 +00:00
Mathieu Duponchelle
7865c31387 webrtc.js: fix tearing down 2018-09-21 13:12:16 +00:00
Sebastian Dröge
fe6267fe0d Update to releases of glib/gstreamer bindings 2018-09-10 14:06:01 +03:00
meldron
dc1163ab95 Fix stun server address
The stun server address has a space as suffix which is not allowed in the rust bindings.
2018-07-26 12:11:37 +00:00
Thibault Saunier
122c4106a4 Implement the demo in C# with GStreamerSharp
Based on https://github.com/ttustonic/GStreamerSharpSamples from
Tomislav Tustonić <ttustonic@outlook.com>
2018-07-11 10:05:38 +00:00
Nirbheek Chauhan
c5e5a7cfd3 Update README.md 2018-07-03 19:26:56 +05:30
Leon Tan
b6300d3b92 Fix bug in Rust sendrecv demo 2018-06-27 22:58:19 +02:00
Matthew Clark
37e8853041 Correct signalling usage instructions 2018-06-27 01:29:54 +00:00
Mathieu Duponchelle
1958814680 webrtc-sendrecv.py: required gstreamer 1.14.2
Addresses #25
2018-06-25 14:45:57 +02:00
Sebastian Dröge
9cf3aa088e General code cleanup of the Rust sendrecv demo
Fewer clones and more borrowing, if let instead of match, match instead
of multiple ifs, insert a few newlines all over the place to make code
less dense, and a few changes to make code a bit more idiomatic.
2018-06-21 13:16:15 +03:00
Sebastian Dröge
2614249149 Fix various clippy warnings in the Rust sendrecv demo 2018-06-21 09:03:18 +03:00
maxmcd
b826f968cb Add --disable-ssl flag to webrtc-sendrecv.c 2018-06-18 09:02:05 +03:00
maxmcd
83b9c4efd7 Add --disable-ssl option to simple-server.py 2018-06-18 09:02:05 +03:00
maxmcd
bb56d6eab7 Add Rust version of sendrecv example
This also comes with a docker image to collect all dependencies and
build everything.

Fixes https://github.com/centricular/gstwebrtc-demos/pull/20
2018-06-18 09:02:05 +03:00
Mathieu Duponchelle
3603899291 webrtc-sendrecv.py: improve debug and documentation 2018-06-11 20:26:07 +02:00
Mathieu Duponchelle
56c17d6487 sendrecv: python version 2018-06-11 18:49:53 +02:00
Nirbheek Chauhan
bba6c92392 Fix heading levels 2018-04-11 19:04:47 +05:30
Eloi Bail
d6741c1f80 mp-webrtc-sendrecv.c: add missing comma in the list of package required
A comma is missing in the list of package required. Thus the package
'srtprtpmanager' is checked instead of packages srtp and rtpmanager.
2018-04-03 15:04:57 +00:00
Nirbheek Chauhan
ea8e960e29 sendrecv/js: Improve more logging and errors 2018-04-01 01:53:44 +05:30
Nirbheek Chauhan
9cc57d2dd1 sendrecv/js: Fix some null/undefined checks 2018-04-01 01:52:46 +05:30
Nirbheek Chauhan
669d234ebd sendrecv/js: Don't reuse peer_id across sessions
It increases the likelihood of a collision with someone else, and it
was an unintended side-effect anyway.
2018-04-01 01:30:23 +05:30
Nirbheek Chauhan
47bfa3cc27 sendrecv/gst: Add no-op audio/video converters
This reduces the chance that someone will try to change the
audio/video source elements and get an error because they don't know
about the conversion elements. They will be no-ops in the usual case.

Closes https://github.com/centricular/gstwebrtc-demos/issues/8
2018-04-01 01:15:16 +05:30
Nirbheek Chauhan
7c5fbf1aca sendrecv/js: custom getUserMedia constraints
The html page now contains a text area in which the default
constraints will be added and can be edited.

Closes https://github.com/centricular/gstwebrtc-demos/issues/11
2018-04-01 01:10:22 +05:30
Nirbheek Chauhan
fe40c70536 sendrecv/js: Simplify local stream management
Just use the fulfilled value of the promise directly instead of
storing it separately
2018-04-01 01:10:09 +05:30
Nirbheek Chauhan
9f4783fb60 sendrecv/js: Allow overriding peer_id and ws_server
This allows people to easily use a custom peer id or their own server
if the automatic values are not appropriate for them.
2018-04-01 01:10:09 +05:30
Nirbheek Chauhan
3879a5078d sendrecv/js: Explicitly close the local stream when done
This immediately releases the webcam and mic instead of lazily at some
unpredictable time in the future.
2018-04-01 01:10:00 +05:30
Nirbheek Chauhan
3eabe5cb0b sendrecv/js: Make error statuses more prominent
Colour errors in red, and ensure that later status updates don't
overwrite existing error statuses.
2018-04-01 01:09:54 +05:30
Nirbheek Chauhan
bd6deaca46 sendrecv/js: Call getUserMedia on incoming call
Instead of registering it on page load. This will allow us to add an
option for users to override the default constraints later.

This is also generally nicer because the browser won't open the webcam
immediately when you load the page and keep recording from it.
2018-04-01 01:09:46 +05:30
Nirbheek Chauhan
563826deaf sendrecv: Don't set pipeline state if it's NULL
Avoids ugly CRITICAL warnings when erroring out.
2018-03-31 10:28:51 +05:30
Nirbheek Chauhan
82314cabbb Don't use strict ssl certificate checking for localhost
When using localhost signalling servers, we don't want to use
strict ssl because it's probably using a self-signed certificate
and there's no need to do certificate checking over localhost anyway.
2018-03-31 10:27:05 +05:30
Nirbheek Chauhan
0e1be2a63f Add Makefiles for all C demos 2018-03-23 19:00:37 +05:30
Nirbheek Chauhan
2d2bc0fe0e Fix compiler warnings in all C demos 2018-03-23 19:00:37 +05:30
Nirbheek Chauhan
20cf2503ee sendrecv: Fix SDP message format
The format is {'sdp': {'sdp': <sdp>, 'type': <sdptype>}}

The multiparty-sendrecv demo already uses this format.
2018-03-23 19:00:37 +05:30
Sebastian Kilb
2b82525bb0 Fix audio/video linking error on windows
Closes https://github.com/centricular/gstwebrtc-demos/issues/5
2018-03-21 06:26:49 +05:30
Nirbheek Chauhan
429f4bb65f README.md: Document the binaries and Cerbero
Also mention where to file bug reports about the plugin itself.
2018-03-10 13:21:34 +05:30
Nirbheek Chauhan
55e86469d9 Check for all necessary plugins at startup
People seem to be having problems ensuring that they have all the
right plugins built, so make it a bit easier for them.
2018-03-10 01:54:48 +05:30
Nirbheek Chauhan
fa2adc717b Fix crash on Windows by delimiting option entries with NULL
Also use more verbose forms of g_assert which print values on failure
2018-03-08 20:10:55 +05:30
Nirbheek Chauhan
492d13a7c9 README: link to blog post, document multiparty example
Also add TODO stubs for MCU and SFU
2018-02-17 08:13:36 +05:30
Tim-Philipp Müller
2e5204ae3b README: fix formatting 2018-02-02 08:41:21 +00:00
Tim-Philipp Müller
72c10e8243 webrtc-sendrecv: define GST_USE_UNSTABLE_API to avoid compiler warnings 2018-02-02 08:39:04 +00:00
Tim-Philipp Müller
43a27385c3 Update README
Point to upstream repos now that it's been merged
2018-02-02 08:23:30 +00:00
Nirbheek Chauhan
97cf763420 sendrecv: Add a Google STUN server to the configuration
Without this, the example will only work on link-local and localhost
networks.
2017-12-12 21:40:48 +05:30
Matthew Waters
e4e83a648b server/js: also allow running on localhost 2017-11-23 00:29:39 +11:00
Mathieu Duponchelle
e5c5767298 Update to new promise API 2017-11-22 22:28:55 +10:00
Nirbheek Chauhan
0c5e799952 multiparty sendrecv: Add a queue before the audio sink
Missed this, fixes the bug where removing a peer causes the pipeline to
get stuck. However, when peers leave, there is still a chance that the
pipeline will get stuck.
2017-10-30 13:24:21 +05:30
Nirbheek Chauhan
9b1a0e5389 WIP: Add a new multiparty sendrecv gstreamer demo
You can join a room and an audio-only call will be started with all
peers in that room. Currently uses audiotestsrc only.

BUG: With >2 peers in a call, if a peer leaves, the pipeline stops
     outputting data from the remaining peers to the (audio) sink.

TODO: JS code to allow a browser to join the call
TODO: Cleanup pipeline when a peer leaves
TODO: Add ICE servers to allow calls over the Internet
TODO: Perhaps setup a TURN server as well
2017-10-30 09:14:29 +05:30
Nirbheek Chauhan
569aff43f9 sendrecv: Rename function for greater clarity 2017-10-30 09:14:29 +05:30
Nirbheek Chauhan
96e4f39fd8 Update Protocol.md
Fix indentation typos
2017-10-29 04:08:45 +05:30
Nirbheek Chauhan
d687ff3d91 simple-server: Add support for multi-party rooms
Also add a new room-client.py to test the protocol which is documented
in Protocol.md
2017-10-28 19:20:44 +05:30