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)
设置是否启用单流混流同时录制模式,启用该模式比较消耗系统资源,只有单流录制或者只有混流录制场景无需开启,开始或结束混流录制也会结束所有的单流录制,所以该模式下只能先启动混流录制,然后启动单流录制,混流录制会混入所有单流录制正在录制的流
|
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()
退出房间
|
void |
onAudioDataCallback(java.lang.String streamID,
ZegoAudioFrame frame) |
void |
onDisconnect(int errorCode,
java.lang.String roomID) |
void |
onExternalMediaDataSource(java.lang.String streamID,
ZegoLiveRoomJNI.IExternalMediaDataSource source) |
void |
onExternalVideoDataSource(java.lang.String streamID,
ZegoLiveRoomJNI.IExternalVideoDataSource source) |
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 |
onRecordFilePath(java.lang.String streamID,
java.lang.String filePath,
int muxerStramType,
long startTimestamp,
long stopTimestamp) |
void |
onRecvMediaSideInfo(java.lang.String streamID,
byte[] buf) |
void |
onSeek(java.lang.String streamID,
long offset,
int whence) |
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 |
onStreamSnapshotFilePath(int code,
java.lang.String streamID,
java.lang.String filePath) |
void |
onStreamUpdate(int type,
ZegoStreamInfo[] listStream,
java.lang.String roomID) |
void |
onUpdateOnlineCount(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) |
boolean |
pauseRecordMixStream()
暂停混流录制
|
boolean |
resumeRecordMixStream()
恢复混流录制
|
void |
setConfig(java.lang.String config)
设置配置信息
|
void |
setCustomToken(java.lang.String thirdPartyToken)
设置自定义 token 信息
|
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 |
setUser(java.lang.String userID,
java.lang.String userName)
设置用户信息
|
void |
setUseTestEnv(boolean bTestEnv)
Deprecated.
已废弃
|
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)
开始混流录制
|
boolean |
startRecordSingleStream(java.lang.String streamID,
java.lang.String pathAndName,
int muxerStreamType,
int fragmentSeconds,
ZegoRecordSingleStreamConfig config)
开始单流录制
|
boolean |
stopRecordMixStream()
停止混流录制
|
boolean |
stopRecordSingleStream(java.lang.String streamID)
停止单流录制
|
boolean |
takeStreamSnapshot(java.lang.String streamID,
java.lang.String pathAndName)
单流录制模式下,对指定流截图
|
boolean |
unInitSDK() |
boolean |
updateImageWaterMarkConfig(ZegoImageWaterMarkConfig config)
更新图片水印配置
|
boolean |
updateInputStreamConfig(ZegoStreamConfig[] listStreamConfig)
更新混流录制输入流配置
|
void |
uploadLog()
上传 log 文件到 Zego 后台
|
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 uploadLog()
public void setUseTestEnv(boolean bTestEnv)
bTestEnv
- 是否使用测试环境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 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: 登录房间前需要先调用 SetCustomToken 设置鉴权 Token。
public boolean unInitSDK()
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)
userID
- 用户唯一 IDuserName
- 用户名字Discussion: 如果不需要登录时验证用户的合法性,可以无需设置,SDK内部会默认生成
Discussion: 在InitSDK之前调用有效
public void setCustomToken(java.lang.String thirdPartyToken)
thirdPartyToken
- 第三方传入的 token
Discussion: 使用此函数验证登录时用户的合法性,登录房间前调用,token 的生成规则请联系即构。若不需要验证用户合法性,不需要调用此函数
Discussion: 在登录房间前调用有效,退出房间后失效
public boolean logoutRoom()
Discussion: 退出房间会停止所有流的录制
public int getMaxRecordCount()
public void setMuxerOutType(int type)
type
- 设置录制数据处理方式,默认为 ZegoMuxerOutType.WRITE_FILE_ONLY
,即只写文件
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 通过 IZegoExternalAudioDataCallback.onAudioData 回调抛出每路拉流音频 PCM 数据
public boolean startRecordSingleStream(java.lang.String streamID, java.lang.String pathAndName, int muxerStreamType, int fragmentSeconds, ZegoRecordSingleStreamConfig config)
streamID
- 流 IDpathAndName
- 录制文件全路径(包括文件名),且必须以.mp3/.mp4/.flv/.m3u8结尾muxerStreamType
- 录制流类型fragmentSeconds
- 录制文件分片间隔; m3u8格式取值范围(2~60s),其他格式取值范围(0~10s),0表示不分片,大于0表示分片,默认为2sconfig
- 录制单流文件高级配置Discussion: pathAndName 为文件全路径(包括文件名),且必须以 .mp4 或者 .flv 结尾。当启用高级配置 enableVad 人声检测时,可能会有多个录制文件, 录制文件名将以 xxxx_timestamp.mp4/.flv 重命名。(xxxx 为传进来的原始文件名,timestamp 是开始的秒级时间戳)。 SDK 内部会自动创建对应路径,相同的文件会直接覆盖,需要在 onInitSDK 回调成功后调用
Discussion: 如果启用单流混流同时录制模式, muxerStreamType 需要跟混流设置保持一致
public boolean stopRecordSingleStream(java.lang.String streamID)
streamID
- 流 IDpublic boolean startRecordMixStream(ZegoMixStreamRecordConfig config)
config
- 混流录制配置Discussion: 需要在 IZegoInitSDKCompletionCallback.onInitSDK(int)
回调成功后调用
Discussion: 只支持一路混流录制,如果当前有其他混流任务,调用会回调失败
public boolean updateInputStreamConfig(ZegoStreamConfig[] listStreamConfig)
listStreamConfig
- 输入流列表Discussion: 需要在 IZegoInitSDKCompletionCallback.onInitSDK(int)
回调成功后调用
public boolean updateImageWaterMarkConfig(ZegoImageWaterMarkConfig config)
config
- 新的图片水印配置。config 为 null 时,将删除之前设置的图片水印Discussion: 需要在 IZegoInitSDKCompletionCallback.onInitSDK(int)
回调成功后调用
public boolean stopRecordMixStream()
public boolean pauseRecordMixStream()
public boolean resumeRecordMixStream()
public ZegoRecordStatus getRecordStatus(java.lang.String streamID)
streamID
- 流 IDDiscussion: streamID 参数为空字符串时获取的是混流录制状态
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)
streamID
- 流 IDpathAndName
- 截图文件全路径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 onStreamRecordBegin(java.lang.String streamID, java.lang.String pathAndName)
public void onStreamRecordEnd(java.lang.String streamID, java.lang.String pathAndName, 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 onExternalVideoDataSource(java.lang.String streamID, ZegoLiveRoomJNI.IExternalVideoDataSource source)
public void onExternalMediaDataSource(java.lang.String streamID, ZegoLiveRoomJNI.IExternalMediaDataSource source)
public void onKickOut(int reason, java.lang.String roomID)
public void onUserUpdate(ZegoUserState[] userStates, int updateType, java.lang.String roomID)
public void onUpdateOnlineCount(int onlineCount, java.lang.String roomID)
public void onStreamSnapshotFilePath(int code, java.lang.String streamID, java.lang.String filePath)
public void onRecvMediaSideInfo(java.lang.String streamID, byte[] buf)