ZegoPlayRecorder
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros Pages
Classes | Enumerations | Functions
ZEGO::LIVEROOM Namespace Reference

Classes

struct  ZegoStreamInfo
 
struct  ZegoRecordStatus
 
struct  ZegoRecordSingleStreamConfig
 
struct  ZegoWaterMarkConfig
 
struct  ZegoStreamConfig
 
struct  ZegoTimestampConfig
 
struct  ZegoImageWaterMarkConfig
 
struct  AudioFrame
 
struct  ZegoMixStreamRecordConfig
 
class  IExternalVideoDataSource
 
class  IExternalMediaDataSource
 
class  ICallback
 
class  IMediaSideCallback
 

Enumerations

enum  ZegoStreamUpdateType { StreamAdded = 2001, StreamDeleted = 2002 }
 
enum  MuxerStreamType { MuxerStreamTypeAudio = 1, MuxerStreamTypeVideo = 2, MuxerStreamTypeBoth = 3 }
 
enum  MuxerOutType { MuxerOutTypeOnlyWriteFile = 1, MuxerOutTypeOnlyCallback = 2 }
 
enum  ZegoVideoStreamLayerType { ZegoVideoStreamLayerAuto = -1, ZegoVideoStreamLayerBase = 0, ZegoVideoStreamLayerExtend = 1 }
 
enum  ZegoFillMode { ZEGO_FILL_MODE_CROP = 0, ZEGO_FILL_MODE_BLACKBAR = 1 }
 
enum  ZegoFrameFillMode { ZEGO_MODE_LAST_FRAME = 0, ZEGO_MODE_FILL_FRAME = 1, ZEGO_MODE_HIDE_FRAME = 2 }
 
enum  ZegoTimestampPosition { ZegoTimestampUpperRight = 0, ZegoTimestampUpperLeft = 1, ZegoTimestampBottomRight = 2, ZegoTimestampBottomLeft = 3 }
 
enum  ZegoImageWaterMarkFillMode { MODE_SCALE_CENTER, MODE_STRETCH_FILL }
 
enum  RecordEndReason {
  RecordEndReasonNormalEnd = 0, RecordEndReasonUnknowError = 1, RecordEndReasonPathNameTooLong = 2, RecordEndReasonOpenFileError = 3,
  RecordEndReasonNoSpaceLeft = 4, RecordEndReasonInitError = 5, RecordEndReasonWriteHeaderError = 6, RecordEndReasonBadFd = 7,
  RecordEndReasonErrorIo = 8, RecordEndReasonChnError = 9, RecordEndReasonFormatNotSupport = 10, RecordEndReasonIllegalState = 11,
  RecordEndReasonCreateDirError = 1000, RecordEndReasonMixStreamTaskLimit = 1001, RecordEndReasonPlayErrorBase = 100000, RecordEndReasonNoStreamError = 100006
}
 
enum  RecordEvent { RecordEventPause, RecordEventResume }
 
enum  VideoPixelFormat {
  PIXEL_FORMAT_UNKNOWN = 0, PIXEL_FORMAT_I420 = 1, PIXEL_FORMAT_BGRA32 = 4, PIXEL_FORMAT_RGBA32 = 5,
  PIXEL_FORMAT_ARGB32 = 6, PIXEL_FORMAT_ABGR32 = 7
}
 

Functions

ZEGO_API const char * GetSDKVersion ()
 
ZEGO_API bool SetLogDirAndSize (const char *pszLogDir, unsigned long long lLogFileSize=5 *1024 *1024)
 
ZEGO_API void UploadLog ()
 
ZEGO_API void SetUseTestEnv (bool bTestEnv)
 
ZEGO_API void SetConfig (const char *config)
 
ZEGO_API bool InitSDK (unsigned int uiAppID, unsigned char *pBufAppSignature, int nSignatureSize)
 
ZEGO_API bool InitSDK (unsigned int uiAppID)
 
ZEGO_API bool UnInitSDK ()
 
ZEGO_API bool SetCallback (ICallback *pCB)
 
