some-breakfast-27057
09/23/2025, 9:24 AMtall-airline-16756
09/23/2025, 9:24 AMtall-airline-16756
09/23/2025, 9:25 AMmute() method on audio or video tracks to pause data transmission. When you’re ready, simply call unmute() to resume.
• Pause Upstream Tracks: The pauseUpstream() method lets you stop sending media to the server while keeping your local streams active. When you want to start again, just use resumeUpstream().
• Enable Dynacast: This feature smartly pauses video layers that subscribers aren’t watching, which helps lower CPU and bandwidth usage.
• Adaptive Stream: It automatically adjusts video quality and pauses data flow when video elements aren’t visible, saving resources.
These approaches can really help optimize your app’s performance during overlay pauses. If you’d like, I’m here to walk you through how to implement any of these options—just let me know!
Sources: Camera & microphone | LiveKit Docs | src/room/track/LocalVideoTrack.ts | lib/usePerfomanceOptimiser.ts | Sources/LiveKit/Types/Options/RoomOptions.swiftsome-breakfast-27057
09/23/2025, 9:26 AMmute() method on audio or video tracks to pause data transmission. When you’re ready, simply call unmute() to resume.
• Pause Upstream Tracks: The pauseUpstream() method lets you stop sending media to the server while keeping your local streams active. When you want to start again, just use resumeUpstream().tall-airline-16756
09/23/2025, 9:27 AMMediaStreamTrack from capturing and processing media right at the source, which helps lighten the load on your device.
On the other hand, pausing upstream just stops sending data to the server but keeps the local media stream running. This can be handy if you still want to see the video on your end, but it won’t really ease up on CPU usage since the capture and processing are still happening.
So, if minimizing CPU usage during pauses is your main goal, muting tracks is definitely the way to go. If you have any questions or want a hand with setting this up, I’m here to help!
Sources: src/room/track/LocalTrack.ts | pkg/sfu/forwarder_test.go | Optimizing Video Calls for Low-Powered Devices in LiveKit (JS SDK ≥ v2.14...some-breakfast-27057
09/23/2025, 9:28 AMtall-airline-16756
09/23/2025, 9:28 AMpauseUpstream() to temporarily stop sending media to the server while keeping your local streams active. This really helps lower server-side processing and bandwidth use.
• Server-Side Mute: If you’re an administrator, you have the option to mute tracks directly on the server through the Admin API or SDK. This stops media forwarding and eases the load downstream.
• Enable Dynacast: Dynacast is a great feature that dynamically pauses video layers not being watched by subscribers, which cuts down on server-side encoding and processing.
For optimizing your server, pausing upstream and enabling Dynacast tend to be especially effective. If you’d like, I’m here to help you set these up or answer any questions you have!
Sources: src/room/track/LocalTrack.ts | Optimizing Video Calls for Low-Powered Devices in LiveKit (JS SDK ≥ v2.14... | lib/usePerfomanceOptimiser.ts | livekit-protocol/src/livekit.rssome-breakfast-27057
09/23/2025, 9:30 AMtall-airline-16756
09/23/2025, 9:31 AMtrackSid of the track you want to mute by using the GetParticipant API or SDK method.
2. Call the Mute API: Then, use the mutePublishedTrack method with these parameters:
◦ `room`: The name of the room
◦ `identity`: The identity of the participant (agent or user)
◦ `trackSid`: The SID of the track you want to mute
◦ `muted`: Set this to true to mute or false to unmute
Here’s a simple example in TypeScript to illustrate:
const roomService = new RoomServiceClient(LIVEKIT_URL, API_KEY, API_SECRET);
await roomService.mutePublishedTrack(roomName, identity, trackSid, true); // Mute
await roomService.mutePublishedTrack(roomName, identity, trackSid, false); // Unmute
Just a quick reminder: make sure you have admin-level credentials to perform these actions. If you’re looking to enable remote unmute functionality, you can turn it on in the project settings or the configuration file if you’re using a self-hosted deployment. Please feel free to reach out if you have any questions or need more help—I’m here for you!
Sources: Managing participants | LiveKit Docs | packages/livekit-server-sdk/src/RoomServiceClient.ts | livekit-api/livekit/api/room_service.py | src/main/kotlin/io/livekit/server/RoomServiceClient.kt | cmd/lk/room.gosome-breakfast-27057
09/23/2025, 9:32 AMtall-airline-16756
09/23/2025, 9:33 AM