Netless

Netless

  • 通用文档
  • 常见问题
  • JavaScript
  • Android
  • iOS
  • Server
  • GitHub
  • 🇬🇧 English

›常用功能

产品概述

  • 使用须知
  • 开源项目
  • 版本历史

快速开始

  • 概述
  • 客户端集成
  • 初始化 SDK
  • 创建房间/获取房间信息
  • 加入房间
  • 生命周期以及事件回调

常用功能

  • 文档转换与播放
  • 状态管理
  • 教具使用
  • 视角操作
  • 白板操作
  • 自定义事件
  • 页面(场景)管理
  • 大课只读
  • 回放
  • RTC 混音

升级指南

  • 2.9.0迁移指南

视角操作

本文中的 API,都可以在 WhiteRoom 类中查看。本文示例代码中的 room 即为 whiteRoom 的实例。

White SDK 提供的白板是向四方无限延伸的。同时也允许用户通过鼠标滚轮、手势等方式移动白板。因此,即便是同一块白板的同一页,不同用户的屏幕上可能看到的内容是不一样的。为了满足,所有用户观看同一内容的需求,本文引入了「主播模式」这个概念。

主播视角

sdk 支持将房间内的某一个人设为主播(其他用户会自动变成 观众模式),该用户屏幕上看到的内容即是其他所有观众看到的内容。 当主播进行视角的放缩、移动时,其他人的屏幕也会自动进行放缩、移动等操作,来保证,可以观看到主播端所有的可见内容。

  • 观众端显示的内容,多于主播端的情况

主播模式中,主播所看到的内容,会全部同步到观众端。但是由于观众端屏幕比例可能与主播端不一致。为了完全显示主播端的内容,会进行缩放调整,类似于电影播放时,为了保持原始画面比例并保留原始内容,在某些显示器上,会进行比例缩放,会出现黑边。

视角模式 —— 主播,观众,自由(默认)

typedef NS_ENUM(NSInteger, WhiteViewMode) {
    // 自由模式
    // 用户可以自由放缩、移动视角。
    // 即便房间里有主播,主播也无法影响用户的视角。
    WhiteViewModeFreedom,
    // 追随模式
    // 用户将追随主播的视角。主播在看哪里,用户就会跟着看哪里。
    // 在这种模式中,如果用户进行缩放、移动视角操作,将自动切回 freedom模式。
    WhiteViewModeFollower,
    // 主播模式
    // 房间内其他人的视角模式会被自动修改成 follower,并且强制观看该用户的视角。
    // 如果房间内存在另一个主播,该主播的视角模式也会被强制改成 follower。
    WhiteViewModeBroadcaster,
};

//以下类,只有在 fireRoomStateChanged: 回调事件中,才会使用。
@interface WhiteBroadcastState : WhiteObject
//视角模式
@property (nonatomic, assign) WhiteViewMode viewMode;
@property (nonatomic, assign) NSInteger broadcasterId;
@property (nonatomic, strong) WhiteMemberInformation *broadcasterInformation;
@end

设置视角模式

  • 例子:设置当前用户为主播视角
//只需要传入枚举值即可
[whiteRoom setViewMode:WhiteViewModeBroadcaster];

获取当前视角状态

[self.room getBroadcastStateWithResult:^(WhiteBroadcastState *state) {
    NSLog(@"%@", [state jsonString]);
}];

视角中心同步

同一个房间的不同用户各自的屏幕尺寸可能不一致,这将导致他们的白板都有各自不同的尺寸。实际上,房间的其他用户会将白板的中心对准主播的白板中心(注意主播和其他用户的屏幕尺寸不一定相同)。

我们需要通过如下方法设置白板的尺寸,以便主播能同步它的视角中心。

[room refreshViewSize];

尺寸应该和白板在产品中的实际尺寸相同(一般而言就是浏览器页面或者应用屏幕的尺寸)。如果用户调整了窗口大小导致白板尺寸改变。应该重新调用该方法刷新尺寸。