ZEGO_API bool LoginRoom (const char *pszRoomID)
 
ZEGO_API bool SetUser (const char *pszUserID, const char *pszUserName)
 
ZEGO_API void SetCustomToken (const char *thirdPartyToken)
 
ZEGO_API bool LogoutRoom ()
 
ZEGO_API int GetMaxRecordCount ()
 
ZEGO_API void SetMuxerOutType (MuxerOutType type)
 
ZEGO_API void SetMuxerCacheSize (int size)
 
ZEGO_API void EnableSingleAndMixRecordMode (bool enable)
 
ZEGO_API void EnableExternalRender (bool bEnable)
 
ZEGO_API bool SetFontFile (const char *pszPathAndName)
 
ZEGO_API void EnableExternalAudioData (bool bEnable, int sampleRate, int channels)
 
ZEGO_API bool StartRecordSingleStream (const char *pszStreamID, const char *pszPathAndName, MuxerStreamType nMuxerStreamType=MuxerStreamTypeBoth, int nFragmentSeconds=2, ZegoRecordSingleStreamConfig *config=nullptr)
 
ZEGO_API bool StopRecordSingleStream (const char *pszStreamID)
 
ZEGO_API bool StartRecordMixStream (ZegoMixStreamRecordConfig *pConfig)
 
ZEGO_API bool UpdateInputStreamConfig (ZegoStreamConfig *pInputStream, int nInputStreamCount)
 
ZEGO_API bool UpdateImageWaterMarkConfig (ZegoImageWaterMarkConfig *pConfig)
 
ZEGO_API bool StopRecordMixStream ()
 
ZEGO_API bool PauseRecordMixStream ()
 
ZEGO_API bool ResumeRecordMixStream ()
 
ZEGO_API bool GetRecordStatus (const char *streamID, ZegoRecordStatus &status)
 
ZEGO_API unsigned int GetRecordLastMediaSideTime (const char *streamID)
 
ZEGO_API bool SetMediaSideCallback (IMediaSideCallback *pCB)
 
ZEGO_API bool TakeStreamSnapshot (const char *pszStreamID, const char *pszPathAndName)
 

Enumeration Type Documentation

录制数据处理方式

Enumerator
MuxerOutTypeOnlyWriteFile 

只写文件

MuxerOutTypeOnlyCallback 

只回调录制数据不产生录制文件

录制流类型,控制是否录制音视频

Enumerator
MuxerStreamTypeAudio 

只录制音频

MuxerStreamTypeVideo 

只录制视频

MuxerStreamTypeBoth 

录制音视频

录制结束状态码

Enumerator
RecordEndReasonNormalEnd 

录制正常结束

RecordEndReasonUnknowError 

录制未知错误

RecordEndReasonPathNameTooLong 

录制路径文件名太长,最大1024 bytes

RecordEndReasonOpenFileError 

录制文件打开失败

RecordEndReasonNoSpaceLeft 

录制没有存储空间,磁盘满

RecordEndReasonInitError 

录制初始化失败

RecordEndReasonWriteHeaderError 

录制写文件头失败

RecordEndReasonBadFd 

录制写文件EBADF

RecordEndReasonErrorIo 

录制写文件EIO

RecordEndReasonChnError 

内部Channel错误

RecordEndReasonFormatNotSupport 

不支持的录制文件格式,目前单流支持mp4/flv,混流支持mp3/mp4/flv

RecordEndReasonIllegalState 

非法状态

RecordEndReasonCreateDirError 

录制创建目录失败

RecordEndReasonMixStreamTaskLimit 

混流任务超过1个

RecordEndReasonPlayErrorBase 

大于该错误码表示的是因拉流失败导致录制失败

RecordEndReasonNoStreamError 

录制无流信息

录制事件,由于网络异常等原因,拉流中断时会暂停录制,此时会抛出事件通知

Enumerator
RecordEventPause 

录制暂停

RecordEventResume 

录制恢复

