NERoom SDK V1.36.0
载入中...
搜索中...
未找到
rtc_ctrl_interface.h
浏览该文件的文档.
1// Copyright (c) 2022 NetEase, Inc. All rights reserved.
2// Use of this source code is governed by a MIT license that can be
3// found in the LICENSE file.
4
11#ifndef RTC_CTRL_INTERFACE_H
12#define RTC_CTRL_INTERFACE_H
13
15
16namespace neroom {
17
22public:
32
38
39public:
43 ~INERoomRtcController() override = default;
44
50 virtual void joinRtcChannel(const NERtcCallback& callback = NERtcCallback()) = 0;
51
58 virtual void joinRtcChannel(const std::string& channelName, const NERtcCallback& callback = NERtcCallback()) = 0;
59
65 virtual void leaveRtcChannel(const NERtcCallback& callback) = 0;
66
73 virtual void leaveRtcChannel(const std::string& channelName, const NERtcCallback& callback) = 0;
74
80 virtual void muteMyAudio(const NERtcCallback& callback = NERtcCallback()) = 0;
81
88 virtual void muteMyAudio(bool enableMediaPub = false, const NERtcCallback& callback = NERtcCallback()) = 0;
89
95 virtual void unmuteMyAudio(const NERtcCallback& callback = NERtcCallback()) = 0;
96
103 virtual void unmuteMyAudio(bool enableMediaPub = false, const NERtcCallback& callback = NERtcCallback()) = 0;
104
111 virtual int setupRemoteVideoCanvas(const std::string& userUuid, const NERoomVideoView& videoView) = 0;
112
118 virtual int setupLocalVideoSubStreamCanvas(const NERoomVideoView& videoView) = 0;
119
126 virtual int setupRemoteVideoSubStreamCanvas(const std::string& userUuid, const NERoomVideoView& videoView) = 0;
127
134 virtual int subscribeRemoteVideoStream(const std::string& userUuid, NEVideoStreamType streamType) = 0;
135
141 virtual int unsubscribeRemoteVideoStream(const std::string& userUuid) = 0;
142
148 virtual int subscribeRemoteVideoSubStream(const std::string& userUuid) = 0;
149
155 virtual int unsubscribeRemoteVideoSubStream(const std::string& userUuid) = 0;
156
162 virtual void muteMyVideo(const NERtcCallback& callback = NERtcCallback()) = 0;
163
169 virtual void unmuteMyVideo(const NERtcCallback& callback = NERtcCallback()) = 0;
170
179 virtual void getScreenCaptureSourceList(const NERoomSize& thumbSize,
180 const NERoomSize& iconSize,
181 bool includeScreen,
182 const NERoomCaptureSourceCallback& callback) = 0;
183
191 ROOMKIT_DEPRECATED("use startAppShare with NERoomSourceID instead")
192 virtual void startAppShare(void* hwnd, bool preferMotion = false, const NERtcCallback& callback = NERtcCallback()) = 0;
193
202 virtual void startAppShare(NERoomSourceID sourceID, const NERoomScreenSharingOption& option, const NERtcCallback& callback = NERtcCallback()) = 0;
203
211 virtual int switchAppShare(void* hwnd, bool preferMotion = false) = 0;
212
222 virtual void startScreenShare(const uint32_t& monitorId,
223 const std::list<void*>& excludedWindowList = std::list<void*>(),
224 bool preferMotion = false,
225 const NERtcCallback& callback = NERtcCallback()) = 0;
226
236 virtual void startScreenShare(NERoomSourceID sourceID,
237 const NERoomScreenSharingOption& option,
238 const std::list<void*>& excludedWindowList = std::list<void*>(),
239 const NERtcCallback& callback = NERtcCallback()) = 0;
240
249 virtual int switchScreenShare(const uint32_t& monitorId, const std::list<void*>& excludedWindowList, bool preferMotion = false) = 0;
250
262 virtual void startRectShare(const NERectangle& sourceRectangle,
263 const NERectangle& regionRectangle,
264 const std::list<void*>& excludedWindowList = std::list<void*>(),
265 bool preferMotion = false,
266 const NERtcCallback& callback = NERtcCallback()) = 0;
267
278 virtual void startRectShare(const NERectangle& sourceRectangle,
279 const NERectangle& regionRectangle,
280 const NERoomScreenSharingOption& option,
281 const std::list<void*>& excludedWindowList = std::list<void*>(),
282 const NERtcCallback& callback = NERtcCallback()) = 0;
283
300 const NERectangle& regionRectangle,
301 const NERoomScreenSharingOption& option,
302 const NERtcCallback& callback = NERtcCallback()) = 0;
303
310 virtual int setExcludeWindowList(const std::list<void*>& excludedWindowList) = 0;
311
317 virtual void stopShare(const NERtcCallback& callback = NERtcCallback()) = 0;
318
324 virtual void pauseShare(const NERtcCallback& callback = NERtcCallback()) = 0;
325
331 virtual void resumeShare(const NERtcCallback& callback = NERtcCallback()) = 0;
332
338
344
351 virtual void muteMemberAudio(const std::string& userUuid, const NERtcCallback& callback = NERtcCallback()) = 0;
352
359 virtual void unmuteMemberAudio(const std::string& userUuid, const NERtcCallback& callback = NERtcCallback()) = 0;
360
367 virtual void muteMemberVideo(const std::string& userUuid, const NERtcCallback& callback = NERtcCallback()) = 0;
368
375 virtual void unmuteMemberVideo(const std::string& userUuid, const NERtcCallback& callback = NERtcCallback()) = 0;
376
384 virtual int enableMediaPub(NEMediaPubType mediaType, bool enable) = 0;
385
394 virtual int enableMediaPub(const std::string& channelName, NEMediaPubType mediaType, bool enable) = 0;
395
402 virtual void stopMemberShare(const std::string& userUuid, const NERtcCallback& callback = NERtcCallback()) = 0;
403
410 virtual void stopMemberSystemAudioShare(const std::string& userUuid, const NERtcCallback& callback = NERtcCallback()) = 0;
411
416 virtual std::string getScreenSharingUserUuid() const = 0;
417
427 virtual int setExternalAudioSource(bool enabled, int sampleRate, int channels) = 0;
428
434 virtual int pushExternalAudioFrame(const NERoomAudioFrame& frame) = 0;
435
446 virtual int adjustUserPlaybackSignalVolume(const std::string& userUuid, int volume) = 0;
447
456 virtual int enableEarBack(int volume) = 0;
457
462 virtual int disableEarBack() = 0;
463
472 virtual int startAudioMixing(const NERoomCreateAudioMixingOption& option) = 0;
473
479 virtual int pauseAudioMixing() = 0;
480
486 virtual int resumeAudioMixing() = 0;
487
494 virtual int stopAudioMixing() = 0;
495
503 virtual int setAudioMixingSendVolume(int volume) = 0;
504
512 virtual int setAudioMixingPlaybackVolume(int volume) = 0;
513
526 virtual int playEffect(uint32_t effectId, const NERoomCreateAudioEffectOption& option) = 0;
527
535 virtual int stopEffect(uint32_t effectId) = 0;
536
544 virtual int pauseEffect(uint32_t effectId) = 0;
545
553 virtual int resumeEffect(uint32_t effectId) = 0;
554
563 virtual int setEffectSendVolume(uint32_t effectId, int volume) = 0;
564
573 virtual int setEffectPlaybackVolume(uint32_t effectId, int volume) = 0;
574
581 virtual int stopAllEffects() = 0;
582
589 virtual int pauseAllEffects() = 0;
590
597 virtual int resumeAllEffects() = 0;
598
607 virtual void startChannelMediaRelay(const NERtcCallback& callback = NERtcCallback()) = 0;
608
614 virtual int stopChannelMediaRelay() = 0;
615
624 virtual int setAudioSubscribeOnlyBy(const std::vector<std::string>& userUuids) = 0;
625
643 virtual int sendSEIMsg(const std::string& data, NERoomRtcVideoStreamType type) = 0;
644
650 virtual int enableLocalAudioSubStream() = 0;
651
657 virtual int disableLocalAudioSubStream() = 0;
658
664 virtual int pauseLocalAudioRecording() = 0;
665
671 virtual int resumeLocalAudioRecording() = 0;
672
678 virtual int pauseLocalVideoCapture() = 0;
679
685 virtual int resumeLocalVideoCapture() = 0;
686
694 virtual int setClientRole(NERoomRTCClientRole clientRole) = 0;
695
696 /*
697 * 开启 RTC 媒体流加密
698 * @param key 加密密钥,由业务服务端生成密钥,必传
699 * @param encryptionType 加密方式,加密方式(目前仅支持 kNEEncryptionTypeGMCryptoSM4ECB)
700 * @return int 0 是成功,其他为失败
701 */
702 virtual int enableEncryption(const std::string& key, NEEncryptionType encryptionType) = 0;
703
708 virtual int disableEncryption() = 0;
709
715 virtual void disconnectMyAudio(const NERtcCallback& callback) = 0;
716
722 virtual void reconnectMyAudio(const NERtcCallback& callback) = 0;
723
724
732 virtual int adjustChannelPlaybackSignalVolume(int volume) = 0;
733
742 virtual int adjustChannelPlaybackSignalVolume(const std::string& channelName, int volume) = 0;
743
750 virtual int enableLocalAudio(const std::string& channelName, bool enable) = 0;
751
764 const NERoomTakeSnapshotCallback& callback) = 0;
765
777 virtual int takeRemoteSnapshot(const std::string& userUuid,
778 NERoomRtcVideoStreamType stream_type,
779 const NERoomTakeSnapshotCallback& callback) = 0;
780
786 virtual int enableCaption(bool enable) = 0;
798 virtual void startShareSystemAudio(const NERtcCallback& callback) = 0;
803 virtual void stopShareSystemAudio(const NERtcCallback& callback) = 0;
809 virtual int enableLocalVideo(bool enable) = 0;
810
816 virtual int setCloudProxy(NERoomRtcTransportType transportType) = 0;
817};
818
819} // namespace neroom
820
821#endif // RTC_CTRL_INTERFACE_H
virtual void startAppShare(void *hwnd, bool preferMotion=false, const NERtcCallback &callback=NERtcCallback())=0
开始应用共享
virtual int setExternalAudioSource(bool enabled, int sampleRate, int channels)=0
开启或关闭外部音频源数据输入
virtual std::string getScreenSharingUserUuid() const =0
查询屏幕共享者用户Id
virtual int stopChannelMediaRelay()=0
停止跨房间媒体流转发
virtual int switchScreenShare(const uint32_t &monitorId, const std::list< void * > &excludedWindowList, bool preferMotion=false)=0
切换本地共享屏幕
virtual int setEffectSendVolume(uint32_t effectId, int volume)=0
设置音效文件发送音量。
virtual void getScreenCaptureSourceList(const NERoomSize &thumbSize, const NERoomSize &iconSize, bool includeScreen, const NERoomCaptureSourceCallback &callback)=0
获取可以共享的数据源
virtual void reconnectMyAudio(const NERtcCallback &callback)=0
恢复音频,恢复音频后将恢复自己与其他人的音频互通,但是具体音频是否可听见还是取决于成员的mute状态
virtual void startScreenShare(const uint32_t &monitorId, const std::list< void * > &excludedWindowList=std::list< void * >(), bool preferMotion=false, const NERtcCallback &callback=NERtcCallback())=0
开启本地屏幕共享
virtual int takeRemoteSnapshot(const std::string &userUuid, NERoomRtcVideoStreamType stream_type, const NERoomTakeSnapshotCallback &callback)=0
virtual int enableLocalAudioSubStream()=0
开启音频辅流。
virtual int disableEncryption()=0
virtual void startChannelMediaRelay(const NERtcCallback &callback=NERtcCallback())=0
开始跨房间媒体流转发
virtual int enableEncryption(const std::string &key, NEEncryptionType encryptionType)=0
virtual int pauseAudioMixing()=0
暂停播放音乐文件及混音。
virtual int unsubscribeRemoteVideoStream(const std::string &userUuid)=0
取消订阅用户视频流
NECallback<> NERtcCallback
rtc操作结果回调
virtual int playEffect(uint32_t effectId, const NERoomCreateAudioEffectOption &option)=0
播放指定音效文件。
virtual int pauseLocalVideoCapture()=0
暂停本地视频采集
virtual int sendSEIMsg(const std::string &data, NERoomRtcVideoStreamType type)=0
发送媒体补充增强信息(SEI)。 在本端推流传输视频流数据同时,发送流媒体补充增强信息来同步一些其他附加信息。当推流方发送 SEI 后,拉流方可通过监听 onRtcRecvSEIMsg 的回调获取 S...
virtual void unmuteMemberAudio(const std::string &userUuid, const NERtcCallback &callback=NERtcCallback())=0
尝试打开成员音频,会进行权限校验
virtual int setAudioMixingPlaybackVolume(int volume)=0
调节伴奏播放音量。
virtual void stopShareSystemAudio(const NERtcCallback &callback)=0
停止本地系统音频共享
virtual void joinRtcChannel(const std::string &channelName, const NERtcCallback &callback=NERtcCallback())=0
加入音视频子房间。注意:在加入其他子房间前,需要先通过[joinRtcChannel]加入主房间。
virtual void leaveRtcChannel(const NERtcCallback &callback)=0
离开rtc主频道
virtual void unmuteMyVideo(const NERtcCallback &callback=NERtcCallback())=0
打开本端视频
NECallback< const std::list< NERoomScreenCaptureInfo > & > NERoomCaptureSourceCallback
获取可以共享的数据源回调列表,列表内容
virtual int setClientRole(NERoomRTCClientRole clientRole)=0
设置用户在 RTC 房间的角色
virtual void muteMyAudio(bool enableMediaPub=false, const NERtcCallback &callback=NERtcCallback())=0
开启本地静音,并根据 enableMediaPub 参数决定是否关闭本地上行音频流
virtual int setEffectPlaybackVolume(uint32_t effectId, int volume)=0
设置音效文件播放音量。
virtual int disableLocalAudioSubStream()=0
关闭音频辅流。
virtual void startRectShare(const NERectangle &sourceRectangle, const NERectangle &regionRectangle, const std::list< void * > &excludedWindowList=std::list< void * >(), bool preferMotion=false, const NERtcCallback &callback=NERtcCallback())=0
开始区域共享
virtual int takeLocalSnapshot(NERoomRtcVideoStreamType stream_type, const NERoomTakeSnapshotCallback &callback)=0
virtual int resumeEffect(uint32_t effectId)=0
恢复播放指定音效文件。
~INERoomRtcController() override=default
析构函数
virtual int pushExternalAudioFrame(const NERoomAudioFrame &frame)=0
推送外部音频数据输入
virtual int switchAppShare(void *hwnd, bool preferMotion=false)=0
切换应用共享
virtual void muteMemberVideo(const std::string &userUuid, const NERtcCallback &callback=NERtcCallback())=0
尝试关闭成员视频,会进行权限校验
virtual int setupLocalVideoSubStreamCanvas(const NERoomVideoView &videoView)=0
设置本地视频辅流画布
virtual int startSystemAudioLoopbackCapture()=0
屏幕共享时开始共享本地电脑声音
virtual int stopSystemAudioLoopbackCapture()=0
屏幕共享时关闭共享本地电脑声音
virtual void leaveRtcChannel(const std::string &channelName, const NERtcCallback &callback)=0
离开rtc子频道
virtual void pauseShare(const NERtcCallback &callback=NERtcCallback())=0
暂停共享
virtual int setCloudProxy(NERoomRtcTransportType transportType)=0
brief 开启/关闭云代理服务
virtual void startShareSystemAudio(const NERtcCallback &callback)=0
开启本地系统音频共享
virtual void unmuteMyAudio(const NERtcCallback &callback=NERtcCallback())=0
关闭本地静音,并开启本地上行音频流
virtual void stopMemberShare(const std::string &userUuid, const NERtcCallback &callback=NERtcCallback())=0
停止成员共享
virtual int setupRemoteVideoSubStreamCanvas(const std::string &userUuid, const NERoomVideoView &videoView)=0
设置远端视频辅流画布
virtual void resumeShare(const NERtcCallback &callback=NERtcCallback())=0
恢复共享
virtual void disconnectMyAudio(const NERtcCallback &callback)=0
断开音频,音频断开后将会中断自己与房间里其他人的音频互通。
virtual int enableCaption(bool enable)=0
virtual int setAudioSubscribeOnlyBy(const std::vector< std::string > &userUuids)=0
设置自己的音频只能被房间内指定的人订阅,默认房间所有其他人都可以订阅自己的音频。
virtual int subscribeRemoteVideoStream(const std::string &userUuid, NEVideoStreamType streamType)=0
订阅用户视频流
virtual int unsubscribeRemoteVideoSubStream(const std::string &userUuid)=0
取消订阅用户视频辅流
virtual int adjustUserPlaybackSignalVolume(const std::string &userUuid, int volume)=0
调节本地播放的指定远端用户的信号音量
virtual void switchScreenCaptureSource(const NERoomScreenCaptureInfo &sourceInfo, const NERectangle &regionRectangle, const NERoomScreenSharingOption &option, const NERtcCallback &callback=NERtcCallback())=0
设置屏幕分享参数,该方法在屏幕分享过程中调用,用来快速切换采集源。 如果您期望在屏幕分享的过程中,切换想要分享的窗口,可以再次调用这个函数而不需要重新开启屏幕分享。 支持如下四种情况:
virtual int resumeAllEffects()=0
恢复播放所有音效文件。
virtual void muteMyVideo(const NERtcCallback &callback=NERtcCallback())=0
关闭本端视频
virtual int setupRemoteVideoCanvas(const std::string &userUuid, const NERoomVideoView &videoView)=0
设置远端视频画布
virtual int startAudioMixing(const NERoomCreateAudioMixingOption &option)=0
开始播放音乐文件。
virtual int stopAllEffects()=0
停止播放所有音效文件。
virtual void stopMemberSystemAudioShare(const std::string &userUuid, const NERtcCallback &callback=NERtcCallback())=0
停止成员音频共享
virtual void muteMemberAudio(const std::string &userUuid, const NERtcCallback &callback=NERtcCallback())=0
尝试关闭成员音频,会进行权限校验
virtual int enableMediaPub(NEMediaPubType mediaType, bool enable)=0
开启或关闭本地媒体流(主流)的发送。 该方法用于开始或停止向网络发送本地音频或视频数据。 该方法不影响接收或播放远端媒体流,也不会影响本地音频或视频的采集状态。
virtual void stopShare(const NERtcCallback &callback=NERtcCallback())=0
停止本地共享
virtual void unmuteMyAudio(bool enableMediaPub=false, const NERtcCallback &callback=NERtcCallback())=0
关闭本地静音,并根据 enableMediaPub 参数决定是否开启本地上行音频流
virtual int stopAudioMixing()=0
停止播放音乐文件及混音。
virtual int disableEarBack()=0
关闭耳返功能。
virtual int enableEarBack(int volume)=0
开启耳返功能。
NECallback< NERoomTakeSnapshotInfo > NERoomTakeSnapshotCallback
截图结果回调
virtual int setExcludeWindowList(const std::list< void * > &excludedWindowList)=0
设置共享时排除的窗口列表
virtual void unmuteMemberVideo(const std::string &userUuid, const NERtcCallback &callback=NERtcCallback())=0
尝试打开成员视频,会进行权限校验
virtual int pauseEffect(uint32_t effectId)=0
暂停音效文件播放。
virtual int enableLocalVideo(bool enable)=0
brief 开启/关闭本地视频设备
virtual int pauseLocalAudioRecording()=0
暂停本地麦克风采集,调用后远端用户听不到本端声音
virtual int setAudioMixingSendVolume(int volume)=0
调节伴奏发送音量。
virtual int resumeLocalAudioRecording()=0
恢复本地麦克风采集,调用后远端用户可以听到本端声音
virtual void joinRtcChannel(const NERtcCallback &callback=NERtcCallback())=0
加入rtc主频道
virtual int enableLocalAudio(const std::string &channelName, bool enable)=0
virtual int stopEffect(uint32_t effectId)=0
停止播放指定音效文件。
virtual int subscribeRemoteVideoSubStream(const std::string &userUuid)=0
订阅用户视频辅流
virtual int resumeLocalVideoCapture()=0
恢复本地视频采集
virtual int resumeAudioMixing()=0
恢复播放音乐文件及混音。
virtual int setCaptionTranslationLanguage(NERoomCaptionTranslationLanguage language)=0
设置字幕 设置字幕翻译语言。默认为 [NERoomCaptionTranslationLanguage.NONE],即不翻译。
virtual void muteMyAudio(const NERtcCallback &callback=NERtcCallback())=0
开启本地静音,并关闭本地上行音频流
virtual int adjustChannelPlaybackSignalVolume(int volume)=0
调节对应房间本地播放的所有远端用户的信号音量。通过此接口可以实现调节所有远端用户在本地播放的混音音量。
virtual int pauseAllEffects()=0
暂停所有音效文件播放。
#define ROOMKIT_DEPRECATED(message)
struct tagNERectangle { tagNERectangle() :x(0), y(0), width(0), height(0) {} int x; int y; int width; int height; } NERectangle
共享区域,待共享区域相对于整个屏幕或窗口的位置
void * NERoomSourceID
struct tagNERoomSize { int width{0}; int height{0};} NERoomSize
NERoom 通用大小数据结构
NEEncryptionType
RTC 流加密类型
struct tagNERoomScreenSharingOption { bool enableHighPerformance{true}; NERoomScreenSharingHighlight highlight; int limitFrameRate{30}; std::string videoProfile;} NERoomScreenSharingOption
屏幕共享选项
enum tagNERoomCaptionTranslationLanguage { kNone=0, kChinese, kEnglish, kJapanese } NERoomCaptionTranslationLanguage
字幕目标翻译语言枚举
enum tagNEMediaPubType { kNEMediaPubTypeAudio } NEMediaPubType
媒体 Pub 类型,目前仅支持音频
struct tagNERoomVideoView { bool setup=false; void *window=nullptr; NEVideoScalingMode scalingMode=kVideoScaleFit; NEVideoMirrorMode mirrorMode=kVideoMirrorModeDisabled; } NERoomVideoView
视频画布
struct tagNERoomCreateAudioEffectOption { std::string path; int loopCount=1; bool sendEnabled=true; uint32_t sendVolume=100; bool playbackEnabled=true; uint32_t playbackVolume=100;} NERoomCreateAudioEffectOption
std::function< void(int, const std::string &, const TResultParam &...)> NECallback
通用回调
struct tagNERoomCreateAudioMixingOption { std::string path; int loopCount=1; bool sendEnabled=true; uint32_t sendVolume=100; bool playbackEnabled=true; uint32_t playbackVolume=100; uint64_t startTimestamp=0; NERoomRtcAudioStreamType sendWithAudioType=kNERoomRtcAudioStreamTypeMain;} NERoomCreateAudioMixingOption
创建混音的配置项
enum tagNERoomRTCClientRole { kRoomRTCClientRoleBroadcaster, kRoomRTCClientRoleAudience } NERoomRTCClientRole
struct tagNERoomAudioFrame { NEAudioFormat format; void *data=nullptr; int64_t syncTimestamp=0; } NERoomAudioFrame
外部输入的音频帧
enum tagNERoomRtcTransportType { kNERoomRtcTransportTypeNoneProxy=0, kNERoomRtcTransportTypeUDPProxy=1, } NERoomRtcTransportType
云代理模式
struct tagNERoomScreenCaptureInfo { NERoomScreenCaptureSourceType type; NERoomSourceID sourceID; std::string title; std::string sourceName; std::string processPath; NERoomThumbImage thumbImage; NERoomThumbImage icon; bool primaryMonitor;} NERoomScreenCaptureInfo
被共享数据源信息
enum tagNEVideoStreamType { kStreamTypeHigh, kStreamLow } NEVideoStreamType
视频流类型
enum tagNERoomRtcVideoStreamType { kNEVideoStreamMain=0, kNEVideoStreamSub=1, kNEVideoStreamCount, } NERoomRtcVideoStreamType
视频流类型
房间外rtc控制器接口头文件