You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+7-5Lines changed: 7 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -191,6 +191,8 @@ lk room join --identity bot \
191
191
192
192
You should now see both video and audio tracks published to the room.
193
193
194
+
Note: To publish H.265/HEVC over sockets, use the `h265://` scheme (for example, `h265:///tmp/myvideo.sock` or `h265://127.0.0.1:16400`). Ensure your LiveKit deployment and clients support H.265 playback.
195
+
194
196
### Publish from TCP (i.e. gstreamer)
195
197
196
198
It's possible to publish from video streams coming over a TCP socket. `lk` can act as a TCP client. For example, with a gstreamer pipeline ending in `! tcpserversink port=16400` and streaming H.264.
@@ -204,11 +206,11 @@ lk room join \
204
206
<room_name>
205
207
```
206
208
207
-
### Publish H.264 simulcast track from TCP
209
+
### Publish H.264/H.265 simulcast track from TCP
208
210
209
-
You can publish multiple H.264 video tracks from different TCP ports as a single [Simulcast](https://docs.livekit.io/home/client/tracks/advanced/#video-simulcast) track. This is done by using multiple `--publish` flags.
211
+
You can publish multiple H.264 or H.265 video tracks from different TCP ports as a single [Simulcast](https://docs.livekit.io/home/client/tracks/advanced/#video-simulcast) track. This is done by using multiple `--publish` flags.
210
212
211
-
The track will be published in simulcast mode if multiple `--publish` flags with the syntax `h264://<host>:<port>/<width>x<height>` are passed in as arguments.
213
+
The track will be published in simulcast mode if multiple `--publish` flags with the syntax `<codec>://<host>:<port>/<width>x<height>` are passed in as arguments, where `<codec>` is `h264` or `h265`. All layers must use the same codec.
- LiveKit CLI can only publish simulcast tracks using H.264 codec.
244
+
- LiveKit CLI can publish simulcast tracks using H.264 or H.265. Ensure your LiveKit deployment and clients support the chosen codec (HEVC/H.265 support varies by platform/browser).
243
245
- You can only use multiple `--publish` flags to create a simulcast track.
244
246
- Using more than 1 `--publish` flag for other types of streams will not work.
245
247
- Tracks will automatically be set to HIGH/MED/LOW resolution based on the order of their width.
@@ -248,7 +250,7 @@ Notes:
248
250
### Publish streams from your application
249
251
250
252
Using unix sockets, it's also possible to publish streams from your application. The tracks need to be encoded into
251
-
a format that WebRTC clients could playback (VP8, H.264, and Opus).
253
+
a format that WebRTC clients could playback (VP8, H.264, H.265, and Opus).
252
254
253
255
Once you are writing to the socket, you could use `ffplay` to test the stream.
Copy file name to clipboardExpand all lines: cmd/lk/join.go
+26-9Lines changed: 26 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -59,7 +59,7 @@ var (
59
59
TakesFile: true,
60
60
Usage: "`FILES` to publish as tracks to room (supports .h264, .ivf, .ogg). "+
61
61
"can be used multiple times to publish multiple files. "+
62
-
"can publish from Unix or TCP socket using the format '<codec>://<socket_name>' or '<codec>://<host:address>' respectively. Valid codecs are \"h264\", \"vp8\", \"opus\"",
62
+
"can publish from Unix or TCP socket using the format '<codec>://<socket_name>' or '<codec>://<host:address>' respectively. Valid codecs are \"h264\", \"h265\", \"vp8\", \"opus\"",
// simulcastURLParts represents the parsed components of a simulcast URL
376
378
typesimulcastURLPartsstruct {
379
+
codecstring// "h264" or "h265"
377
380
networkstring// "tcp" or "unix"
378
381
addressstring
379
382
widthuint32
380
383
heightuint32
381
384
}
382
385
383
-
// parseSimulcastURL validates and parses a simulcast URL in the format h264://<host:port>/<width>x<height> or h264://<socket_path>/<width>x<height>
386
+
// parseSimulcastURL validates and parses a simulcast URL in the format <codec>://<host:port>/<width>x<height> or <codec>://<socket_path>/<width>x<height>
returnnil, fmt.Errorf("simulcast URL must be in format h264://<host:port>/<width>x<height> or h264://<socket_path>/<width>x<height>, got: %s", url)
390
+
returnnil, fmt.Errorf("simulcast URL must be in format <codec>://<host:port>/<width>x<height> or <codec>://<socket_path>/<width>x<height> where codec is h264 or h265, got: %s", url)
Usage: "`FILES` to publish as tracks to room (supports .h264, .ivf, .ogg). "+
159
159
"Can be used multiple times to publish multiple files. "+
160
-
"Can publish from Unix or TCP socket using the format '<codec>:///<socket_path>' or '<codec>://<host:port>' respectively. Valid codecs are \"h264\", \"vp8\", \"opus\". "+
161
-
"For simulcast: use 2-3 h264:// URLs with format 'h264://<host:port>/<width>x<height>' or 'h264:///path/to/<socket_path>/<width>x<height>' (quality determined by width order)",
160
+
"Can publish from Unix or TCP socket using the format '<codec>:///<socket_path>' or '<codec>://<host:port>' respectively. Valid codecs are \"h264\", \"h265\", \"vp8\", \"opus\". "+
161
+
"For simulcast: use 2-3 h264:// or h265:// URLs with format '<codec>://<host:port>/<width>x<height>' or '<codec>:///path/to/<socket_path>/<width>x<height>' (all layers must use the same codec; quality determined by width order)",
0 commit comments