public final class ZegoLiveRoom
extends java.lang.Object
典型使用流程:
注意事项:
| Constructor and Description |
|---|
ZegoLiveRoom() |
| Modifier and Type | Method and Description |
|---|---|
void |
enableExternalAudioData(boolean enable,
int sampleRate,
int channels)
设置是否开启拉流音频数据回调
|
void |
enableExternalRender(boolean enable)
设置是否启用外部渲染
|
void |
enableSingleAndMixRecordMode(boolean enable)
设置是否启用单流混流同时录制模式,启用该模式比较消耗系统资源,只有单流录制或者只有混流录制场景无需开启,开始或结束混流录制也会结束所有的单流录制,所以该模式下只能先启动混流录制,然后启动单流录制,混流录制会混入所有单流录制正在录制的流
|
void |
enableSoundLevelMonitor(boolean enable,
int timeInMS)
启动音浪监听
|
int |
getMaxRecordCount()
获取 SDK 支持的最大同时录制流数
|
long |
getRecordLastMediaSideTime(java.lang.String streamID)
获取收到的最近一次Media Side Info数据包距离录制的第一个数据包的时间间隔
|
ZegoRecordStatus |
getRecordStatus(java.lang.String streamID)
获取当前录制状态
|
java.lang.String |
getSDKVersion()
获取 SDK 版本
|
boolean |
initSDK(long appID,
byte[] appSign,
IZegoInitSDKCompletionCallback callback)
初始化 App 相关信息
|
boolean |
initSDK(long appID,
IZegoInitSDKCompletionCallback callback)
初始化 App 相关信息
|
boolean |
loginRoom(java.lang.String roomID,
IZegoLoginCompletionCallback callback)
登录房间
|
boolean |
logoutRoom(java.lang.String roomID)
退出房间
|
void |
onAudioDataCallback(java.lang.String streamID,
ZegoAudioFrame frame) |
void |
onDisconnect(int errorCode,
java.lang.String roomID) |
void |
onInitSDK(int errorCode) |
void |
onKickOut(int reason,
java.lang.String roomID) |
void |
onLoginRoom(int errorCode,
java.lang.String roomID) |
void |
onLogoutRoom(int errorCode,
java.lang.String roomID) |
void |
onMixStreamRecordUpdate(java.lang.String[] listStreamID) |
void |
onPlayQualityUpdate(java.lang.String streamID,
int quality,
double videoFPS,
double videoKBPS,
double audioKBPS) |
void |
onRecordFilePath(java.lang.String streamID,
java.lang.String filePath,
int muxerStramType,
long startTimestamp,
long stopTimestamp) |
void |
onRecordStreamStatus(java.lang.String streamID,
int muxerStatus,
int muxerType) |
void |
onRecvMediaSideInfo(java.lang.String streamID,
byte[] buf) |
void |
onSeek(java.lang.String streamID,
long offset,
int whence) |
void |
onSoundLevelUpdate(ZegoSoundLevelInfo[] soundLevelList,
int soundLevelCount) |
void |
onStreamRecordBegin(java.lang.String streamID,
java.lang.String pathAndName) |
void |
onStreamRecordData(java.lang.String streamID,
byte[] data) |
void |
onStreamRecordEnd(java.lang.String streamID,
java.lang.String pathAndName,
int reason) |
void |
onStreamRecordEvent(java.lang.String streamID,
int event) |
void |
onStreamRecordRemoteMicOperation(java.lang.String streamID,
int operation,
int reason) |
void |
onStreamRecordVideoSizeChanged(java.lang.String streamID,
int width,
int height) |
void |
onStreamSnapshotFilePath(int code,
java.lang.String streamID,
java.lang.String filePath) |
void |
onStreamUpdate(int type,
ZegoStreamInfo[] listStream,
java.lang.String roomID) |
void |
onTokenWillExpired(java.lang.String roomID,
int remainTimeInSecond) |
void |
onUpdateOnlineCount(int onlineCount,
java.lang.String roomID) |
void |
onUserCountUpdate(int onlineCount,
java.lang.String roomID) |
void |
onUserUpdate(ZegoUserState[] userStates,
int updateType,
java.lang.String roomID) |
void |
onVideoDataCallback(java.nio.ByteBuffer[] data,
java.lang.String streamID,
int width,
int height,
int[] strides,
int pixelFormat) |
void |
onVideoMixStateChanged(java.lang.String streamID,
int state) |
boolean |
pauseRecordMixStream(java.lang.String roomID)
暂停混流录制
|
boolean |
resumeRecordMixStream(java.lang.String roomID)
恢复混流录制
|
void |
setConfig(java.lang.String config)
设置配置信息
|
boolean |
setFontFile(java.lang.String pathAndName)
设置字体文件路径
|
boolean |
setLogDir(java.lang.String logDir)
设置 SDK log 路径
|
boolean |
setLogDirAndSize(java.lang.String logDir,
long logFileSize)
设置 SDK log 路径和单个 log 文件大小
|
void |
setMuxerCacheSize(int size)
设置文件落地前的缓存大小(64KB~1MB),以字节为单位
|
void |
setMuxerOutType(int type)
设置录制数据输出方式
|
boolean |
setPlayQualityMonitorCycle(int timeInMS)
支持设置拉流质量更新的回调频率
|
boolean |
setRoomMode(int mode)
设置房间模式
|
void |
setToken(java.lang.String token,
java.lang.String roomID)
设置房间的鉴权 token
|
boolean |
setUser(java.lang.String userID,
java.lang.String userName,
java.lang.String roomID)
设置用户信息
|
void |
setZegoExternalAudioDataCallback(IZegoExternalAudioDataCallback callback)
设置音频数据回调接口
|
void |
setZegoExternalVideoDataCallback(IZegoExternalVideoDataCallback callback)
设置视频数据回调接口
|
void |
setZegoMediaSideCallback(IZegoMediaSideCallback callback)
设置媒体次要信息回调接口
|
void |
setZegoRoomCallback(IZegoRoomCallback callback)
设置房间回调接口
|
void |
setZegoStreamRecordCallback(IZegoStreamRecordCallback callback)
设置录制回调接口
|
void |
setZegoStreamSnapshotCallback(IZegoStreamSnapshotCallback callback)
设置截图回调接口
|
boolean |
startRecordMixStream(ZegoMixStreamRecordConfig config,
java.lang.String roomID)
开始混流录制
|
boolean |
startRecordSingleStream(java.lang.String streamID,
java.lang.String pathAndName,
int muxerStreamType,
int fragmentSeconds,
ZegoRecordSingleStreamConfig config,
java.lang.String roomID)
开始单流录制
|
boolean |
stopRecordMixStream(java.lang.String roomID)
停止混流录制
|
boolean |
stopRecordSingleStream(java.lang.String streamID)
停止单流录制
|
boolean |
takeStreamSnapshot(java.lang.String streamID,
java.lang.String pathAndName,
int resourceMode,
java.lang.String roomID)
截图
|
boolean |
unInitSDK()
反初始化 SDK
|
boolean |
updateImageWaterMarkConfig(ZegoImageWaterMarkConfig config)
更新图片水印配置
|
boolean |
updateInputStreamConfig(ZegoStreamConfig[] listStreamConfig,
java.lang.String roomID)
更新混流录制输入流配置
|
void |
updatePlayDecryptKey(java.lang.String streamID,
byte[] key)
设置拉流得解密密钥, 调用开始录制接口后设置
|
public void setZegoRoomCallback(IZegoRoomCallback callback)
callback - 房间回调接口public void setZegoStreamRecordCallback(IZegoStreamRecordCallback callback)
callback - 录制回调接口public void setZegoMediaSideCallback(IZegoMediaSideCallback callback)
callback - 媒体次要信息回调接口public void setZegoExternalAudioDataCallback(IZegoExternalAudioDataCallback callback)
callback - 音频数据回调接口public void setZegoExternalVideoDataCallback(IZegoExternalVideoDataCallback callback)
callback - 视频数据回调接口public void setZegoStreamSnapshotCallback(IZegoStreamSnapshotCallback callback)
callback - 截图回调接口public java.lang.String getSDKVersion()
public boolean setLogDir(java.lang.String logDir)
logDir - log 路径Discussion: SDK 内部会自动创建对应路径,默认为用户主目录下的 zegolog
public boolean setLogDirAndSize(java.lang.String logDir,
long logFileSize)
logDir - log 路径logFileSize - 单个 log 文件大小Discussion: SDK 内部会自动创建对应路径,默认为用户主目录下的 zegolog
public void setConfig(java.lang.String config)
config - 配置信息
Attention: 配置项的写法,例如 "play_loop_retry=true", 等号后面值的类型要看下面每一项的定义
Attention: "play_loop_retry=true/false", bool value, default: false,拉流失败SDK内部是否循环重试,录制之前设置有效
Attention: "always_mix_video=true/false", bool value, default: false,启动混流录制后,如果没指定输入流或者拉流失败时,混流输出是否自动补白视频,InitSDK之前设置有效
public boolean setRoomMode(int mode)
mode - 房间模式,详见 ZegoRoomMode 定义,默认是单房间模式Attention: 必须在初始化 SDK 之前调用,否则会失败。
Attention: 如果需要开启多房间模式,请与即构技术支持联系配置服务端支持。
public boolean initSDK(long appID,
byte[] appSign,
IZegoInitSDKCompletionCallback callback)
appID - Zego 派发的数字 ID,各个开发者的唯一标识appSign - Zego 派发的签名,用来校验对应 appID 的合法性callback - Zego initSDK 完成后回调Discussion: 初始化 SDK 失败可能导致 SDK 功能异常
public boolean initSDK(long appID,
IZegoInitSDKCompletionCallback callback)
appID - Zego 派发的数字 ID,各个开发者的唯一标识callback - Zego initSDK 完成后回调Discussion: 初始化 SDK 失败可能导致 SDK 功能异常
Attention: 登录房间前需要先调用 setToken 设置鉴权 Token。
public boolean unInitSDK()
停止所有录制并退出所有房间后调用。反初始化会回收 SDK 内部线程与资源, 调用完成后不应再调用除 initSDK 外的其它接口。返回前会等待 SDK 内部线程退出。
public void setToken(java.lang.String token,
java.lang.String roomID)
token - 鉴权 tokenroomID - 房间 ID,必填
Discussion: 使用此函数验证登录及推流时用户的合法性,登录房间前调用,token的生成规则请联系即构。若不需要验证用户合法性,不需要调用此函数
Discussion: 在登录房间前调用有效,支持登录后重置,退出房间后失效。
public boolean loginRoom(java.lang.String roomID,
IZegoLoginCompletionCallback callback)
roomID - 房间 ID,长度不超过 255 bytes 的可打印字符callback - 实现 IZegoLoginCompletionCallback 接口的对象实例,用于接收登录结果Discussion: 需要在 IZegoInitSDKCompletionCallback.onInitSDK 回调成功后调用
public boolean setUser(java.lang.String userID,
java.lang.String userName,
java.lang.String roomID)
userID - 用户唯一 IDuserName - 用户名字roomID - 该参数暂未使用,传 null 即可Discussion: 如果不需要登录时验证用户的合法性,可以无需设置,SDK内部会默认生成
Discussion: 在LoginRoom之前调用有效
public boolean logoutRoom(java.lang.String roomID)
roomID - 房间 ID,多房间模式下必填;单房间模式下可传 null,退出当前房间Discussion: 退出房间会停止所有流的录制
public int getMaxRecordCount()
public void setMuxerOutType(int type)
type - 设置录制数据处理方式,默认为MuxerOutTypeOnlyWriteFile,即只写文件
Discussion: 录制之前设置有效
public void setMuxerCacheSize(int size)
size - 缓存大小
Discussion: InitSDK之前设置有效,default: 1048576(即1M, 1024*1024)
public void enableSingleAndMixRecordMode(boolean enable)
enable - true,启用;false,不启用,默认为false,即只能选择单流录制或者混流录制
Discussion: 录制之前设置有效
public void enableExternalRender(boolean enable)
enable - 是否外部渲染,true 是,false 不是。默认 false
Discussion: 必须在初始化 SDK 前调用。只有混流录制才有效,SDK 通过OnVideoDataCallback回调抛出每路单流解码帧数据,格式为 I420
public boolean setFontFile(java.lang.String pathAndName)
pathAndName - 字体文件路径Discussion: pathAndName为文件全路径(包括文件名), 录制之前设置有效,用于混流录制时添加水印,不需要添加水印则无需设置
public void enableExternalAudioData(boolean enable,
int sampleRate,
int channels)
enable - true 开启, false 关闭。sampleRate - 数据采样率,取值 0, 16000, 32000, 44100, 48000,0表示使用原数据采样率,不做采样转换channels - 数据通道数,取值0,1,2,0表示使用原数据通道数
Discussion: 必须在初始化 SDK 后调用,SDK 通过 OnAudioDataCallback 回调抛出每路拉流音频 PCM 数据
public boolean startRecordSingleStream(java.lang.String streamID,
java.lang.String pathAndName,
int muxerStreamType,
int fragmentSeconds,
ZegoRecordSingleStreamConfig config,
java.lang.String roomID)
streamID - 流 IDpathAndName - 录制文件全路径(包括文件名),且必须以.mp3/.mp4/.flv/.m3u8结尾muxerStreamType - 录制流类型fragmentSeconds - 录制文件分片间隔; m3u8格式取值范围(2~60s),其他格式取值范围(0~10s),0表示不分片,大于0表示分片,默认为2sconfig - 录制单流文件高级配置roomID - 房间 ID,多房间模式下必填;单房间模式下可传 null,默认使用当前登录房间Discussion: pathAndName为文件全路径(包括文件名),且必须以.mp4或者.flv结尾,当启用高级配置 enableVad 人声检测时,可能会有多个录制文件, 录制文件名将以 xxxx_timestamp.mp4/.flv 重命名。(xxxx 为传进来的原始文件名,timestamp 是开始的秒级时间戳)。 SDK内部会自动创建对应路径,相同的文件会直接覆盖,需要在OnInitSDK回调成功后调用
Discussion: 如果启用单流混流同时录制模式, streamLayerType 需要跟混流设置保持一致
public boolean stopRecordSingleStream(java.lang.String streamID)
streamID - 流 IDpublic boolean startRecordMixStream(ZegoMixStreamRecordConfig config, java.lang.String roomID)
config - 混流录制配置roomID - 该参数暂未使用,传 null 即可Discussion: 需要在OnInitSDK回调成功后调用
Discussion: 只支持一路混流录制,如果当前有其他混流任务,调用会回调失败
public boolean updateInputStreamConfig(ZegoStreamConfig[] listStreamConfig, java.lang.String roomID)
listStreamConfig - 输入流数组roomID - 该参数暂未使用,传 null 即可Discussion: 需要在OnInitSDK回调成功后调用
public boolean updateImageWaterMarkConfig(ZegoImageWaterMarkConfig config)
config - 新的图片水印配置。config 为 null 时,将删除之前设置的图片水印Discussion: 需要在OnInitSDK回调成功后调用
public boolean stopRecordMixStream(java.lang.String roomID)
roomID - 该参数暂未使用,传 null 即可public boolean pauseRecordMixStream(java.lang.String roomID)
roomID - 该参数暂未使用,传 null 即可public boolean resumeRecordMixStream(java.lang.String roomID)
roomID - 该参数暂未使用,传 null 即可public ZegoRecordStatus getRecordStatus(java.lang.String streamID)
streamID - 流IDDiscussion: streamID 参数为null时获取的是混流录制状态
Discussion: 调用此API会阻塞SDK工作线程,不要频繁调用
public long getRecordLastMediaSideTime(java.lang.String streamID)
streamID - 流IDDiscussion: 无法获取混流流ID的Media Side Info时间间隔
Discussion: 调用此API会阻塞SDK工作线程,不要频繁调用
public boolean takeStreamSnapshot(java.lang.String streamID,
java.lang.String pathAndName,
int resourceMode,
java.lang.String roomID)
streamID - 流IDpathAndName - 截图文件保存路径resourceMode - 如果还未开始拉流,则用resourceMode指定从哪里拉流,默认从RTC拉流roomID - 房间 ID,多房间模式下必填;单房间模式下可传 null,默认使用当前登录房间Discussion: streamID 参数为null时对混流进行截图,否则对指定单流进行截图
Discussion: 当对混流进行截图时,resourceMode 参数不生效
Discussion: 当对混流进行截图时,内部不启动拉流,需要等到正在开始录制混流时才开始截图
public boolean setPlayQualityMonitorCycle(int timeInMS)
timeInMS - 毫秒间隔public void updatePlayDecryptKey(java.lang.String streamID,
byte[] key)
streamID - 流idkey - 解密keypublic void enableSoundLevelMonitor(boolean enable,
int timeInMS)
enable - true, 启动音浪监听, 拉流后会通过OnSoundLevelUpdate回调timeInMS - 时间周期,单位为毫秒,取值范围 [100, 3000]。默认 200 ms。
Discussion: StartSoundLevelMonitor 后一定要 StopSoundLevelMonitor
public void onInitSDK(int errorCode)
public void onLoginRoom(int errorCode,
java.lang.String roomID)
public void onLogoutRoom(int errorCode,
java.lang.String roomID)
public void onDisconnect(int errorCode,
java.lang.String roomID)
public void onStreamUpdate(int type,
ZegoStreamInfo[] listStream,
java.lang.String roomID)
public void onPlayQualityUpdate(java.lang.String streamID,
int quality,
double videoFPS,
double videoKBPS,
double audioKBPS)
public void onStreamRecordBegin(java.lang.String streamID,
java.lang.String pathAndName)
public void onStreamRecordEnd(java.lang.String streamID,
java.lang.String pathAndName,
int reason)
public void onStreamRecordVideoSizeChanged(java.lang.String streamID,
int width,
int height)
public void onStreamRecordRemoteMicOperation(java.lang.String streamID,
int operation,
int reason)
public void onStreamRecordEvent(java.lang.String streamID,
int event)
public void onStreamRecordData(java.lang.String streamID,
byte[] data)
public void onSeek(java.lang.String streamID,
long offset,
int whence)
public void onVideoDataCallback(java.nio.ByteBuffer[] data,
java.lang.String streamID,
int width,
int height,
int[] strides,
int pixelFormat)
public void onAudioDataCallback(java.lang.String streamID,
ZegoAudioFrame frame)
public void onMixStreamRecordUpdate(java.lang.String[] listStreamID)
public void onRecordFilePath(java.lang.String streamID,
java.lang.String filePath,
int muxerStramType,
long startTimestamp,
long stopTimestamp)
public void onRecordStreamStatus(java.lang.String streamID,
int muxerStatus,
int muxerType)
public void onVideoMixStateChanged(java.lang.String streamID,
int state)
public void onKickOut(int reason,
java.lang.String roomID)
public void onUserUpdate(ZegoUserState[] userStates, int updateType, java.lang.String roomID)
public void onUserCountUpdate(int onlineCount,
java.lang.String roomID)
public void onUpdateOnlineCount(int onlineCount,
java.lang.String roomID)
public void onTokenWillExpired(java.lang.String roomID,
int remainTimeInSecond)
public void onSoundLevelUpdate(ZegoSoundLevelInfo[] soundLevelList, int soundLevelCount)
public void onStreamSnapshotFilePath(int code,
java.lang.String streamID,
java.lang.String filePath)
public void onRecvMediaSideInfo(java.lang.String streamID,
byte[] buf)