webrtc自适应分辨率的设置

DegradationPreference 是一个枚举类,用于在视频编码或实时通信(如 WebRTC)中指定系统资源不足时如何处理质量下降的策略。以下是该枚举类的中文解释:

enum class DegradationPreference {
  // 禁用:不根据资源过载信号采取任何行动。不属于 Web API 的一部分。
  DISABLED,

  // 保持帧率:在资源过载时,请求降低分辨率,可能会导致画面缩小。
  MAINTAIN_FRAMERATE,

  // 保持分辨率:在资源过载时,请求降低帧率,可能会导致丢帧。
  MAINTAIN_RESOLUTION,

  // 平衡模式:尝试在帧率和分辨率之间找到一个“令人满意”的平衡点。
  BALANCED,
};

详细解释:

  1. DISABLED

    • 含义:禁用任何基于资源过载信号的质量下降策略。

    • 适用场景:当你不希望系统自动调整视频质量时使用。注意,这个选项通常不属于 Web API 的一部分。

  2. MAINTAIN_FRAMERATE

    • 含义:在资源过载时,优先保持帧率,降低分辨率以减轻系统负担。

    • 适用场景:适用于对流畅性要求较高的场景(如游戏直播、实时视频通话),即使画面分辨率降低,也要确保视频流畅。

  3. MAINTAIN_RESOLUTION

    • 含义:在资源过载时,优先保持分辨率,降低帧率以减轻系统负担。

    • 适用场景:适用于对画质要求较高的场景(如演示文稿、静态画面),即使帧率降低,也要确保画面清晰。

  4. BALANCED

    • 含义:在资源过载时,尝试在帧率和分辨率之间找到一个平衡点,既不过分降低帧率,也不过分降低分辨率。

    • 适用场景:适用于大多数通用场景,兼顾流畅性和画质。

使用场景示例:

  • 如果你在开发一个视频会议应用,可以选择 MAINTAIN_FRAMERATE,以确保视频流畅性。

  • 如果你在开发一个屏幕共享应用,可以选择 MAINTAIN_RESOLUTION,以确保共享内容的清晰度。

  • 如果你不确定具体需求,可以选择 BALANCED,让系统自动调整。

这个枚举类帮助开发者在资源有限的情况下,灵活地控制视频质量与性能之间的权衡。

具体在项目中配置:

	rtc::scoped_refptr<CapturerTrackSource> video_device =
		CapturerTrackSource::Create();
	if (video_device) {
		rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track_(
			peer_connection_factory_->CreateVideoTrack(video_device, kVideoLabel));
		//main_wnd_->StartLocalRenderer(video_track_.get());
		((MainWindow*)main_wnd_)->registerFrame(video_track_.get());
		auto result_or_error = peer_connection_->AddTrack(video_track_, { kStreamId });
		auto v = result_or_error.value();
		auto para = v->GetParameters();
		para.degradation_preference = webrtc::DegradationPreference::DISABLED;
		v->SetParameters(para);
		if (!result_or_error.ok()) {
			RTC_LOG(LS_ERROR) << "Failed to add video track to PeerConnection: "
				<< result_or_error.error().message();
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值