Enumerator
PIXEL_FORMAT_UNKNOWN 
PIXEL_FORMAT_I420 
PIXEL_FORMAT_BGRA32 
PIXEL_FORMAT_RGBA32 
PIXEL_FORMAT_ARGB32 
PIXEL_FORMAT_ABGR32 
Enumerator
ZEGO_FILL_MODE_CROP 

裁剪模式

ZEGO_FILL_MODE_BLACKBAR 

黑边模式

Enumerator
ZEGO_MODE_LAST_FRAME 

填充最后一帧

ZEGO_MODE_FILL_FRAME 

填充指定颜色

ZEGO_MODE_HIDE_FRAME 

不填充帧

Enumerator
MODE_SCALE_CENTER 

如果图片小于水印框,图片居中显示,不拉伸;如果图片大于水印框,图片等比缩小至合适水平,再居中显示

MODE_STRETCH_FILL 

拉伸填充水印框

流更新类型

Enumerator
StreamAdded 

新增流

StreamDeleted 

删除流

混流时间戳位置类型, 目前仅支持右上角

Enumerator
ZegoTimestampUpperRight 

右上角

ZegoTimestampUpperLeft 

左上角

ZegoTimestampBottomRight 

右下角

ZegoTimestampBottomLeft 

左下角

Enumerator
ZegoVideoStreamLayerAuto 

根据网络状态选择图层

ZegoVideoStreamLayerBase 

指定拉基本层(小分辨率)

ZegoVideoStreamLayerExtend 

指定拉扩展层(大分辨率)

Function Documentation

ZEGO_API void ZEGO::LIVEROOM::EnableExternalAudioData ( bool  bEnable,
int  sampleRate,
int  channels 
)

设置是否开启拉流音频数据回调

Parameters
bEnabletrue 开启, false 关闭。
sampleRate数据采样率,取值 0, 16000, 32000, 44100, 48000,0表示使用原数据采样率,不做采样转换
channels数据通道数,取值0,1,2,0表示使用原数据通道数 只有混流录制才有效,SDK 通过OnAudioDataCallback回调抛出每路单流音频PCM数据
ZEGO_API void ZEGO::LIVEROOM::EnableExternalRender ( bool  bEnable)

设置是否启用外部渲染

Parameters
bEnable是否外部渲染,true 是,false 不是。默认 false 必须在初始化 SDK 前调用。只有混流录制才有效,SDK 通过OnVideoDataCallback回调抛出每路单流解码帧数据,格式为 I420
ZEGO_API void ZEGO::LIVEROOM::EnableSingleAndMixRecordMode ( bool  enable)

设置是否启用单流混流同时录制模式,启用该模式比较消耗系统资源,只有单流录制或者只有混流录制场景无需开启,开始或结束混流录制也会结束所有的单流录制,所以该模式下只能先启动混流录制,然后启动单流录制,混流录制会混入所有单流录制正在录制的流

Parameters
enabletrue,启用;false,不启用,默认为false,即只能选择单流录制或者混流录制 录制之前设置有效
ZEGO_API int ZEGO::LIVEROOM::GetMaxRecordCount ( )

获取 SDK 支持的最大同时录制流数

Returns
最大同时录制流数
ZEGO_API unsigned int ZEGO::LIVEROOM::GetRecordLastMediaSideTime ( const char *  streamID)

获取收到的最近一次Media Side Info数据包距离录制的第一个数据包的时间间隔

Parameters
streamID流ID
Returns
0 获取失败,大于 0 返回时间间隔 无法获取混流流ID的Media Side Info时间间隔 调用此API会阻塞SDK工作线程,不要频繁调用
ZEGO_API bool ZEGO::LIVEROOM::GetRecordStatus ( const char *  streamID,
ZegoRecordStatus &  status 
)

获取当前录制状态

Parameters
streamID流ID
status当前录制状态
Returns
true 成功,false 失败 streamID 参数为nullptr时获取的是混流录制状态 调用此API会阻塞SDK工作线程,不要频繁调用
ZEGO_API const char* ZEGO::LIVEROOM::GetSDKVersion ( )

