janus-gateway/streaming: OnTrack never invoked
tmatth opened this issue · comments
Your environment.
- Version: master 811ebe7 (but regression was introduced in 36cc229)
- Browser: N/A
- Other Information - Tested against janus-gateway v0.12.3 running locally
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 -0800Migrate 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