// sketch: replace the video track after obtaining a local stream// const localStream = TRTC.createStream({ ... });// await localStream.initialize();// await localStream.replaceTrack(beautyTrack);// await client.publish(localStream);
import AgoraRTC from 'agora-rtc-sdk-ng';// approach A: create a custom video track from MediaStreamTrack (API name per current agora-rtc-sdk-ng)const customVideoTrack = AgoraRTC.createCustomVideoTrack({ mediaStreamTrack: beautyTrack,});await client.publish([customVideoTrack /*, microphoneTrack */]);// approach B: when a camera track already exists// await cameraTrack.replaceTrack(beautyTrack);
import { Room, LocalVideoTrack, createLocalVideoTrack } from 'livekit-client';// sketch: create and publish from MediaStreamTrack (factory method per livekit-client version)const track = LocalVideoTrack.createFromMediaStreamTrack(beautyTrack);await room.localParticipant.publishTrack(track);// or on an existing LocalVideoTrack:// await localVideoTrack.replaceTrack(beautyTrack);