This message was deleted.
# helpdesk
s
This message was deleted.
f
Which SDK?
a
I need to run that on a PI, so either Python, Go or NodeJS
f
NodeJS is a pure server side SDK and does not have client (i, e. media publish/subscribe functionality). Go SDK has client side functionality also. You can try that.
livekit-cli
uses the Go SDK to publish. You can see how the CLI tool publishes simulcast here.
a
That’s a great hint. I was already using livekit-cli, feeding NAL units via UnixSock from Python. That worked great. But this way does not support simulcast. Will check the load tester
Hmm. A bit confused now. I see what is happening in Go, and it seems, that the Python client SDK is not having similar "publish_simulcast_track" functionality. Is that correct?
f
Python SDK is like a client. You should be able to publish simulcast. Will defer to @boundless-energy-78552 for confirmation.
a
It’s a bit hard to see that there. The term simulcast is just mentioned once in the issues (unrelated). Now that I have figured out the Gstreamer pipeline for having three differently encoded (w.r.t. resolution and bitrate) H.264 streams it would be awesome to publish that as it comes out of Gstreamer to LiveKit. This would be a game changer and would make me prefer LK over Mediasoup on a longer run
Thanks for your passion, BTW
Doesn't look that good...
Copy code
publication = await room.local_participant.publish_tracks([simulcast_track_720p, simulcast_track_360p, simulcast_track_180p], options)

 File "/home/pi/test1.py", line 78, in main
    publication = await room.local_participant.publish_tracks([simulcast_track_720p, simulcast_track_360p, simulcast_track_180p], options)
, 'LocalParticipant' object has no attribute 'publish_tracks'
d
@adventurous-twilight-28575 simulcast should be enabled by default in Python.
check this out as an example for publishing video: https://github.com/livekit/python-sdks/blob/main/examples/publish_hue.py#L43
a
I have no doubt but I have some missing links. I have three preencoded streams and don’t know where to put them
Thanks, but this example just publishes one track. I need simulcast publishing, so three tracks simultaneously
d
Simulcast is a single logical track, encoded three times at different resolutions. the encoding and resizing is handled internally
this is typically how libwebrtc-based clients function. Go is an exception because it doesn't handle encoding, but leaving it to the developer to pass in pre-encoded tracks.
a
Sure. Just in my case it’s me who is doing the encoding. 😀 I explained the reason and motivation in my initial thread
Looks like i have to “Go” then 😀
➕ 1
d
I see, I didn't read the entire thread, so probably missed that detail. in that case you'd want to use the Go SDK directly. please refer to the CLI to see how it passes in simulcast tracks
yup! Go is the way to go here 😉
a
Works btw. Pretty good
🎉 1
f
Nice!!!