获取SDK版本

Returns
SDK版本
ZEGO_API bool ZEGO::LIVEROOM::InitSDK ( unsigned int  uiAppID,
unsigned char *  pBufAppSignature,
int  nSignatureSize 
)

初始化 SDK

Parameters
uiAppIDZego 派发的数字 ID, 各个开发者的唯一标识
pBufAppSignatureZego 派发的签名, 用来校验对应 appID 的合法性
nSignatureSize签名长度(字节)
Returns
true 成功,false 失败 初始化 SDK 失败可能导致 SDK 功能异常
ZEGO_API bool ZEGO::LIVEROOM::InitSDK ( unsigned int  uiAppID)

初始化 SDK

Parameters
uiAppIDZego 派发的数字 ID, 各个开发者的唯一标识
Returns
true 成功,false 失败
Attention
登录房间前需要先调用 SetCustomToken 设置鉴权 Token。
ZEGO_API bool ZEGO::LIVEROOM::LoginRoom ( const char *  pszRoomID)

登录房间

Parameters
pszRoomID房间 ID
Returns
true 成功,false 失败 需要在OnInitSDK回调成功后调用
ZEGO_API bool ZEGO::LIVEROOM::LogoutRoom ( )

退出房间

Returns
成功,false 失败 退出房间会停止所有流的录制
ZEGO_API bool ZEGO::LIVEROOM::PauseRecordMixStream ( )

暂停混流录制

Returns
true 成功,false 失败
ZEGO_API bool ZEGO::LIVEROOM::ResumeRecordMixStream ( )

恢复混流录制

Returns
true 成功,false 失败
ZEGO_API bool ZEGO::LIVEROOM::SetCallback ( ICallback *  pCB)

设置回调

Parameters
pCB回调对象指针
Returns
true 成功,false 失败
ZEGO_API void ZEGO::LIVEROOM::SetConfig ( const char *  config)

设置配置信息

Parameters
configconfig 配置信息
Attention
配置项的写法,例如 "play_loop_retry=true", 等号后面值的类型要看下面每一项的定义
"play_loop_retry=true/false", bool value, default: false,拉流失败SDK内部是否循环重试,录制之前设置有效
"always_mix_video=true/false", bool value, default: false,启动混流录制后,如果没指定输入流或者拉流失败时,混流输出是否自动补白视频,InitSDK之前设置有效
ZEGO_API void ZEGO::LIVEROOM::SetCustomToken ( const char *  thirdPartyToken)

设置自定义token信息

Parameters
thirdPartyToken第三方传入的token 使用此函数验证登录时用户的合法性,登录房间前调用,token的生成规则请联系即构。若不需要验证用户合法性,不需要调用此函数 在登录房间前调用有效,退出房间后失效
ZEGO_API bool ZEGO::LIVEROOM::SetFontFile ( const char *  pszPathAndName)

设置字体文件路径

Parameters
pszPathAndName字体文件路径 pszPathAndName为文件全路径(包括文件名), 录制之前设置有效,用于混流录制时添加水印,不需要添加水印则无需设置
ZEGO_API bool ZEGO::LIVEROOM::SetLogDirAndSize ( const char *  pszLogDir,
unsigned long long  lLogFileSize = 5 *1024 *1024 
)

设置SDK log路径和单个log文件大小

Parameters
pszLogDirlog路径
lLogFileSize单个log文件大小
Returns
true 成功,false 失败 SDK内部会自动创建对应路径,默认为用户主目录下的zegolog
ZEGO_API bool ZEGO::LIVEROOM::SetMediaSideCallback ( IMediaSideCallback *  pCB)

设置媒体次要信息回调

Parameters
pCB回调对象指针
Returns
true 成功,false 失败
ZEGO_API void ZEGO::LIVEROOM::SetMuxerCacheSize ( int  size)

设置文件落地前的缓存大小(64KB~1MB),以字节为单位

