tencent cloud

Feedback

Last updated: 2023-09-28 11:50:43
    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 true
    await trtc.startLocalVideo({ option: { mirror: true }});
    
    // Dynamically updating parameters
    await 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 false
    option: { mirror: true }
    });
    // Dynamically updating parameters
    await 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.
    Refer to: CSS object-fit .
    // Local camera fill mode, default is cover
    await trtc.startLocalVideo({ option: { fillMode: 'cover' }});
    
    // Dynamically updating parameters
    await 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 parameters
    await trtc.updateRemoteVideo({ userId, streamType, option: { fillMode: 'cover' }})
    });
    
    Contact Us

    Contact our sales team or business advisors to help your business.

    Technical Support

    Open a ticket if you're looking for further assistance. Our Ticket is 7x24 avaliable.

    7x24 Phone Support