调整视角

2.2.0新增 API,2.2.2 增加动画选项;回放 replay 与 实时房间 room 都支持该 API

@interface WhiteDisplayer
// 调整视角中心
- (void)moveCamera:(WhiteCameraConfig *)camera;
// 调整视觉矩形
- (void)moveCameraToContainer:(WhiteRectangleConfig *)rectange;
@end

调整视角中心

moveCamera API,可以用来调整视角,参数均为可选参数。SDK 会根据传入参数,调整视角中心与缩放比例。

@interface WhiteCameraConfig : WhiteObject
@property (nonatomic, strong, nullable) NSNumber *centerX;
@property (nonatomic, strong, nullable) NSNumber *centerY;
/** 缩放比例,原先 zoomScale 已弃用 */
@property (nonatomic, strong, nullable) NSNumber *scale;
/**
 AnimationMode 默认为 AnimationModeContinuous,
 其他属性,均为可选值,需要使用 NSNumber
 */
@property (nonatomic, assign) AnimationMode animationMode;

@end

调整视觉矩形

除了调整视角中心,SDK 还提供调整视觉矩形API。

视觉矩形表示你的视角必须容纳的区域。当你设置好视觉矩形后,视角会自动调整到刚好可以完整展示视觉矩形所表示的范围。

@interface WhiteRectangleConfig : WhiteObject

- (instancetype)initWithInitialPosition:(CGFloat)width height:(CGFloat)height;
/** 移动到初始位置,并根据宽高进行缩放 */
- (instancetype)initWithInitialPosition:(CGFloat)width height:(CGFloat)height animation:(AnimationMode)mode;

/** 白板内部坐标,以中心点为初始点,此处 originX: - width / 2,originY: -height /2 */
- (instancetype)initWithOriginX:(CGFloat)originX originY:(CGFloat)originY width:(CGFloat)width height:(CGFloat)height;
- (instancetype)initWithOriginX:(CGFloat)originX originY:(CGFloat)originY width:(CGFloat)width height:(CGFloat)height animation:(AnimationMode)mode;

@property (nonatomic, assign) CGFloat originX;
@property (nonatomic, assign) CGFloat originY;
@property (nonatomic, assign) CGFloat width;
@property (nonatomic, assign) CGFloat height;
@property (nonatomic, assign) AnimationMode animationMode;

@end

ppt 铺满当前屏幕

Whiteboard 开源版本 2.5.1 新增 API

/**
 将 ppt 等比例铺满屏幕(参考 UIViewContentModeScaleAspectFit )。
 该操作为一次性操作,不会持续锁定。
 如果当前页没有 ppt,则不会进行缩放。
 @param mode 动画参数,连续动画,或者瞬间切换
 */
- (void)scalePptToFit:(WhiteAnimationMode)mode;

禁止视角变化

2.2.0 新增 API

开发者可以通过如下方法禁止用户手动调整视角(使用鼠标滚轮缩放、Touch 板手势移动,缩放、移动端双指操作移动)。

// 禁止用户主动改变视野
[room disableCameraTransform:YES];
// 恢复用户视野变化权限
[room disableCameraTransform:NO];

你仍然通过程序调整视角;用户仍然可以进行笔画等输出操作。

相关文档

主播一对多业务实现

Last updated on 6/16/2020 by rick
← 教具使用白板操作 →
  • 主播视角
  • 视角模式 —— 主播,观众,自由(默认)
    • 设置视角模式
    • 获取当前视角状态
  • 视角中心同步
  • 调整视角
    • 调整视角中心
    • 调整视觉矩形
  • ppt 铺满当前屏幕
  • 禁止视角变化
  • 相关文档
Netless
接入即互动
产品
管理控制台官网网站Demo 体验Github
公司
加入我们服务条款隐私协议
联系方式
support@netless.link社区
Copyright © 2020 Netless