The video configuration for the shared screen stream.
USTRUCT(BlueprintType)
struct FScreenVideoParameters {
GENERATED_BODY()
public:
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "Agora|ScreenVideoParameters")
FVideoDimensions dimensions = FVideoDimensions();
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "Agora|ScreenVideoParameters")
int frameRate = 15;
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "Agora|ScreenVideoParameters")
int bitrate = 0;
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "Agora|ScreenVideoParameters")
EVIDEO_CONTENT_HINT contentHint = EVIDEO_CONTENT_HINT::CONTENT_HINT_MOTION;
#if defined(__ANDROID__) || (defined(__APPLE__) && TARGET_OS_IOS)
FScreenVideoParameters(){}
FScreenVideoParameters(const agora::rtc::ScreenVideoParameters & AgoraData){
dimensions = FVideoDimensions(AgoraData.dimensions);
frameRate = AgoraData.frameRate;
bitrate = AgoraData.bitrate;
contentHint = static_cast<EVIDEO_CONTENT_HINT>(AgoraData.contentHint);
}
agora::rtc::ScreenVideoParameters CreateAgoraData() const {
agora::rtc::ScreenVideoParameters AgoraData;
AgoraData.dimensions = dimensions.CreateAgoraData();
AgoraData.frameRate = frameRate;
AgoraData.bitrate = bitrate;
AgoraData.contentHint = static_cast<agora::rtc::VIDEO_CONTENT_HINT>(contentHint);
return AgoraData;
}
void FreeAgoraData(agora::rtc::ScreenVideoParameters& AgoraData) const {
dimensions.FreeAgoraData(AgoraData.dimensions);
}
#endif
};
Attributes
- dimensions
- The video encoding dimension. The default value is 1280 × 720.
- If the aspect ratio of dimensions is different from that of the screen, the SDK adjusts the video encoding resolution according to the following rules (take the dimensions of 1280 × 720 as an example):
- When the width and height of the screen are both lower than those of dimensions, the SDK uses the resolution of the screen for video encoding. For example, if the screen is 640 × 360, the SDK uses 640 × 360 for video encoding.
- When either the width or height of the screen is higher than that of dimensions, the SDK uses the maximum values that do not exceed those of dimensions while maintaining the aspect ratio of the screen for video encoding. For example, if the screen is 2000 × 1500, the SDK uses 960 × 720 for video encoding.
Note:
- The billing for the screen sharing stream is based on the value of dimensions. When you do not pass in a value, Agora bills you at 1280 × 720; when you pass in a value, Agora bills you at that value.
- The value of this parameter does not indicate the orientation mode of the output video. For how to set the video orientation, see EUABT_ORIENTATION_MODE.
- Whether the 720p resolution or above can be supported depends on the device. If the device cannot support 720p, the frame rate will be lower than the set value.
Note: When setting the encoding resolution in the scenario of sharing documents (
SCREEN_SCENARIO_DOCUMENT), choose one of the following two methods:
- If you require the best image quality, it is recommended to set the encoding resolution to be the same as the capture resolution.
- If you wish to achieve a relative balance between image quality, bandwidth, and system performance, then:
- When the capture resolution is greater than 1920 × 1080, it is recommended that the encoding resolution is not less than 1920 × 1080.
- When the capture resolution is less than 1920 × 1080, it is recommended that the encoding resolution is not less than 1280 × 720.
- frameRate
- The video encoding frame rate (fps). The default value is 15.
- bitrate
- The video encoding bitrate (Kbps).
- contentHint
- The content hint for screen sharing. See EVIDEO_CONTENT_HINT.