NERoom SDK V1.41.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:
27
33
34public:
38 ~INERoomRtcController() override = default;
39
45 virtual void joinRtcChannel(const NERtcCallback& callback = NERtcCallback()) = 0;
46
53 virtual void joinRtcChannel(const std::string& channelName, const NERtcCallback& callback = NERtcCallback()) = 0;
54
60 virtual void leaveRtcChannel(const NERtcCallback& callback) = 0;
61
68 virtual void leaveRtcChannel(const std::string& channelName, const NERtcCallback& callback) = 0;
69
75 virtual void muteMyAudio(const NERtcCallback& callback = NERtcCallback()) = 0;
76
83 virtual void muteMyAudio(bool enableMediaPub = false, const NERtcCallback& callback = NERtcCallback()) = 0;
84
90 virtual void unmuteMyAudio(const NERtcCallback& callback = NERtcCallback()) = 0;
91
98 virtual void unmuteMyAudio(bool enableMediaPub = false, const NERtcCallback& callback = NERtcCallback()) = 0;
99
106 virtual int setupRemoteVideoCanvas(const std::string& userUuid, const NERoomVideoView& videoView) = 0;
107
113 virtual int setupLocalVideoSubStreamCanvas(const NERoomVideoView& videoView) = 0;
114
121 virtual int setupRemoteVideoSubStreamCanvas(const std::string& userUuid, const NERoomVideoView& videoView) = 0;
122
129 virtual int subscribeRemoteVideoStream(const std::string& userUuid, NEVideoStreamType streamType) = 0;
130
136 virtual int unsubscribeRemoteVideoStream(const std::string& userUuid) = 0;
137
143 virtual int subscribeRemoteVideoSubStream(const std::string& userUuid) = 0;
144
150 virtual int unsubscribeRemoteVideoSubStream(const std::string& userUuid) = 0;
151
157 virtual void muteMyVideo(const NERtcCallback& callback = NERtcCallback()) = 0;
158
164 virtual void unmuteMyVideo(const NERtcCallback& callback = NERtcCallback()) = 0;
165
173 ROOMKIT_DEPRECATED("use startAppShare with NERoomSourceID instead")
174 virtual void startAppShare(void* hwnd, bool preferMotion = false, const NERtcCallback& callback = NERtcCallback()) = 0;
175
184 virtual void startAppShare(NERoomSourceID sourceID, const NERoomScreenSharingOption& option, const NERtcCallback& callback = NERtcCallback()) = 0;
185
193 virtual int switchAppShare(void* hwnd, bool preferMotion = false) = 0;
194
204 virtual void startScreenShare(const uint32_t& monitorId,
205 const std::list<void*>& excludedWindowList = std::list<void*>(),
206 bool preferMotion = false,
207 const NERtcCallback& callback = NERtcCallback()) = 0;
208
218 virtual void startScreenShare(NERoomSourceID sourceID,
219 const NERoomScreenSharingOption& option,
220 const std::list<void*>& excludedWindowList = std::list<void*>(),
221 const NERtcCallback& callback = NERtcCallback()) = 0;
222
231 virtual int switchScreenShare(const uint32_t& monitorId, const std::list<void*>& excludedWindowList, bool preferMotion = false) = 0;
232
244 virtual void startRectShare(const NERectangle& sourceRectangle,
245 const NERectangle& regionRectangle,
246 const std::list<void*>& excludedWindowList = std::list<void*>(),
247 bool preferMotion = false,
248 const NERtcCallback& callback = NERtcCallback()) = 0;
249
260 virtual void startRectShare(const NERectangle& sourceRectangle,
261 const NERectangle& regionRectangle,
262 const NERoomScreenSharingOption& option,
263 const std::list<void*>& excludedWindowList = std::list<void*>(),
264 const NERtcCallback& callback = NERtcCallback()) = 0;
265
282 const NERectangle& regionRectangle,
283 const NERoomScreenSharingOption& option,
284 const NERtcCallback& callback = NERtcCallback()) = 0;
285
292 virtual int setExcludeWindowList(const std::list<void*>& excludedWindowList) = 0;
293
299 virtual void stopShare(const NERtcCallback& callback = NERtcCallback()) = 0;
300
306 virtual void pauseShare(const NERtcCallback& callback = NERtcCallback()) = 0;
307
313 virtual void resumeShare(const NERtcCallback& callback = NERtcCallback()) = 0;
314
320
326
333 virtual void muteMemberAudio(const std::string& userUuid, const NERtcCallback& callback = NERtcCallback()) = 0;
334
341 virtual void unmuteMemberAudio(const std::string& userUuid, const NERtcCallback& callback = NERtcCallback()) = 0;
342
349 virtual void muteMemberVideo(const std::string& userUuid, const NERtcCallback& callback = NERtcCallback()) = 0;
350
357 virtual void unmuteMemberVideo(const std::string& userUuid, const NERtcCallback& callback = NERtcCallback()) = 0;
358
366 virtual int enableMediaPub(NEMediaPubType mediaType, bool enable) = 0;
367
376 virtual int enableMediaPub(const std::string& channelName, NEMediaPubType mediaType, bool enable) = 0;
377
384 virtual void stopMemberShare(const std::string& userUuid, const NERtcCallback& callback = NERtcCallback()) = 0;
385
392 virtual void stopMemberSystemAudioShare(const std::string& userUuid, const NERtcCallback& callback = NERtcCallback()) = 0;
393
398 virtual std::string getScreenSharingUserUuid() const = 0;
399
409 virtual int setExternalAudioSource(bool enabled, int sampleRate, int channels) = 0;
410
416 virtual int pushExternalAudioFrame(const NERoomAudioFrame& frame) = 0;
417
428 virtual int adjustUserPlaybackSignalVolume(const std::string& userUuid, int volume) = 0;
429
438 virtual int enableEarBack(int volume) = 0;
439
444 virtual int disableEarBack() = 0;
445
454 virtual int startAudioMixing(const NERoomCreateAudioMixingOption& option) = 0;
455
461 virtual int pauseAudioMixing() = 0;
462
468 virtual int resumeAudioMixing() = 0;
469
476 virtual int stopAudioMixing() = 0;
477
485 virtual int setAudioMixingSendVolume(int volume) = 0;
486
494 virtual int setAudioMixingPlaybackVolume(int volume) = 0;
495
508 virtual int playEffect(uint32_t effectId, const NERoomCreateAudioEffectOption& option) = 0;
509
517 virtual int stopEffect(uint32_t effectId) = 0;
518
526 virtual int pauseEffect(uint32_t effectId) = 0;
527
535 virtual int resumeEffect(uint32_t effectId) = 0;
536
545 virtual int setEffectSendVolume(uint32_t effectId, int volume) = 0;
546
555 virtual int setEffectPlaybackVolume(uint32_t effectId, int volume) = 0;
556
563 virtual int stopAllEffects() = 0;
564
571 virtual int pauseAllEffects() = 0;
572
579 virtual int resumeAllEffects() = 0;
580
589 virtual void startChannelMediaRelay(const NERtcCallback& callback = NERtcCallback()) = 0;
590
596 virtual int stopChannelMediaRelay() = 0;
597
606 virtual int setAudioSubscribeOnlyBy(const std::vector<std::string>& userUuids) = 0;
607
625 virtual int sendSEIMsg(const std::string& data, NERoomRtcVideoStreamType type) = 0;
626
632 virtual int enableLocalAudioSubStream() = 0;
633
639 virtual int disableLocalAudioSubStream() = 0;
640
646 virtual int pauseLocalAudioRecording() = 0;
647
653 virtual int resumeLocalAudioRecording() = 0;
654
660 virtual int pauseLocalVideoCapture() = 0;
661
667 virtual int resumeLocalVideoCapture() = 0;
668
676 virtual int setClientRole(NERoomRTCClientRole clientRole) = 0;
677
678 /*
679 * @brief 开启 RTC 媒体流加密
680 * @param libPath 动态库地址,必传;(Windows: .dll; Mac: .dylib; Linux: .so)
681 * @return int 0 是成功,其他为失败
682 * @since v1.39.0
683 */
684 virtual int enableCustomEncryption(const std::string& libPath) = 0;
685
686 /*
687 * 开启 RTC 媒体流加密
688 * @param key 加密密钥,由业务服务端生成密钥,必传
689 * @param encryptionType 加密方式,加密方式(目前仅支持 kNEEncryptionTypeGMCryptoSM4ECB)
690 * @return int 0 是成功,其他为失败
691 */
692 virtual int enableEncryption(const std::string& key, NEEncryptionType encryptionType) = 0;
693
698 virtual int disableEncryption() = 0;
699
705 virtual void disconnectMyAudio(const NERtcCallback& callback) = 0;
706
712 virtual void reconnectMyAudio(const NERtcCallback& callback) = 0;
713
714
722 virtual int adjustChannelPlaybackSignalVolume(int volume) = 0;
723
732 virtual int adjustChannelPlaybackSignalVolume(const std::string& channelName, int volume) = 0;
733
740 virtual int enableLocalAudio(const std::string& channelName, bool enable) = 0;
741
754 const NERoomTakeSnapshotCallback& callback) = 0;
755
767 virtual int takeRemoteSnapshot(const std::string& userUuid,
768 NERoomRtcVideoStreamType stream_type,
769 const NERoomTakeSnapshotCallback& callback) = 0;
770
776 virtual int enableCaption(bool enable) = 0;
783
790
796 virtual void startShareSystemAudio(const NERtcCallback& callback) = 0;
801 virtual void stopShareSystemAudio(const NERtcCallback& callback) = 0;
807 virtual int enableLocalVideo(bool enable) = 0;
808
814 virtual int setCloudProxy(NERoomRtcTransportType transportType) = 0;
815
822};
823
824} // namespace neroom
825
826#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 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 setVideoStreamLayerCount(NERoomRtcVideoStreamLayerCount layerCount)=0
brief 设置视频流模式
virtual int enableEncryption(const std::string &key, NEEncryptionType encryptionType)=0
virtual int pauseAudioMixing()=0
暂停播放音乐文件及混音。
virtual int enableCustomEncryption(const std::string &libPath)=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
打开本端视频
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 setCaptionTranslationConfig(const NERoomCaptionTranslationConfig &config)=0
设置字幕翻译配置 注意事项:区别于 [setCaptionTranslationLanguage],该接口可配置多源语言和多目标语言,且支持的语言更丰富。
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
共享区域,待共享区域相对于整个屏幕或窗口的位置
enum tagNEVideoStreamType { kStreamTypeHigh, kStreamLow, kStreamMid } NEVideoStreamType
视频流类型
struct tagNERoomScreenSharingOption { bool enableHighPerformance{true}; NERoomScreenSharingHighlight highlight; bool preferMotion{true}; NERoomDegradationPreference degradationPreference{kNERoomDegradationDefault}; int limitFrameRate{30}; std::string videoProfile; int frameRate{0}; int bitrate{0};} NERoomScreenSharingOption
屏幕共享选项
void * NERoomSourceID
enum tagNERoomRtcVideoStreamLayerCount { kNERoomRtcVideoStreamLayerCountOne=1, kNERoomRtcVideoStreamLayerCountTwo=2, kNERoomRtcVideoStreamLayerCountThree=3, } NERoomRtcVideoStreamLayerCount
设置视频流模式
NEEncryptionType
RTC 流加密类型
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 tagNERoomRtcVideoStreamType { kNEVideoStreamMain=0, kNEVideoStreamSub=1, kNEVideoStreamCount, } NERoomRtcVideoStreamType
视频流类型
房间外rtc控制器接口头文件