在线美术教学 API
声网为在线美术场景提供明暗校正和透视校正功能,本文提供相关的 API 参考。
除了在线美术教学相关的 API,你还需要使用 RTC API 来实现实时音视频互动功能。你可以参考 RTC API 文档来了解详细的 RTC API 用法。
明暗校正和透视校正 API 仅存在于声网为在线美术教学解决方案提供的声网 RTC 教育特殊版 SDK 中。声网官网的视频 SDK v4.x 版本尚不支持该功能。你可以提交工单联系我们获取声网 RTC 4.0.0 教育特殊版 SDK。
此外,你还可以参考如下 API 文档,在场景实现中添加相应的功能:
明暗校正
enableBrightnessCorrection
public int enableBrightnessCorrection(boolean enable, int mode, Constants.VideoSourceType sourceType)
开启或关闭本地画面明暗校正。
参数
参数 | 说明 |
---|---|
enable | 是否开启本地画面明暗校正:
|
mode | 明暗校正模式:
|
sourceType | 视频源类型:
|
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
applyBrightnessCorrectionToRemote
public abstract int applyBrightnessCorrectionToRemote(int uid, boolean enabled, int mode)
开启远端远端用户画面的明暗校正。远端的用户需要在 enableVideo
前先调用 addExtension
和 enableExtension
才能成功接收远程开启明暗校正请求。
参数
参数 | 说明 |
---|---|
uid | 需要开启明暗校正的远端用户 ID。 |
enabled | 是否开启远端用户画面明暗校正:
|
mode | 明暗校正模式:
|
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
applyBrightnessCorrectionToRemoteEx
public abstract int applyBrightnessCorrectionToRemoteEx(int uid, boolean enabled, int mode, RtcConnection connection)
(适用于多频道)开启对应 Connection 的远端用户画面的明暗校正。远端的用户需要在 enableVideo
前先调用 addExtension
和 enableExtension
才能成功接收远程开启明暗校正请求。
参数
参数 | 说明 |
---|---|
uid | 需要开启明暗校正的远端用户 ID。 |
enabled | 是否开启远端用户画面明暗校正:
|
mode | 明暗校正模式:
|
connection | Connection 信息。详见 RtcConnection 。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
透视校正
enableRemoteTrapezoidCorrection
public abstract int enableRemoteTrapezoidCorrection(int uid, boolean enabled)
在本地启用或关闭远端用户在本地渲染画面的透视校正。远端用户自身的本地预览不会看到透视校正效果。
参数
参数 | 说明 |
---|---|
uid | 需要开启明暗校正的远端用户 ID。 |
enabled | 是否开启远端画面透视校正:
|
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
enableRemoteTrapezoidCorrectionEx
public abstract int enableRemoteTrapezoidCorrectionEx(int uid, boolean enabled, RtcConnection connection)
(适用于多频道)在本地启用或关闭远端用户在本地渲染画面的透视校正。远端用户自身的本地预览不会看到透视校正效果。
参数
参数 | 说明 |
---|---|
uid | 需要开启明暗校正的远端用户 ID。 |
enabled | 是否开启远端画面透视校正:
|
connection | Connection 信息。详见 RtcConnection 。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
enableLocalTrapezoidCorrection
public abstract int enableLocalTrapezoidCorrection(boolean enabled, Constants.VideoSourceType sourceType)
开启或关闭本地画面的透视校正。本地设置透视校正后,远端就能看到梯形校正后的画面。
参数
参数 | 说明 |
---|---|
enable | 是否开启本地画面透视校正:
|
sourceType | 视频源类型:
|
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
setLocalTrapezoidCorrectionOptions
public abstract int setLocalTrapezoidCorrectionOptions(final TrapezoidCorrectionOptions options, Constants.VideoSourceType sourceType)
配置本地透视校正选项。
参数
参数 | 说明 |
---|---|
options | 透视校正配置参数。详见 TrapezoidCorrectionOptions 。 |
sourceType | 视频源类型:
|
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
getLocalTrapezoidCorrectionOptions
public abstract TrapezoidCorrectionOptions getLocalTrapezoidCorrectionOptions(Constants.VideoSourceType sourceType)
获取本地透视校正配置参数。
参数
参数 | 说明 |
---|---|
sourceType | 视频源类型:
|
返回值
透视校正配置参数。详见 TrapezoidCorrectionOptions
。如果之前多次设置过透视校正参数,则获取的是之前多次设置的参数集合。
setRemoteTrapezoidCorrectionOptions
public abstract int setRemoteTrapezoidCorrectionOptions(int uid, final TrapezoidCorrectionOptions options)
配置远端透视校正选项。
参数
参数 | 说明 |
---|---|
uid | 远端用户 ID。 |
options | 透视校正配置参数。详见 TrapezoidCorrectionOptions 。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
setRemoteTrapezoidCorrectionOptionsEx
public abstract int setRemoteTrapezoidCorrectionOptionsEx(int uid, final TrapezoidCorrectionOptions options, RtcConnection connection)
(适用于多频道)配置远端透视校正选项。
参数
参数 | 说明 |
---|---|
uid | 远端用户 ID。 |
options | 透视校正配置参数。详见 TrapezoidCorrectionOptions 。 |
connection | Connection 信息。详见 RtcConnection 。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
getRemoteTrapezoidCorrectionOptions
public abstract TrapezoidCorrectionOptions getRemoteTrapezoidCorrectionOptions(int uid)
获取远端透视校正配置参数。
参数
参数 | 说明 |
---|---|
uid | 远端用户 ID。 |
返回值
透视校正配置参数。详见 TrapezoidCorrectionOptions
。如果之前多次设置过透视校正参数,则获取的是之前多次设置的参数集合。
getRemoteTrapezoidCorrectionOptionsEx
public abstract TrapezoidCorrectionOptions getRemoteTrapezoidCorrectionOptionsEx(int uid, RtcConnection connection)
(适用于多频道)获取远端透视校正配置参数。
参数
参数 | 说明 |
---|---|
uid | 远端用户 ID。 |
connection | Connection 信息。详见 RtcConnection 。 |
返回值
透视校正配置参数。详见 TrapezoidCorrectionOptions
。如果之前多次设置过透视校正参数,则获取的是之前多次设置的参数集合。
applyTrapezoidCorrectionToRemote
public abstract int applyTrapezoidCorrectionToRemote(int uid, boolean enabled)
将透视校正参数应用到远端用户在本地的预览画面。
参数
参数 | 说明 |
---|---|
uid | 远端用户 ID。 |
enabled | 是否将透视校正参数应用到远端用户在本地的预览画面:
|
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
applyTrapezoidCorrectionToRemoteEx
public abstract int applyTrapezoidCorrectionToRemoteEx(int uid, boolean enabled, RtcConnection connection)
(适用于多频道)将透视校正参数应用到远端用户在本地的预览画面。
参数
参数 | 说明 |
---|---|
uid | 远端用户 ID。 |
enabled | 是否将透视校正参数应用到远端用户在本地的预览画面:
|
connection | Connection 信息。详见 RtcConnection 。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
onTrapezoidAutoCorrectionFinished
public void onTrapezoidAutoCorrectionFinished(
int uid, int result, int costTime, PointF[] dragSrcPoints, PointF[] dragDstPoints) {}
自动透视校正完成时触发。
参数
参数 | 说明 |
---|---|
uid | 开启自动透视校正的远端用户 ID。 |
result | 自动透视校正结果:
|
costTime | 透视校正花费的时间 (ms)。 |
dragSrcPoints | 拖动起始点时的梯形四个顶点坐标。 |
dragDstPoints | 拖动结束点时的梯形四个顶点坐标。 |
数据类型
TrapezoidCorrectionOptions
public class TrapezoidCorrectionOptions {
private PointF dragSrcPoint;
private PointF dragDstPoint;
private Integer dragFinished;
private Integer assistLine;
private Integer autoCorrect;
private Integer mirror;
private Integer resetDragPoints;
private List<Float> dragSrcPoints;
private List<Float> dragDstPoints;
@CalledByNative
public TrapezoidCorrectionOptions() {
}
@CalledByNative
public PointF makePointF(float x, float y) {
return new PointF(x, y);
}
@CalledByNative
public void setDragSrcPoint(PointF pt) {
dragSrcPoint = pt;
}
@CalledByNative
public void setDragDstPoint(PointF pt) {
dragDstPoint = pt;
}
@CalledByNative
public void setDragFinished(int finished) {
dragFinished = finished;
}
@CalledByNative
public void showAssistLine(int show) {
assistLine = show;
}
@CalledByNative
public void setAutoCorrect(int autoCorr) {
autoCorrect = autoCorr;
}
@CalledByNative
public void setMirror(int mirr) {
mirror = mirr;
}
@CalledByNative
public void setResetDragPoints(int reset) {
resetDragPoints = reset;
}
@CalledByNative
public void setDragSrcPoints(
PointF topLeft, PointF bottomLeft, PointF topRight, PointF bottomRight) {
if (dragSrcPoints == null)
dragSrcPoints = new ArrayList<>();
dragSrcPoints.clear();
dragSrcPoints.add(topLeft.x);
dragSrcPoints.add(topLeft.y);
dragSrcPoints.add(bottomLeft.x);
dragSrcPoints.add(bottomLeft.y);
dragSrcPoints.add(topRight.x);
dragSrcPoints.add(topRight.y);
dragSrcPoints.add(bottomRight.x);
dragSrcPoints.add(bottomRight.y);
}
@CalledByNative
public void setDragDstPoints(
PointF topLeft, PointF bottomLeft, PointF topRight, PointF bottomRight) {
if (dragDstPoints == null)
dragDstPoints = new ArrayList<>();
dragDstPoints.clear();
dragDstPoints.add(topLeft.x);
dragDstPoints.add(topLeft.y);
dragDstPoints.add(bottomLeft.x);
dragDstPoints.add(bottomLeft.y);
dragDstPoints.add(topRight.x);
dragDstPoints.add(topRight.y);
dragDstPoints.add(bottomRight.x);
dragDstPoints.add(bottomRight.y);
}
@CalledByNative
public final float[] getDragSrcPoint() {
return dragSrcPoint != null ? new float[] {dragSrcPoint.x, dragSrcPoint.y} : null;
}
@CalledByNative
public final float[] getDragDstPoint() {
return dragDstPoint != null ? new float[] {dragDstPoint.x, dragDstPoint.y} : null;
}
@CalledByNative
public final Integer getDragFinished() {
return dragFinished;
}
@CalledByNative
public final Integer getAssistLine() {
return assistLine;
}
@CalledByNative
public final Integer getAutoCorrect() {
return autoCorrect;
}
@CalledByNative
public final Integer getMirror() {
return mirror;
}
@CalledByNative
public final Integer getResetDragPoints() {
return resetDragPoints;
}
private float[] listToArray(List<Float> list) {
float[] ret = new float[list.size()];
int i = 0;
for (Float f : list) {
ret[i++] = f;
}
return ret;
}
@CalledByNative
public final float[] getDragSrcPoints() {
return dragSrcPoints == null ? null : listToArray(dragSrcPoints);
}
@CalledByNative
public final float[] getDragDstPoints() {
return dragDstPoints == null ? null : listToArray(dragDstPoints);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
if (dragSrcPoint != null) {
sb.append("dragSrcPoint : ");
sb.append("x " + dragSrcPoint.x + " y " + dragSrcPoint.y);
}
if (dragDstPoint != null) {
sb.append("dragDstPoint : ");
sb.append("x " + dragDstPoint.x + " y " + dragDstPoint.y);
}
if (dragSrcPoints != null) {
sb.append("dragSrcPoints : ");
sb.append(dragSrcPoints.toString());
}
if (dragDstPoints != null) {
sb.append("dragDstPoints : ");
sb.append(dragDstPoints.toString());
}
return sb.toString();
}
}
透视校正参数配置,包含以下成员:
PointF
x
:x 坐标,根据屏幕宽度归一化为 [0.0~1.0] 的浮点数。y
:y 坐标,根据屏幕高度归一化为 [0.0~1.0] 的浮点数。
setDragSrcPoint
设置拖动起始点坐标。
参数 | 说明 |
---|---|
pt | 拖动起始点坐标。详见 PointF 。 |
setDragDstPoint
设置拖动终止点坐标。
如果同时调用 setDragSrcPoint
、setDragDstPoint
、setDragFinished
和 setDragSrcPoints
、setDragDstPoints
,则 setDragSrcPoints
、setDragDstPoints
的设置生效。
参数 | 说明 |
---|---|
pt | 拖动终止点坐标。详见 PointF 。 |
setDragFinished
设置该次拖动调整是否结束。
参数 | 说明 |
---|---|
finished | 本次拖动调整是否结束:
|
setDragSrcPoints
同时设置 4 个点的拖动起始点坐标。
参数 | 说明 |
---|---|
topLeft | 左上角拖动起始点坐标。详见 PointF 。 |
bottomLeft | 左下角拖动起始点坐标。详见 PointF 。 |
topRight | 右上角拖动起始点坐标。详见 PointF 。 |
bottomRight | 右下角拖动起始点坐标。详见 PointF 。 |
setDragDstPoints
同时设置 4 个点的拖动终止点坐标。
参数 | 说明 |
---|---|
topLeft | 左上角拖动终止点坐标。详见 PointF 。 |
bottomLeft | 左下角拖动终止点坐标。详见 PointF 。 |
topRight | 右上角拖动终止点坐标。详见 PointF 。 |
bottomRight | 右下角拖动终止点坐标。详见 PointF 。 |
showAssistLine
开启或关闭辅助线。初始值为关闭。
参数 | 说明 |
---|---|
show | 开启或关闭辅助线:
|
setAutoCorrect
开启或关闭自动透视校正。初始值为关闭。
参数 | 说明 |
---|---|
autoCorr | 开启或关闭自动透视校正:
|
setMirror
启用或关闭镜像。初始值为关闭。
只有使用自定义渲染功能并且自定义渲染开启水平镜像时,才需要启用镜像参数。
参数 | 说明 |
---|---|
mirr | 开启或关闭镜像:
|
setResetDragPoints
重置透视校正效果。初始值为不重置。
参数 | 说明 |
---|---|
reset | 是否重置透视校正效果:
|