Parameters
size缓存大小 InitSDK之前设置有效,default: 1048576(即1M, 1024*1024)
ZEGO_API void ZEGO::LIVEROOM::SetMuxerOutType ( MuxerOutType  type)

设置录制数据输出方式

Parameters
type设置录制数据处理方式,默认为MuxerOutTypeOnlyWriteFile,即只写文件 录制之前设置有效
ZEGO_API bool ZEGO::LIVEROOM::SetUser ( const char *  pszUserID,
const char *  pszUserName 
)

设置用户信息

Parameters
pszUserID用户唯一 ID
pszUserName用户名字
Returns
true 成功,false 失败 如果不需要登录时验证用户的合法性,可以无需设置,SDK内部会默认生成 在InitSDK之前调用有效
ZEGO_API void ZEGO::LIVEROOM::SetUseTestEnv ( bool  bTestEnv)

设置是否使用测试环境,开发阶段可使用测试环境测试

Parameters
bTestEnv是否使用测试环境
Deprecated:
已废弃
ZEGO_API bool ZEGO::LIVEROOM::StartRecordMixStream ( ZegoMixStreamRecordConfig *  pConfig)

开始混流录制

Parameters
config混流录制配置
Returns
true 成功,false 失败 需要在OnInitSDK回调成功后调用 只支持一路混流录制,如果当前有其他混流任务,调用会回调失败
ZEGO_API bool ZEGO::LIVEROOM::StartRecordSingleStream ( const char *  pszStreamID,
const char *  pszPathAndName,
MuxerStreamType  nMuxerStreamType = MuxerStreamTypeBoth,
int  nFragmentSeconds = 2,
ZegoRecordSingleStreamConfig *  config = nullptr 
)

开始单流录制

Parameters
pszStreamID流 ID
pszPathAndName录制文件全路径(包括文件名),且必须以.mp3/.mp4/.flv/.m3u8结尾
nMuxerStreamType录制流类型
nFragmentSeconds录制文件分片间隔; m3u8格式取值范围(2~60s),其他格式取值范围(0~10s),0表示不分片,大于0表示分片,默认为2s
config录制单流文件高级配置
Returns
true 成功,false 失败 pszPathAndName为文件全路径(包括文件名),且必须以.mp4或者.flv结尾,SDK内部会自动创建对应路径,相同的文件会直接覆盖,需要在OnInitSDK回调成功后调用 如果启用单流混流同时录制模式, streamLayerType 需要跟混流设置保持一致
ZEGO_API bool ZEGO::LIVEROOM::StopRecordMixStream ( )

停止混流录制

Returns
true 成功,false 失败
ZEGO_API bool ZEGO::LIVEROOM::StopRecordSingleStream ( const char *  pszStreamID)

停止单流录制

Parameters
pszStreamID流 ID
Returns
true 成功,false 失败
ZEGO_API bool ZEGO::LIVEROOM::TakeStreamSnapshot ( const char *  pszStreamID,
const char *  pszPathAndName 
)

单流录制模式下,对指定流截图

Parameters
pszStreamID流ID
pszPathAndName截图文件保存路径
ZEGO_API bool ZEGO::LIVEROOM::UnInitSDK ( )

反初始化 SDK

Returns
true 成功,false 失败
ZEGO_API bool ZEGO::LIVEROOM::UpdateImageWaterMarkConfig ( ZegoImageWaterMarkConfig *  pConfig)

更新图片水印配置

Parameters
pConfig新的图片水印配置。pConfig 为 NULL 时,将删除之前设置的图片水印
Returns
true 成功, false 失败 需要在OnInitSDK回调成功后调用
ZEGO_API bool ZEGO::LIVEROOM::UpdateInputStreamConfig ( ZegoStreamConfig *  pInputStream,
int  nInputStreamCount 
)

更新混流录制输入流配置

Parameters
pInputStream输入流数组
nInputStreamCount输入流个数
Returns
true 成功,false 失败 需要在OnInitSDK回调成功后调用
ZEGO_API void ZEGO::LIVEROOM::UploadLog ( )

上传log文件到Zego后台