Comments (7)
Your GStreamer pipeline template:
webmmux name=muxer ! filesink location={participant_id}.webm
opusparse name=audio ! muxer.audio_0
capsfilter caps=video/x-vp8 name=video ! muxer.video_0
Should create .webm
files for each other participant in the room with the muxed audio and video. Do you get those files?
There does seem to be a problem here:
2022-02-10T10:26:21.696987Z DEBUG XMPP <<< <iq type='set' from='[email protected]/focus' to='[email protected]/dEIQSOBo' xmlns='jabber:client' id='azY2cmxuMGZmeHY0amZlYUB0aWZyLm1sL2RFSVFTT0JvAFg3Mlg5LTE3NwCh7Rb+VEnCMt36DNsrizGb'><jingle initiator='[email protected]/focus' action='session-initiate' sid='a045okmrde75i' xmlns='urn:xmpp:jingle:1'><content name='audio' creator='initiator' senders='both'><description maxptime='60' media='audio' xmlns='urn:xmpp:jingle:apps:rtp:1'><payload-type name='opus' channels='2' clockrate='48000' id='111'><parameter name='minptime' value='10'/><parameter name='useinbandfec' value='1'/><rtcp-fb type='transport-cc' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/></payload-type><payload-type id='103' clockrate='16000' name='ISAC'/><payload-type id='104' clockrate='32000' name='ISAC'/><payload-type id='126' clockrate='8000' name='telephone-event'/><rtp-hdrext id='1' uri='urn:ietf:params:rtp-hdrext:ssrc-audio-level' xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0'/><rtp-hdrext id='5' uri='http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01' xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0'/><rtcp-mux/><source ssrc='1799763942' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='[email protected]/8ec106b7' xmlns='http://jitsi.org/jitmeet'/><parameter name='msid' value='8ec106b7-audio-1 8be49ad8-a380-42e6-94a1-e65ce298b0f5-1' xmlns='urn:xmpp:jingle:apps:rtp:1'/></source><source name='jvb-a0' ssrc='2623813084' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='jvb' xmlns='http://jitsi.org/jitmeet'/><parameter name='msid' value='mixedmslabel mixedlabelaudio0' xmlns='urn:xmpp:jingle:apps:rtp:1'/></source></description><transport ufrag='b9l5i1frhims2n' pwd='61ct04j3io26dn8veeh8k2sap5' xmlns='urn:xmpp:jingle:transports:ice-udp:1'><web-socket url='wss://tifr.ml:443/colibri-ws/default-id/e292f7d43441301c/k66rln0ffxv4jfea?pwd=61ct04j3io26dn8veeh8k2sap5' xmlns='http://jitsi.org/protocol/colibri'/><rtcp-mux/><fingerprint hash='sha-256' setup='actpass' required='false' xmlns='urn:xmpp:jingle:apps:dtls:0'>99:F4:AC:FE:AF:A4:3D:A7:9B:3A:08:C7:99:42:82:6E:B7:40:CC:7F:3A:41:57:CD:18:FC:23:84:C3:12:73:5B</fingerprint><candidate ip='192.168.200.61' foundation='1' type='host' protocol='udp' network='0' generation='0' component='1' id='5f81d8670adc4e70ffffffffcec91816' port='10000' priority='2130706431'/><candidate ip='122.200.18.71' foundation='2' protocol='udp' network='0' generation='0' rel-port='10000' component='1' rel-addr='192.168.200.61' id='1b3af99970adc4e70ffffffff88e86220' port='10000' priority='1694498815' type='srflx'/></transport></content><content name='video' creator='initiator' senders='both'><description media='video' xmlns='urn:xmpp:jingle:apps:rtp:1'><payload-type id='100' clockrate='90000' name='VP8'><rtcp-fb subtype='fir' type='ccm' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb subtype='pli' type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><parameter name='x-google-start-bitrate' value='800'/><rtcp-fb type='transport-cc' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/></payload-type><payload-type id='107' clockrate='90000' name='H264'><rtcp-fb subtype='fir' type='ccm' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb subtype='pli' type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><parameter name='x-google-start-bitrate' value='800'/><rtcp-fb type='transport-cc' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><parameter name='profile-level-id' value='42e01f;level-asymmetry-allowed=1;packetization-mode=1;'/></payload-type><payload-type id='101' clockrate='90000' name='VP9'><rtcp-fb subtype='fir' type='ccm' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb subtype='pli' type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><parameter name='x-google-start-bitrate' value='800'/><rtcp-fb type='transport-cc' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/></payload-type><payload-type id='96' clockrate='90000' name='rtx'><parameter name='apt' value='100'/><rtcp-fb subtype='fir' type='ccm' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb subtype='pli' type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/></payload-type><payload-type id='97' clockrate='90000' name='rtx'><parameter name='apt' value='101'/><rtcp-fb subtype='fir' type='ccm' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb subtype='pli' type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/></payload-type><payload-type id='99' clockrate='90000' name='rtx'><parameter name='apt' value='107'/></payload-type><rtp-hdrext id='3' uri='http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time' xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0'/><rtp-hdrext id='5' uri='http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01' xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0'/><rtcp-mux/><source ssrc='3326384229' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='[email protected]/8ec106b7' xmlns='http://jitsi.org/jitmeet'/><parameter name='msid' value='8ec106b7-video-1 5f89b9af-3483-462e-8a0f-bca83478b703-1' xmlns='urn:xmpp:jingle:apps:rtp:1'/></source><source ssrc='868419519' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='[email protected]/8ec106b7' xmlns='http://jitsi.org/jitmeet'/><parameter name='msid' value='8ec106b7-video-1 5f89b9af-3483-462e-8a0f-bca83478b703-1' xmlns='urn:xmpp:jingle:apps:rtp:1'/></source><source ssrc='2955437961' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='[email protected]/8ec106b7' xmlns='http://jitsi.org/jitmeet'/><parameter name='msid' value='8ec106b7-video-1 5f89b9af-3483-462e-8a0f-bca83478b703-1' xmlns='urn:xmpp:jingle:apps:rtp:1'/></source><source ssrc='2771060444' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='[email protected]/8ec106b7' xmlns='http://jitsi.org/jitmeet'/><parameter name='msid' value='8ec106b7-video-1 5f89b9af-3483-462e-8a0f-bca83478b703-1' xmlns='urn:xmpp:jingle:apps:rtp:1'/></source><source ssrc='4013738996' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='[email protected]/8ec106b7' xmlns='http://jitsi.org/jitmeet'/><parameter name='msid' value='8ec106b7-video-1 5f89b9af-3483-462e-8a0f-bca83478b703-1' xmlns='urn:xmpp:jingle:apps:rtp:1'/></source><source ssrc='2417336756' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='[email protected]/8ec106b7' xmlns='http://jitsi.org/jitmeet'/><parameter name='msid' value='8ec106b7-video-1 5f89b9af-3483-462e-8a0f-bca83478b703-1' xmlns='urn:xmpp:jingle:apps:rtp:1'/></source><source name='jvb-v0' ssrc='882837485' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='jvb' xmlns='http://jitsi.org/jitmeet'/><parameter name='msid' value='mixedmslabel mixedlabelvideo0' xmlns='urn:xmpp:jingle:apps:rtp:1'/></source><ssrc-group semantics='FID' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><source ssrc='3326384229'/><source ssrc='868419519'/></ssrc-group><ssrc-group semantics='SIM' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><source ssrc='3326384229'/><source ssrc='2955437961'/><source ssrc='2771060444'/></ssrc-group><ssrc-group semantics='FID' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><source ssrc='2955437961'/><source ssrc='4013738996'/></ssrc-group><ssrc-group semantics='FID' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><source ssrc='2771060444'/><source ssrc='2417336756'/></ssrc-group></description><transport ufrag='b9l5i1frhims2n' pwd='61ct04j3io26dn8veeh8k2sap5' xmlns='urn:xmpp:jingle:transports:ice-udp:1'><web-socket url='wss://tifr.ml:443/colibri-ws/default-id/e292f7d43441301c/k66rln0ffxv4jfea?pwd=61ct04j3io26dn8veeh8k2sap5' xmlns='http://jitsi.org/protocol/colibri'/><rtcp-mux/><fingerprint hash='sha-256' setup='actpass' required='false' xmlns='urn:xmpp:jingle:apps:dtls:0'>99:F4:AC:FE:AF:A4:3D:A7:9B:3A:08:C7:99:42:82:6E:B7:40:CC:7F:3A:41:57:CD:18:FC:23:84:C3:12:73:5B</fingerprint><candidate ip='192.168.200.61' foundation='1' type='host' protocol='udp' network='0' generation='0' component='1' id='5f81d8670adc4e70ffffffffcec91816' port='10000' priority='2130706431'/><candidate ip='122.200.18.71' foundation='2' protocol='udp' network='0' generation='0' rel-port='10000' component='1' rel-addr='192.168.200.61' id='1b3af99970adc4e70ffffffff88e86220' port='10000' priority='1694498815' type='srflx'/></transport></content><group semantics='BUNDLE' xmlns='urn:xmpp:jingle:apps:grouping:0'><content name='audio'/><content name='video'/></group><bridge-session id='f5d7d' xmlns='http://jitsi.org/protocol/focus'/></jingle></iq>
2022-02-10T10:26:21.697665Z DEBUG Received non-Jingle IQ
The xmpp-parsers Jingle::try_from
on the element must be failing due to something specific about the Jingle stanza your focus is sending (https://github.com/avstack/gst-meet/blob/master/lib-gst-meet/src/conference.rs#L546).
from gst-meet.
The files are not showing up in gst-meet location where I am running the command. (I am running it in the same location as where gst-meet is installed. Is that an issue with GStreamer? Should I try to reinstall that? The files are not showing up anywhere. For now, I am considering reinstalling the packages that were installed. But that will still not fix the connection closed issue (pinger issue). What can I do about that?
from gst-meet.
- The connection closed issue implies that pings are not being sent from server side (mod_pinger not installed or not working), and something in the path (router, firewall, load balancer etc) is closing the connection after a short timeout. gst-meet does not yet send pings itself.
- It looks like the Jingle session is not being set up because the session-initiate is ignored, as per my previous comment. You can look into the code of xmpp-parsers to see why your Jingle XML (in the logs above) doesn't match the structure expected by xmpp-parsers
from gst-meet.
Instead of blindly looking at the code, I would recommend to use match
on the result of TryFrom::try_from
, replacing if let Ok(jingle) = Jingle::try_from(element) {
with something like:
match Jingle::try_from(element) {
Ok(jingle) => { … },
Err(err) => error!("Jingle element failed to parse: {err}"),
}
Doing so everywhere will lead to a much better debugging experience.
from gst-meet.
Yes absolutely, improvements to error handling in general would be welcomed!
from gst-meet.
- As of 68c9935, client -> server pings are implemented, so the connection should stay alive even in the face of routers/firewalls/LBs with short timeouts. Please let me know if that solves your connection reset issue.
- In 3f27c90 I updated GStreamer to the released 1.20 version, and removed the vendored xmpp-parsers dependency in favour of a smaller crate with some customised elements for Jitsi's non-standard stuff. (Further improvement is planned here, but this at least makes it easier to track upstream xmpp-parsers updates). As part of this work I also improved the logging when a Jingle element fails to parse, so you should get a more useful error message now.
from gst-meet.
Related Issues (20)
- docker could not get correct result HOT 9
- Can't show the video with docker HOT 9
- Can't compile it by nix HOT 10
- No video and audio: Ignoring empty DtlsFingerprint extension HOT 1
- TWCC feedback (fix Bandwidth Estimation) HOT 2
- Release new versions of packages on crates.io HOT 4
- Use extdisco module from xmpp-parsers 0.19
- Build Docker images and publish on registries HOT 1
- Using JWT token auth with gst-meet HOT 6
- Steps to build gst-meet on Ubuntu
- cannot resolve apk.avstack.net HOT 2
- cannot join conferences and play audio in meet.jit.si HOT 3
- Self-hosted Jitsi Meet errors 200 on colibri-ws
- Using awss3sink in gst template
- Not able to compile HOT 4
- ERROR fatal (in write loop): invalid utf-8 sequence of 1 bytes from index 469 HOT 6
- I can't send audio files or save the resultant conversation file. HOT 23
- Do I need a specific version of prosody/jitsi? HOT 1
- Problems with .webm recording example HOT 13
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gst-meet.