tencent cloud

Feedback

Android, iOS, Windows, and macOS

Last updated: 2022-09-26 14:58:04

    Overview

    Mobile live streaming uses mainly the portrait mode, but TRTC supports both the landscape and portrait modes, making it necessary to implement different page orientation logics. This document introduces you to the following:
    How to implement the portrait mode, for example, for video calls like those on WeChat
    How to implement the landscape mode, for example, for group communication applications such as Zoom
    How to customize settings for the rotation and rendering mode of the local image and remote images.
    
    
    

    Supported Platforms

    iOS
    Android
    macOS
    Windows
    Electron
    Web
    ×

    Portrait Mode

    To deliver an experience similar to that of WeChat video calls, you need to do two things.
    

    1. Set the orientation of your app to portrait.

    iOS
    Android
    Set the page orientation in Xcode > General > Deployment Info > Device Orientation.
    
    
    Alternatively, use the supportedInterfaceOrientationsForWindow method in Appdelegate.
    - (UIInterfaceOrientationMask)application:(UIApplication *)application
    supportedInterfaceOrientationsForWindow:(UIWindow *)window
    {
    
    return UIInterfaceOrientationMaskPortrait ;
    
    }
    
    explain
    This CSDN article offers a detailed guide on page orientation and adaptation on iOS for developers.
    Set the screenOrientation attribute of the activity element to portrait:
    <activity android:name=".trtc.TRTCMainActivity" android:launchMode="singleTask" android:windowSoftInputMode="adjustPan"
    android:screenOrientation="portrait" />
    
    

    2. Set the orientation of the SDK to portrait.

    When you use the setVideoEncoderParam API of TRTCCloud to set video encoding parameters, set resMode to TRTCVideoResolutionModePortrait. Below is the sample code:
    iOS
    Android
    TRTCVideoEncParam* encParam = [TRTCVideoEncParam new];
    encParam.videoResolution = TRTCVideoResolution_640_360;
    encParam.videoBitrate = 600;
    encParam.videoFps = 15;
    encParam.resMode = TRTCVideoResolutionModePortrait; // Set the resolution mode to portrait.
    
    [trtc setVideoEncoderParam: encParam];
    
    TRTCCloudDef.TRTCVideoEncParam encParam = new TRTCCloudDef.TRTCVideoEncParam();
    encParam.videoResolution = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_640_360;
    encParam.videoBitrate = 600;
    encParam.videoFps = 15;
    encParam.videoResolutionMode = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_MODE_PORTRAIT; //Set the resolution mode to portrait.
    trtc.setVideoEncoderParam(encParam);
    

    Landscape Mode

    The steps to implement the landscape mode for your app are similar to the steps of implementing the portrait mode, except that different values are used for the parameters in step 1 and step 2. In particular, regarding the value of resMode in TRTCVideoEncParam in step 2,
    on iOS, set it to TRTCVideoResolutionModeLandscape.
    on Android, set it to TRTC_VIDEO_RESOLUTION_MODE_LANDSCAPE.

    Custom Settings

    The TRTC SDK provides different APIs for the setting of the rotation and rendering mode of the local image and remote images.
    API
    Description
    Remarks
    setLocalViewRotation
    Set the clockwise rotation of the local image preview
    Rotate 90, 180, or 270 degrees clockwise
    setLocalViewFillMode
    Set the rendering mode of the local image preview
    Crop the image or fill the blank space with black bars
    setRemoteViewRotation
    Set the clockwise rotation of remote video images
    Rotate 90, 180, or 270 degrees clockwise
    setRemoteViewFillMode
    Set the rendering mode of remote video images
    Crop the image or fill the blank space with black bars
    setVideoEncoderRotation
    Set the clockwise rotation of encoded images
    Rotate 90, 180, or 270 degrees clockwise
    
    
    

    GSensorMode

    For adaptation during video recording and CDN live streaming, the TRTC SDK provides a simple gravity-sensing adaptation feature, which you can enable using the setGSensorMode API of TRTCCloud.
    Currently, the feature supports only 180-degree adaptive rotation. This means that when a user's phone is turned 180 degrees, the orientation of the user's image seen by remote users remains the same, but this does not work when the phone is turned 90 degrees or 270 degrees. Since the feature is achieved through encoder-based rotation adjustment, adaptive rotation is also possible for recorded videos and videos played via HTML5 players.
    notice
    Another way to achieve adaptive rotation is by embedding the gravity direction of a video in the information of each video frame, and adjusting the rotation degree of the video at the viewer end. This scheme requires the introduction of additional transcoding resources to adjust the orientation of recorded videos as expected and is therefore not recommended.
    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