meetecho / simple-whep-client

Simple WHEP Client (based on GStreamer's webrtcbin)
GNU General Public License v3.0
7 stars 2 forks source link

[415] Unsupported Media Type #7

Closed vishalpi9 closed 7 months ago

vishalpi9 commented 7 months ago

I'm using the "streaming.dolby.io" platform for streaming. Using there WHIP and WHEP APIs for whip and whep client. Im able to stream the data using simple-whip-client and able to test/playback here. But simple-whep-client is failing with 415. According to doc, the media types negotiation is delegated to GStreamer while signalling handshake. Not sure why I'm getting this error. Any help would be appreciated.

WHIP CMD: ./whip-client -u https://dolby.io/whip/myStreamName \ -t xxx \ -V "videotestsrc is-live=true pattern=ball ! videoconvert ! queue ! vp8enc deadline=1 ! rtpvp8pay pt=96 ssrc=2 ! queue ! application/x-rtp,media=video,encoding-name=VP8,payload=96"

WHEP CMD: /whep-client -u https://dolby.io/whep/myStreamName -t xxxx -S stun://stun.l.google.com:19302

WHEP Logs:


Simple WHEP client

WHEP endpoint: https://dolby.io/whep/myStreamName Bearer Token: xxx Trickle ICE: yes (HTTP PATCH) Auto STUN/TURN: no STUN server: stun://stun.l.google.com:19302 TURN server: (none) [WHEP] Configured jitter-buffer size (latency) for PeerConnection to 200ms [WHEP] Starting the GStreamer pipeline [ERR] [src/whep-client.c:whep_connect:402] [415] Unsupported Media Type [WHEP] Disconnecting from server (HTTP error)

lminiero commented 7 months ago

As explained in the README, this WHEP client expects the server to send, which is a mode the latest WHEP specifications dropped: now clients are supposed to send an offer too, even if they just want to receive media. As such, you can't use this WHEP client anymore. Better use the native WHEP support in GStreamer.

vishalpi9 commented 7 months ago

Thank you for your response. In Gstreamer, which one should I use: webrtcbin or whepsrc? Also, it would be great if you could share the sample WHEP startup pipeline.

lminiero commented 7 months ago

whepsrc; I'm sorry but I'm not familiar with the element or its syntax, so you'll have to find examples elsewhere.

lminiero commented 7 months ago

@vishalpi9 FYI, I finally found some time to look into it, and now the WHEP client can send offers too, which means you should be able to use it with Dolby/Millicast and other WHEP servers (it definitely works with my Simple WHEP Server + Janus). You can test it checking PR #9.

vishalpi9 commented 7 months ago

@lminiero Thank you very much for adding WHEP offer support. I'm having trouble with the libsoup version after trying the latest build. I've tried multiple ways to but the error persists. As per documentationn the souphttpsrc chooses the libsoup versoin at runtime.It seems like the app is calling both 2.0 and 3.0 versions. I looked into the codebase but couldn't find anything constructive.

Could you please offer any additional suggestions or solutions that might assist in resolving this persistent error?

Logs: `-------------------- Simple WHEP client

WHEP endpoint: https://dolby/api/whip/test Bearer Token: xxx Trickle ICE: yes (HTTP PATCH) Auto STUN/TURN: no STUN server: (none) TURN server: (none) Audio caps: application/x-rtp,media=audio,encoding-name=opus,clock-rate=48000,encoding-params=(string)2,payload=111 Video caps: application/x-rtp,media=video,encoding-name=VP8,clock-rate=90000,payload=96

(whep-client:21111): libsoup-ERROR **: 13:39:11.481: libsoup3 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported. Trace/breakpoint trap (core dumped)`

lminiero commented 7 months ago

Very likely your GStreamer installation is using libsoup2, so considering the new WHEP client uses libsoup3 you get the clash. I may try to make both libsoup2 and libsoup3 supported via a compile flag, but that will take time and I don't know when I'll be able to look into it, especially considering I'm heading to FOSDEM now.