Web
This section mainly introduces how to control the mirror and fill mode of video rendering through TRTC Web SDK
Notes:
This tutorial is based on the 5.x TRTC Web SDK. If you are using the 4.x version SDK, you can refer to the objectFit attribute of stream.play.
Mirror
There are 2 ways to control the rendering mirror effects of local and remote videos, respectively are trtc.startLocalVideo({ option: { mirror: true } }) and trtc.startRemoteVideo({ option: { mirror: true }}).
// Local camera rendering image, the default is trueawait trtc.startLocalVideo({ option: { mirror: true }});// Dynamically updating parametersawait trtc.updateLocalVideo({ option: { mirror: false }});trtc.on(TRTC.EVENT.REMOTE_VIDEO_AVAILABLE, async ({ userId, streamType }) => {await trtc.startRemoteVideo({userId,streamType,// You need to pre-place the video container in the DOM.// It is recommended to use '${userId}_${streamType}' as the element id.view: `${userId}_${streamType}`,// Mirror the remote video. The default value is falseoption: { mirror: true }});// Dynamically updating parametersawait trtc.updateRemoteVideo({ userId, streamType, option: { mirror: false }})});
Notice:
The mirroring effect is only used for rendering, and there is no mirroring effect on the actual encoded or decoded picture. You can use the custom collection method of canvas to flip the canvas to achieve the effect of coding mirror.
Fill
There are 2 ways to control the rendering fill mode of local and remote videos, respectively are trtc.startLocalVideo({ option: { fillMode: 'cover' } }) and trtc.startRemoteVideo({ option: { fillMode: 'cover' }}).
Parameters:
contain
Keep the aspect ratio and display the full picture in the target container. If the aspect ratio does not match the target container, it will be filled with a black edge. You are advised to use this parameter for screen sharing.cover
A default value, retaining the aspect ratio, is displayed in the target container, and if the aspect ratio does not match the target container, the screen is cropped to fill the entire target container.fill
The aspect ratio is not retained and is displayed in the target container. If the aspect ratio does not match the target container, the screen is stretched to fill the entire template container.// Local camera fill mode, default is coverawait trtc.startLocalVideo({ option: { fillMode: 'cover' }});// Dynamically updating parametersawait trtc.updateLocalVideo({ option: { fillMode: 'contain' }});trtc.on(TRTC.EVENT.REMOTE_VIDEO_AVAILABLE, async ({ userId, streamType }) => {await trtc.startRemoteVideo({userId,streamType,// You need to pre-place the video container in the DOM.// It is recommended to use '${userId}_${streamType}' as the element id.view: `${userId}_${streamType}`,option: { fillMode: 'contain' }});// Dynamically updating parametersawait trtc.updateRemoteVideo({ userId, streamType, option: { fillMode: 'cover' }})});