pion / example-webrtc-applications

Examples of WebRTC applications that are large, or use 3rd party libraries

Home Page:https://pion.ly/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

janus-gateway/streaming: OnTrack never invoked

tmatth opened this issue · comments

Your environment.

What did you do?

Run janus locally

Run janus locally, so copy .jcfg.sample config files to .jcfg and patch:

tmatth@bellini:~/src/janus-gateway$ diff conf/janus.jcfg.sample conf/janus.jcfg

8,11c8,11
< 	plugins_folder = "/usr/local/lib/janus/plugins"			# Plugins folder
< 	transports_folder = "/usr/local/lib/janus/transports"	# Transports folder
< 	events_folder = "/usr/local/lib/janus/events"			# Event handlers folder
< 	loggers_folder = "/usr/local/lib/janus/loggers"			# External loggers folder
---
> 	plugins_folder = "/home/tmatth/src/janus-gateway/plugins/.libs"			# Plugins folder
> 	transports_folder = "/home/tmatth/src/janus-gateway/transports/.libs"	# Transports folder
> 	events_folder = "/home/tmatth/src/janus-gateway/events"			# Event handlers folder
> 	loggers_folder = "/home/tmatth/src/janus-gateway/loggers"			# External loggers folder
413c413
< 	#disable = "libjanus_rabbitmq.so"
---
> 	disable = "libjanus_rabbitmq.so,libjanus_nanomsg.so"

The remaining transport + config files need no patching:

tmatth@bellini:~/src/janus-gateway$ ls conf/*.jcfg
conf/janus.jcfg  conf/janus.plugin.streaming.jcfg  conf/janus.plugin.videoroom.jcfg  conf/janus.transport.http.jcfg  conf/janus.transport.websockets.jcfg

Compile Janus

Disable as many features as possible:

./configure --enable-rest --disable-data-channels --enable-websockets --disable-unix-sockets --disable-gelf-event-handler --disable-sample-event-handler --disable-plugin-audiobridge --disable-plugin-duktape --disable-plugin-echotest --disable-plugin-lua --disable-plugin-recordplay --disable-plugin-nosip --disable-plugin-textroom --disable-plugin-sip --disable-plugin-videocall --disable-plugin-voicemail

Build:
make -j$(nproc)

Start janus:
./janus -F /home/tmatth/src/janus-gateway/conf -C /home/tmatth/src/janus-gateway/conf/janus.jcfg -d 5

Send janus RTP to make available via the streaming plugin (this is what the pion example will save to disk):

tmatth@bellini:~/src/janus-gateway/plugins/streams$ ./test_gstreamer_1.sh 

What did you expect?

Using e.g., commit f0586b4 we can see that the streaming plugin example gets the tracks and starts writing them to disk as intended:

Connection State has changed checking 
Connection State has changed connected 
WebRTCUp type 6420383307119431EventMsg map[result:map[status:started] streaming:event]Got Opus track, saving to disk as output.ogg
Got VP8 track, saving to disk as output.ivf

What happened?

As of commit 36cc229, the example gets as far as webrtc UP but the OnTrack callback is never invoked, and so we never save the streams to disk.

For context, here's the commit as per git bisect:

36cc229 is the first bad commit
commit 36cc229
Author: Sean DuBois sean@siobud.com
Date: Fri Dec 18 18:51:58 2020 -0800

Migrate examples to pion/webrtc@v3

delete gstreamer-cli, wasn't able to make work with /v2

delete sfu-ws, going to re-implement and make simpler

c-data-channels/bridge.go | 2 +-
c-data-channels/webrtc.go | 12 +-
gocv-receive/README.md | 4 +-
gocv-receive/main.go | 28 ++--
gstreamer-cli/README.md | 68 ----------
gstreamer-cli/jsfiddle/demo.css | 4 -
gstreamer-cli/jsfiddle/demo.details | 5 -
gstreamer-cli/jsfiddle/demo.html | 14 --
gstreamer-cli/jsfiddle/demo.js | 40 ------
gstreamer-cli/main.go | 199 ---------------------------
gstreamer-receive/main.go | 26 ++--
gstreamer-send-offer/README.md | 2 +-
gstreamer-send-offer/main.go | 32 +++--
gstreamer-send/main.go | 15 +-
internal/gstreamer-sink/gst.go | 12 +-
internal/gstreamer-src/gst.go | 26 ++--
janus-gateway/streaming/main.go | 47 +++----
janus-gateway/video-room/main.go | 32 +++--
save-to-webm/README.md | 2 +-
save-to-webm/main.go | 61 +++++----
sfu-ws/README.md | 27 ----
sfu-ws/broadcast_data.go | 45 ------
sfu-ws/flutter/.gitignore | 70 ----------
sfu-ws/flutter/README.md | 48 -------
sfu-ws/flutter/lib/main.dart | 248 ----------------------------------
sfu-ws/flutter/lib/sfu_ws_sample.dart | 222 ------------------------------
sfu-ws/flutter/pubspec.yaml | 75 ----------
sfu-ws/main.go | 54 --------
sfu-ws/room.go | 204 ----------------------------
sfu-ws/sfu.html | 146 --------------------
sfu-ws/web.go | 59 --------
snapshot/main.go | 24 +++-
twitch/main.go | 54 ++++----
33 files changed, 209 insertions(+), 1698 deletions(-)
delete mode 100644 gstreamer-cli/README.md
delete mode 100644 gstreamer-cli/jsfiddle/demo.css
delete mode 100644 gstreamer-cli/jsfiddle/demo.details
delete mode 100644 gstreamer-cli/jsfiddle/demo.html
delete mode 100644 gstreamer-cli/jsfiddle/demo.js
delete mode 100644 gstreamer-cli/main.go
delete mode 100644 sfu-ws/README.md
delete mode 100644 sfu-ws/broadcast_data.go
delete mode 100644 sfu-ws/flutter/.gitignore
delete mode 100644 sfu-ws/flutter/README.md
delete mode 100644 sfu-ws/flutter/lib/main.dart
delete mode 100644 sfu-ws/flutter/lib/sfu_ws_sample.dart
delete mode 100644 sfu-ws/flutter/pubspec.yaml
delete mode 100644 sfu-ws/main.go
delete mode 100644 sfu-ws/room.go
delete mode 100644 sfu-ws/sfu.html
delete mode 100644 sfu-ws/web.go