Agora Recording CPP API Reference
IAgoraRecordingEngine.h
1 #ifndef _IAGORA_RECORDINGENGINE_H_
2 #define _IAGORA_RECORDINGENGINE_H_
3 #include "IAgoraLinuxSdkCommon.h"
4 
5 namespace agora {
6 namespace recording {
11 
12 public:
13  virtual ~IRecordingEngineEventHandler() {}
14 
23  virtual void onError(int error, agora::linuxsdk::STAT_CODE_TYPE stat_code) = 0;
24 
32  virtual void onWarning(int warn) = 0;
33 
40  virtual void onJoinChannelSuccess(const char * channelId, uid_t uid) = 0;
41 
47  virtual void onLeaveChannel(agora::linuxsdk::LEAVE_PATH_CODE code) = 0;
48 
57  virtual void onUserJoined(uid_t uid, agora::linuxsdk::UserJoinInfos &infos) = 0;
58 
67  virtual void onUserOffline(uid_t uid, agora::linuxsdk::USER_OFFLINE_REASON_TYPE reason) = 0;
68 
75  virtual void audioFrameReceived(unsigned int uid, const agora::linuxsdk::AudioFrame *frame) const = 0;
76 
85  virtual void videoFrameReceived(unsigned int uid, const agora::linuxsdk::VideoFrame *frame) const = 0;
86 
91  virtual void onActiveSpeaker(uid_t uid) = 0;
92 
100  virtual void onAudioVolumeIndication(const agora::linuxsdk::AudioVolumeInfo* speakers, unsigned int speakerNum) = 0;
101 
112  virtual void onFirstRemoteVideoDecoded(uid_t uid, int width, int height, int elapsed) = 0;
113 
119  virtual void onFirstRemoteAudioFrame(uid_t uid, int elapsed) = 0;
120 
126  virtual void onReceivingStreamStatusChanged(bool receivingAudio, bool receivingVideo) = 0;
127 
139  virtual void onConnectionLost() = 0;
140 
152  virtual void onConnectionInterrupted() = 0;
153 };
154 
156 typedef struct RecordingConfig {
188  agora::linuxsdk::MIXED_AV_CODEC_TYPE mixedVideoAudio;
239  char * secret;
241  char * appliteDir;
247  char * cfgFilePath;
254  agora::linuxsdk::VIDEO_FORMAT_TYPE decodeVideo;
260  agora::linuxsdk::AUDIO_FORMAT_TYPE decodeAudio;
288  agora::linuxsdk::CHANNEL_PROFILE_TYPE channelProfile;
291  agora::linuxsdk::REMOTE_VIDEO_STREAM_TYPE streamType;
293  agora::linuxsdk::TRIGGER_MODE_TYPE triggerMode;
295  agora::linuxsdk::LANGUAGE_TYPE lang;
297  char * proxyServer;
299  agora::linuxsdk::AUDIO_PROFILE_TYPE audioProfile;
308 
309 
310  RecordingConfig(): channelProfile(agora::linuxsdk::CHANNEL_PROFILE_COMMUNICATION),
311  isAudioOnly(false),
312  isVideoOnly(false),
313  isMixingEnabled(false),
314  mixResolution(NULL),
315  decryptionMode(NULL),
316  secret(NULL),
317  idleLimitSec(300),
318  appliteDir(NULL),
319  recordFileRootDir(NULL),
320  cfgFilePath(NULL),
321  lowUdpPort(0),
322  highUdpPort(0),
323  captureInterval(5),
324  decodeAudio(agora::linuxsdk::AUDIO_FORMAT_DEFAULT_TYPE),
325  decodeVideo(agora::linuxsdk::VIDEO_FORMAT_DEFAULT_TYPE),
326  mixedVideoAudio(agora::linuxsdk::MIXED_AV_DEFAULT),
327  streamType(agora::linuxsdk::REMOTE_VIDEO_STREAM_HIGH),
328  triggerMode(agora::linuxsdk::AUTOMATICALLY_MODE),
329  lang(agora::linuxsdk::CPP_LANG),
330  proxyServer(NULL),
331  audioProfile(agora::linuxsdk::AUDIO_PROFILE_DEFAULT),
332  defaultVideoBg(NULL),
333  defaultUserBg(NULL)
334  {}
335 
336  virtual ~RecordingConfig() {}
337 } RecordingConfig;
338 
342  char* storageDir;
344  {}
345 }RecordingEngineProperties;
346 
349 public:
350 
360  static IRecordingEngine* createAgoraRecordingEngine(const char * appId, IRecordingEngineEventHandler *eventHandler);
361 
362  virtual ~IRecordingEngine() {}
363 
383  virtual int joinChannel(const char * channelKey, const char *channelId, uid_t uid, const RecordingConfig &config) = 0;
384 
392  virtual int setVideoMixingLayout(const agora::linuxsdk::VideoMixingLayout &layout) = 0;
393 
400  virtual int stoppedOnError() = 0;
401 
408  virtual int leaveChannel() = 0;
409 
416  virtual int release() = 0;
417 
428  virtual const RecordingEngineProperties* getProperties() = 0;
429 
438  virtual int startService() = 0;
439 
448  virtual int stopService() = 0;
449 
459  virtual int setUserBackground(uid_t uid, const char* img_path) = 0;
460 
470  virtual int setLogLevel(agora::linuxsdk::agora_log_level level) = 0;
471 
472 };
473 
474 }
475 }
476 
477 #endif
char * recordFileRootDir
Definition: IAgoraRecordingEngine.h:244
virtual void videoFrameReceived(unsigned int uid, const agora::linuxsdk::VideoFrame *frame) const =0
agora::linuxsdk::REMOTE_VIDEO_STREAM_TYPE streamType
Definition: IAgoraRecordingEngine.h:291
virtual int setUserBackground(uid_t uid, const char *img_path)=0
virtual void onJoinChannelSuccess(const char *channelId, uid_t uid)=0
Definition: IAgoraLinuxSdkCommon.h:7
char * storageDir
Definition: IAgoraRecordingEngine.h:342
agora::linuxsdk::MIXED_AV_CODEC_TYPE mixedVideoAudio
Definition: IAgoraRecordingEngine.h:188
agora::linuxsdk::AUDIO_PROFILE_TYPE audioProfile
Definition: IAgoraRecordingEngine.h:299
int idleLimitSec
Definition: IAgoraRecordingEngine.h:275
virtual int setVideoMixingLayout(const agora::linuxsdk::VideoMixingLayout &layout)=0
char * defaultUserBg
Definition: IAgoraRecordingEngine.h:307
virtual int setLogLevel(agora::linuxsdk::agora_log_level level)=0
agora::linuxsdk::TRIGGER_MODE_TYPE triggerMode
Definition: IAgoraRecordingEngine.h:293
agora::linuxsdk::AUDIO_FORMAT_TYPE decodeAudio
Definition: IAgoraRecordingEngine.h:260
virtual void onLeaveChannel(agora::linuxsdk::LEAVE_PATH_CODE code)=0
Definition: IAgoraLinuxSdkCommon.h:507
Definition: IAgoraLinuxSdkCommon.h:276
agora::linuxsdk::VIDEO_FORMAT_TYPE decodeVideo
Definition: IAgoraRecordingEngine.h:254
Definition: IAgoraLinuxSdkCommon.h:420
virtual void onAudioVolumeIndication(const agora::linuxsdk::AudioVolumeInfo *speakers, unsigned int speakerNum)=0
virtual void onFirstRemoteAudioFrame(uid_t uid, int elapsed)=0
virtual void onReceivingStreamStatusChanged(bool receivingAudio, bool receivingVideo)=0
char * mixResolution
Definition: IAgoraRecordingEngine.h:229
int lowUdpPort
Definition: IAgoraRecordingEngine.h:265
Definition: IAgoraLinuxSdkCommon.h:325
Definition: IAgoraRecordingEngine.h:340
bool isAudioOnly
Definition: IAgoraRecordingEngine.h:168
char * cfgFilePath
Definition: IAgoraRecordingEngine.h:247
int audioIndicationInterval
Definition: IAgoraRecordingEngine.h:286
int captureInterval
Definition: IAgoraRecordingEngine.h:280
char * defaultVideoBg
Definition: IAgoraRecordingEngine.h:301
virtual void onFirstRemoteVideoDecoded(uid_t uid, int width, int height, int elapsed)=0
virtual void onUserJoined(uid_t uid, agora::linuxsdk::UserJoinInfos &infos)=0
char * decryptionMode
Definition: IAgoraRecordingEngine.h:237
Definition: IAgoraLinuxSdkCommon.h:442
virtual void audioFrameReceived(unsigned int uid, const agora::linuxsdk::AudioFrame *frame) const =0
bool isVideoOnly
Definition: IAgoraRecordingEngine.h:180
char * proxyServer
Definition: IAgoraRecordingEngine.h:297
virtual int joinChannel(const char *channelKey, const char *channelId, uid_t uid, const RecordingConfig &config)=0
virtual void onError(int error, agora::linuxsdk::STAT_CODE_TYPE stat_code)=0
bool isMixingEnabled
Definition: IAgoraRecordingEngine.h:186
Definition: IAgoraRecordingEngine.h:10
virtual void onUserOffline(uid_t uid, agora::linuxsdk::USER_OFFLINE_REASON_TYPE reason)=0
static IRecordingEngine * createAgoraRecordingEngine(const char *appId, IRecordingEngineEventHandler *eventHandler)
char * secret
Definition: IAgoraRecordingEngine.h:239
char * appliteDir
Definition: IAgoraRecordingEngine.h:241
agora::linuxsdk::LANGUAGE_TYPE lang
Definition: IAgoraRecordingEngine.h:295
agora::linuxsdk::CHANNEL_PROFILE_TYPE channelProfile
Definition: IAgoraRecordingEngine.h:288
virtual const RecordingEngineProperties * getProperties()=0
int highUdpPort
Definition: IAgoraRecordingEngine.h:270
Definition: IAgoraRecordingEngine.h:156
Definition: IAgoraRecordingEngine.h:348