class bytertc::IVideoEffect
cpp高级视频特效,参看集成指南。
| 返回 | 名称 |
|---|---|
| virtual | ~IVideoEffect |
| virtual int | initCVResource |
| virtual int | getAuthMessage |
| virtual int | freeAuthMessage |
| virtual int | enableVideoEffect |
| virtual int | disableVideoEffect |
| virtual int | setEffectNodes |
| virtual int | updateEffectNode |
| virtual int | setColorFilter |
| virtual int | setColorFilterIntensity |
| virtual int | enableFaceDetection |
| virtual int | disableFaceDetection |
| virtual void | [deprecated] setAlgoModelPath |
| virtual int | [deprecated] checkLicense |
| virtual int | [deprecated] enableEffect |
| virtual int | [deprecated] updateNode |
| virtual int | [deprecated] registerFaceDetectionObserver |
virtual bytertc::IVideoEffect::~IVideoEffect()=default
cppvirtual int bytertc::IVideoEffect::initCVResource(
const char* license_file_path,
const char* algo_model_dir
)=0
cpp检查视频特效证书,设置算法模型路径,并初始化特效模块。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| license_file_path | const char * | 证书文件的绝对路径,用于鉴权。 |
| algo_model_dir | const char * | 算法模型绝对路径,即存放特效 SDK 所有算法模型的目录。 |
返回值
virtual int bytertc::IVideoEffect::getAuthMessage(
char* *ppmsg,
int* len
)=0
cpp从特效 SDK 获取授权消息,用于获取在线许可证。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| ppmsg | char ** | 授权消息字符串地址 |
| len | int * | 授权消息字符串的长度 |
返回值
注意
virtual int bytertc::IVideoEffect::freeAuthMessage(char* pmsg)=0
cpp使用完授权消息字符串后,释放内存。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| pmsg | char * | getAuthMessage 返回的授权消息字符串。 |
返回值
virtual int bytertc::IVideoEffect::enableVideoEffect()=0
cpp开启高级美颜、滤镜等视频特效。
返回值
注意
virtual int bytertc::IVideoEffect::disableVideoEffect()=0
cpp关闭视频特效。
返回值
注意
调用 enableVideoEffect 开启视频特效。
virtual int bytertc::IVideoEffect::setEffectNodes(
const char* *effect_node_paths,
int node_num
)=0
cpp设置视频特效素材包。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_node_paths | const char ** | 特效素材包绝对路径数组。 要取消当前视频特效,将此参数设置为 null。 |
| node_num | int | 特效素材包个数。 |
返回值
注意
调用本方法前,必须先调用 enableVideoEffect。
virtual int bytertc::IVideoEffect::updateEffectNode(
const char* effect_node_path,
const char* node_key,
float node_value
)=0
cpp设置特效强度。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_node_path | const char * | 特效素材包绝对路径,参考素材包结构说明。 |
| node_key | const char * | 需要设置的素材 key 名称,参考素材 key 对应说明。 |
| node_value | float | 特效强度值,取值范围 [0,1],超出范围时设置无效。 |
返回值
virtual int bytertc::IVideoEffect::setColorFilter(const char* res_path)=0
cpp设置颜色滤镜。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| res_path | const char * | 滤镜资源包绝对路径。 |
返回值
注意
调用 setColorFilterIntensity 设置已启用颜色滤镜的强度。设置强度为 0 时即关闭颜色滤镜。
virtual int bytertc::IVideoEffect::setColorFilterIntensity(float intensity)=0
cpp设置已启用颜色滤镜的强度。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| intensity | float | 滤镜强度。取值范围 [0,1],超出范围时设置无效。 当设置滤镜强度为 0 时即关闭颜色滤镜。 |
返回值
virtual int bytertc::IVideoEffect::enableFaceDetection(
IFaceDetectionObserver* observer,
unsigned int interval_ms,
const char* face_model_path
)=0
cpp开启人脸识别功能,并设置人脸检测结果回调观察者。
此观察者后,你会周期性收到 onFaceDetectResult 回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| observer | IFaceDetectionObserver * | 人脸检测结果回调观察者,参看 IFaceDetectionObserver。 |
| interval_ms | unsigned int | 两次回调之间的最小时间间隔,必须大于 0,单位为毫秒。实际收到回调的时间间隔大于 interval_ms,小于 interval_ms+视频采集帧间隔。 |
| face_model_path | const char * | 人脸检测算法模型文件路径,一般为 ttfacemodel 文件夹中 tt_face_vXXX.model 文件的绝对路径。 |
返回值
virtual int bytertc::IVideoEffect::disableFaceDetection()=0
cpp关闭人脸识别功能。
返回值
virtual void bytertc::IVideoEffect::setAlgoModelPath(const char* model_path)=0
cppDeprecated since 3.50 and will be deleted in 3.55, use initCVResource instead.
设置视频特效算法模型路径
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| model_path | const char * | 模型路径 |
virtual int bytertc::IVideoEffect::checkLicense(
void* android_context,
void* jnienv,
const char* license_path
)=0
cppDeprecated since 3.50 and will be deleted in 3.55, use initCVResource instead.
视频特效许可证检查
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| android_context | void * | Android Context 对象指针(jobject 类型)。Android 以外平台传入 nullptr |
| jnienv | void * | Android JNIEnv 指针。Android 以外平台传入 nullptr |
| license_path | const char * | 许可证文件绝对路径 |
返回值
注意
开始使用视频特效前,你必须先调用这个方法进行许可证验证
virtual int bytertc::IVideoEffect::enableEffect(bool enabled)=0
cppDeprecated since 3.50 and will be deleted in 3.55, use enableVideoEffect instead.
开启关闭视频特效
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enabled | bool | 是否开启特效,true: 开启,false: 关闭 |
返回值
注意
在调用 CheckLicense 和 SetAlgoModelPath 后调用此方法。
virtual int bytertc::IVideoEffect::updateNode(
const char* node_path,
const char* node_key,
float node_value
)=0
cppDeprecated since 3.50 and will be deleted in 3.55, use updateEffectNode instead.
设置特效强度
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| node_path | const char * | 特效素材包路径 |
| node_key | const char * | 需要设置的素材 key 名称,取值请参考 素材 key 对应说明。 |
| node_value | float | 需要设置的强度值 取值范围 [0,1],超出范围时设置无效。 |
返回值
virtual int bytertc::IVideoEffect::registerFaceDetectionObserver(
IFaceDetectionObserver* observer,
int interval_ms
)=0
cppDeprecated since 3.50 and will be deleted in 3.55, use enableFaceDetection and disableFaceDetection instead.
注册人脸检测结果回调观察者。
注册此观察者后,你会周期性收到 onFaceDetectResult 回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| observer | IFaceDetectionObserver * | 人脸检测结果回调观察者,参看 IFaceDetectionObserver。 |
| interval_ms | int | 时间间隔,必须大于 0。单位:ms。实际收到回调的时间间隔大于 interval,小于 interval+视频采集帧间隔。 |
返回值
class bytertc::IAudioMixingManager
cppDeprecated since 353. Use IAudioEffectPlayer and IMediaPlayer instead.
混音管理类
| 返回 | 名称 |
|---|---|
| virtual void | [deprecated] startAudioMixing |
| virtual void | [deprecated] stopAudioMixing |
| virtual void | [deprecated] pauseAudioMixing |
| virtual void | [deprecated] resumeAudioMixing |
| virtual void | [deprecated] preloadAudioMixing |
| virtual void | [deprecated] unloadAudioMixing |
| virtual int | [deprecated] getAudioMixingDuration |
| virtual int | [deprecated] getAudioMixingCurrentPosition |
| virtual void | [deprecated] setAudioMixingPosition |
| virtual void | [deprecated] setAudioMixingDualMonoMode |
| virtual void | [deprecated] setAudioMixingPitch |
| virtual int | [deprecated] setAudioMixingPlaybackSpeed |
| virtual void | [deprecated] setAudioMixingProgressInterval |
| virtual void | [deprecated] setAudioMixingLoudness |
| virtual void | [deprecated] enableAudioMixingFrame |
| virtual void | [deprecated] disableAudioMixingFrame |
| virtual int | [deprecated] pushAudioMixingFrame |
| virtual int | [deprecated] getAudioTrackCount |
| virtual void | [deprecated] selectAudioTrack |
virtual void bytertc::IAudioMixingManager::startAudioMixing(
int mix_id,
const char* file_path,
const AudioMixingConfig &config
)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer or IAudioEffectPlayer instead
开始播放音频文件。
可以通过传入不同的 ID 和 filepath 多次调用本方法,以实现同时播放多个混音文件,实现混音叠加。
传入参数
| 参数名 | 类型 | 说明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| mix_id | int | 混音 ID。用于标识混音,请保证混音 ID 唯一性。 如果使用相同的 ID 重复调用本方法后,前一次混音会停止,后一次混音开始,SDK 会使用 onAudioMixingStateChanged 回调通知前一次混音已停止。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| file_path | const char * | 用于混音文件路径。 支持在线文件的 URL 和本地文件的绝对路径。对于在线文件的 URL,仅支持 https 协议。 推荐的音频文件采样率:8KHz、16KHz、22.05KHz、44.1KHz、48KHz。 不同平台支持的本地音频文件格式:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| config | const AudioMixingConfig & | 混音配置 可以设置混音的播放次数、是否本地播放混音、以及是否将混音发送至远端,详见 AudioMixingConfig。 |
注意
virtual void bytertc::IAudioMixingManager::stopAudioMixing(int mix_id)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer or IAudioEffectPlayer instead
停止播放音频文件及混音。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
注意
virtual void bytertc::IAudioMixingManager::pauseAudioMixing(int mix_id)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer or IAudioEffectPlayer instead
暂停播放音频文件及混音。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
注意
virtual void bytertc::IAudioMixingManager::resumeAudioMixing(int mix_id)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer or IAudioEffectPlayer instead
恢复播放音频文件及混音。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
注意
virtual void bytertc::IAudioMixingManager::preloadAudioMixing(
int mix_id,
const char* file_path
)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer or IAudioEffectPlayer instead
预加载指定音乐文件到内存中,以避免频繁播放同一文件时的重复加载,减少 CPU 占用。
传入参数
| 参数名 | 类型 | 说明 | ||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| mix_id | int | 混音 ID。用于标识混音,请保证混音 ID 唯一性。 如果使用相同的 ID 重复调用本方法,后一次会覆盖前一次。 如果先调用 startAudioMixing,再使用相同的 ID 调用本方法 ,会先回调 onAudioMixingStateChanged 通知上一个混音停止,然后加载后一个混音。 调用本方法预加载 A.mp3 后,如果需要使用相同的 ID 调用 startAudioMixing 播放 B.mp3,请先调用 unloadAudioMixing 卸载 A.mp3。 | ||||||||||||||||||||||||||||||||||||||||
| file_path | const char * | 混音文件路径。仅支持本地文件的绝对路径。预加载的文件长度不得超过 20s。 不同平台支持的音频文件格式:
|
注意
virtual void bytertc::IAudioMixingManager::unloadAudioMixing(int mix_id)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer or IAudioEffectPlayer instead
卸载指定音乐文件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
注意
不论音乐文件是否播放,调用本方法卸载该文件后,SDK 会回调通知混音已停止,见 onAudioMixingStateChanged。
virtual int bytertc::IAudioMixingManager::getAudioMixingDuration(int mix_id)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer or IAudioEffectPlayer instead
获取音频文件时长。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
返回值
注意
调用本方法获取音乐文件时长前,需要先调用 preloadAudioMixing 或 startAudioMixing。
virtual int bytertc::IAudioMixingManager::getAudioMixingCurrentPosition(int mix_id)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer or IAudioEffectPlayer instead
获取音频文件播放进度。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
返回值
注意
调用本方法获取音乐文件播放进度前,需要先调用 startAudioMixing 开始播放音乐文件。
virtual void bytertc::IAudioMixingManager::setAudioMixingPosition(
int mix_id,
int position
)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer or IAudioEffectPlayer instead
设置音频文件的起始播放位置
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
| position | int | 音频文件起始播放位置,单位为毫秒。 你可以通过 getAudioMixingDuration 获取音频文件总时长,position 的值应小于音频文件总时长。 |
注意
在播放在线文件时,调用此接口可能造成播放延迟的现象。
virtual void bytertc::IAudioMixingManager::setAudioMixingDualMonoMode(
int mix_id,
AudioMixingDualMonoMode mode
)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer instead
设置当前音频文件的声道模式
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
| mode | AudioMixingDualMonoMode | 声道模式。默认的声道模式和源文件一致,详见 AudioMixingDualMonoMode。 |
注意
virtual void bytertc::IAudioMixingManager::setAudioMixingPitch(
int mix_id,
int pitch
)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer or IAudioEffectPlayer instead
开启本地播放音乐文件变调功能,多用于 K 歌场景。
使用该方法,你可以对本地播放音乐文件的音调进行升调或降调等调整。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
| pitch | int | 相对于音乐文件原始音调的升高/降低值,取值范围[-12,12],默认值为 0,即不做调整。 取值范围内每相邻两个值的音高距离相差半音,正值表示升调,负值表示降调,设置的绝对值越大表示音调升高或降低越多。 超出取值范围则设置失败,并且会触发 onAudioMixingStateChanged 回调,提示 AudioMixingState 状态为 AUDIO_MIXING_STATE_FAILED 混音播放失败, AudioMixingError 错误码为 AUDIO_MIXING_ERROR_ID_TYPE_INVALID_PITCH 设置混音文件音调不合法。 |
注意
本方法需要在调用 startAudioMixing 开始播放音频文件后、调用 stopAudioMixing 停止播放音频文件前使用,否则会触发 onAudioMixingStateChanged 回调报错
virtual int bytertc::IAudioMixingManager::setAudioMixingPlaybackSpeed(
int mix_id,
int speed
)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer or IAudioEffectPlayer instead
设置混音时音频文件的播放速度
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
| speed | int | 播放速度与原始文件速度的比例,单位:%,取值范围为 [50,200],默认值为 100。 超出取值范围则设置失败,你会收到 onAudioMixingStateChanged 回调,提示 AudioMixingState 状态为 kAudioMixingStateFailed 混音播放失败, AudioMixingError 错误码为 kAudioMixingErrorInValidPlaybackSpeed 设置混音文件的播放速度不合法。 |
注意
kAudioMixingStatePlaying, AudioMixingError 错误码为 kAudioMixingErrorOk 之后调用该方法。kAudioMixingStateFailed 错误码为 kAudioMixingErrorIdNotFound 的 onAudioMixingStateChanged 回调。virtual void bytertc::IAudioMixingManager::setAudioMixingProgressInterval(
int mix_id,
int64_t interval
)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer instead
设置混音时音频文件播放进度回调的间隔
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID 可以通过多次调用本接口传入不同的 ID 对多个 ID 进行间隔设置。 |
| interval | int64_t | 音频文件播放进度回调的时间间隔,单位毫秒。
|
注意
本方法需要在调用 startAudioMixing 开始播放音频文件后、调用 stopAudioMixing 停止播放音频文件前使用,否则会触发 onAudioMixingStateChanged 回调报错。
若想在音乐文件开始播放前设置播放进度回调间隔,你需调用 startAudioMixing 在 AudioMixingConfig 中设置时间间隔,开始播放后可以通过此接口更新回调间隔。
virtual void bytertc::IAudioMixingManager::setAudioMixingLoudness(
int mix_id,
float loudness
)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer instead
如果你需要使用 enableVocalInstrumentBalance 对混音音频文件/PCM 音频数据进行音量调整,你必须通过此接口传入其原始响度。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
| loudness | float | 原始响度,单位:lufs,取值范围为 [-70.0, 0.0]。 当设置的值小于 -70.0lufs 时,则默认调整为 -70.0lufs,大于 0.0lufs 时,则不对该响度做音均衡处理。默认值为 1.0lufs,即不做处理。 |
注意
建议在 startAudioMixing 开始播放音频文件之前调用该接口,以免播放过程中的音量突变导致听感体验下降。
virtual void bytertc::IAudioMixingManager::enableAudioMixingFrame(
int mix_id,
AudioMixingType type
)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer instead
启动 PCM 音频数据混音。
要实现多个 PCM 音频数据混音,多次调用本方法,并传入不同的 mix_id。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID,用于标识混音,保证混音 ID 唯一性。 如果使用相同的 ID 重复调用本方法后,前一次混音会停止,后一次混音开始,会收到 onAudioMixingStateChanged 通知前一次混音已停止。 |
| type | AudioMixingType | 混音播放类型 是否本地播放、以及是否发送到远端,详见 AudioMixingType。 |
注意
virtual void bytertc::IAudioMixingManager::disableAudioMixingFrame(int mix_id)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer instead
关闭 PCM 混音
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID。 |
virtual int bytertc::IAudioMixingManager::pushAudioMixingFrame(
int mix_id,
IAudioFrame* audio_frame
)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer instead
推送 PCM 音频帧数据用于混音
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID。 |
| audio_frame | IAudioFrame * | 音频帧,详见 IAudioFrame。 |
返回值
注意
virtual int bytertc::IAudioMixingManager::getAudioTrackCount(int mix_id)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer instead
获取当前音频文件的音轨索引
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
返回值
方法调用结果
注意
virtual void bytertc::IAudioMixingManager::selectAudioTrack(
int mix_id,
int audio_track_index
)=0
cppDeprecated since 353.1, will be deleted in 359, use IMediaPlayer instead
指定当前音频文件的播放音轨
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mix_id | int | 混音 ID |
| audio_track_index | int | 指定的播放音轨 设置的参数值需要小于或等于 getAudioTrackCount 的返回值 |
注意
class bytertc::IRTCVideo
cpp引擎 API
virtual int bytertc::IRTCVideo::muteAudioCapture(
StreamIndex index,
bool mute
)=0
cppAvailable since 3.58.1
设置是否将采集到的音频信号静音,而不影响改变本端硬件采集状态。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | StreamIndex | 流索引,指定调节主流/屏幕流音量,参看 StreamIndex。 |
| mute | bool | 是否静音采集信号。
|
返回值
注意
virtual int bytertc::IRTCVideo::setCaptureVolume(
StreamIndex index,
int volume
)=0
cpp调节音频采集音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | StreamIndex | 流索引,指定调节主流还是调节屏幕流的音量,参看 StreamIndex |
| volume | int | 采集的音量值和原始音量的比值,范围是 [0, 400],单位为 %,自带溢出保护。 只改变音频数据的音量信息,不涉及本端硬件的音量调节。 为保证更好的通话质量,建议将 volume 值设为 [0,100]。
|
返回值
注意
在开启音频采集前后,你都可以使用此接口设定采集音量。
virtual int bytertc::IRTCVideo::setPlaybackVolume(const int volume)=0
cpp调节本地播放的所有远端用户音频混音后的音量,混音内容包括远端人声、音乐、音效等。
播放音频前或播放音频时,你都可以使用此接口设定播放音量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | const int | 音频播放音量值和原始音量的比值,范围是 [0, 400],单位为 %,自带溢出保护。 只改变音频数据的音量信息,不涉及本端硬件的音量调节。 为保证更好的通话质量,建议将 volume 值设为 [0,100]。
|
返回值
注意
假设某远端用户 A 始终在被调节的目标用户范围内,当该方法与 setRemoteAudioPlaybackVolume 或 setRemoteRoomAudioPlaybackVolume 共同使用时,本地收听用户 A 的音量将为两次设置的音量效果的叠加。
virtual int bytertc::IRTCVideo::startAudioCapture()=0
cpp开启内部音频采集。默认为关闭状态。
内部采集是指:使用 RTC SDK 内置的音频采集机制进行音频采集。
调用该方法开启后,本地用户会收到 onAudioDeviceStateChanged 的回调。
非隐身用户进房后调用该方法,房间中的其他用户会收到 onUserStartAudioCapture 的回调。
返回值
注意
MediaDeviceError.kMediaDeviceErrorDeviceNoPermission = 1。virtual int bytertc::IRTCVideo::stopAudioCapture()=0
cpp立即关闭内部音频采集。默认为关闭状态。
内部采集是指:使用 RTC SDK 内置的音频采集机制进行音频采集。
调用该方法,本地用户会收到 onAudioDeviceStateChanged 的回调。
非隐身用户进房后调用该方法后,房间中的其他用户会收到 onUserStopAudioCapture 的回调。
返回值
注意
virtual int bytertc::IRTCVideo::setAudioProfile(AudioProfileType audio_profile)=0
cpp设置音质档位。
当所选的 RoomProfileType 中的音频参数无法满足你的场景需求时,调用本接口切换的音质档位。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_profile | AudioProfileType | 音质档位,参看 AudioProfileType |
返回值
注意
virtual int bytertc::IRTCVideo::setAnsMode(AnsMode ans_mode)=0
cpp支持根据业务场景,设置通话中的音频降噪模式。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| ans_mode | AnsMode | 降噪模式。具体参见 AnsMode。 |
返回值
注意
virtual int bytertc::IRTCVideo::enableAGC(bool enable)=0
cppAvailable since 3.51
打开/关闭 AGC(Automatic Gain Control) 自动增益控制功能。
开启该功能后,SDK 会自动调节麦克风的采集音量,确保音量稳定。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | bool | 是否打开 AGC 功能:
|
返回值
注意
该方法在进房前后均可调用。如果你需要在进房前使用 AGC 功能,请联系技术支持获得私有参数,传入对应 RoomProfileType。
要想在进房后开启 AGC 功能,你需要把 RoomProfileType 设置为 kRoomProfileTypeMeeting 、kRoomProfileTypeMeetingRoom 或 kRoomProfileTypeClassroom 。
AGC 功能生效后,不建议再调用 setAudioCaptureDeviceVolume 来调节设备麦克风的采集音量。
virtual int bytertc::IRTCVideo::startVideoCapture()=0
cpp立即开启内部视频采集。默认为关闭状态。
内部视频采集指:使用 RTC SDK 内置视频采集模块,进行采集。
调用该方法后,本地用户会收到 onVideoDeviceStateChanged 的回调。
本地用户在非隐身状态下调用该方法后,房间中的其他用户会收到 onUserStartVideoCapture 的回调。
返回值
注意
virtual int bytertc::IRTCVideo::stopVideoCapture()=0
cpp立即关闭内部视频采集。默认为关闭状态。
内部视频采集指:使用 RTC SDK 内置视频采集模块,进行采集。
调用该方法后,本地用户会收到 onVideoDeviceStateChanged 的回调。
非隐身用户进房后调用该方法,房间中的其他用户会收到 onUserStopVideoCapture 的回调。
返回值
注意
virtual int bytertc::IRTCVideo::setVideoCaptureConfig(const VideoCaptureConfig &video_capture_config)=0
cpp设置 RTC SDK 内部采集时的视频采集参数。
如果你的项目使用了 SDK 内部采集模块,可以通过本接口指定视频采集参数,包括模式、分辨率、帧率。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| video_capture_config | const VideoCaptureConfig & | 视频采集参数。参看: VideoCaptureConfig。 |
返回值
注意
virtual int bytertc::IRTCVideo::setVideoCaptureRotation(VideoRotation rotation)=0
cpp设置本端采集的视频帧的旋转角度。
当摄像头倒置或者倾斜安装时,可调用本接口进行调整。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| rotation | VideoRotation | 相机朝向角度,默认为 VIDEO_ROTATION_0(0),无旋转角度。详见 VideoRotation。 |
返回值
注意
virtual int bytertc::IRTCVideo::enableSimulcastMode(bool enabled)=0
cpp该方法设置视频流发布端是否开启发布多路编码参数不同的视频流的模式。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enabled | bool | 是否开启推送多路视频流模式:
|
返回值
注意
virtual int bytertc::IRTCVideo::setVideoEncoderConfig(const VideoEncoderConfig &max_solution)=0
cpp视频发布端设置期望发布的最大分辨率视频流参数,包括分辨率、帧率、码率、网络不佳时的回退策略等。
该接口支持设置一路视频流参数,设置多路参数请使用重载 API:setVideoEncoderConfig。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| max_solution | const VideoEncoderConfig & | 期望发布的最大分辨率视频流参数。参看 VideoEncoderConfig。 |
返回值
方法调用结果:
注意
virtual int bytertc::IRTCVideo::setVideoEncoderConfig(
const VideoEncoderConfig* channel_solutions,
int solution_num
)=0
cpp视频发布端设置推送多路流时各路流的参数,包括分辨率、帧率、码率、网络不佳时的回退策略等。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| channel_solutions | const VideoEncoderConfig * | 要推送的多路视频流的参数需注意,所设置的分辨率是各路流的最大分辨率。参看 VideoEncoderConfig。 |
| solution_num | int | 视频参数数组长度,最多支持设置 3 路参数,超过 3 路时默认取前 3 路的值。当设置了多路参数时,分辨率和帧率必须是从大到小排列。需注意,所设置的分辨率是各路流的最大分辨率。 |
返回值
方法调用结果:
注意
virtual int bytertc::IRTCVideo::setScreenVideoEncoderConfig(const ScreenVideoEncoderConfig &screen_solution)=0
cpp为发布的屏幕共享视频流设置期望的编码参数,包括分辨率、帧率、码率、网络不佳时的回退策略等。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| screen_solution | const ScreenVideoEncoderConfig & | 屏幕共享视频流参数。参看 ScreenVideoEncoderConfig。 |
返回值
0:成功。
!0:失败。
注意
建议在采集视频前设置编码参数。若采集前未设置编码参数,则使用默认编码参数: 分辨率 1920px × 1080px,帧率 15fps。
virtual int bytertc::IRTCVideo::disableAlphaChannelVideoEncode(StreamIndex streamIndex)=0
cppAvailable since 3.58
关闭外部采集视频帧的 Alpha 通道编码功能。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamIndex | StreamIndex | 需关闭该功能的视频流类型,当前仅支持设置为 StreamIndex.kStreamIndexMain 即主流。 |
返回值
方法调用结果:
注意
该接口须在停止发布视频流之后调用。
virtual int bytertc::IRTCVideo::setLocalVideoCanvas(
StreamIndex index,
const VideoCanvas &canvas
)=0
cpp设置本地视频渲染时使用的视图,并设置渲染模式。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | StreamIndex | 视频流属性, 参看 StreamIndex |
| canvas | const VideoCanvas & | 视图信息和渲染模式,参看: VideoCanvas |
返回值
注意
virtual int bytertc::IRTCVideo::updateLocalVideoCanvas(
StreamIndex index,
const enum RenderMode render_mode,
const uint32_t background_color
)=0
cpp修改本地视频渲染模式和背景色。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | StreamIndex | 视频流属性, 参看 StreamIndex |
| render_mode | const enum RenderMode | 渲染模式,参看 RenderMode |
| background_color | const uint32_t | 背景颜色,参看 VideoCanvas.background_color |
返回值
注意
你可以在本地视频渲染过程中,调用此接口。调用结果会实时生效。
virtual int bytertc::IRTCVideo::setRemoteVideoCanvas(
RemoteStreamKey stream_key,
const VideoCanvas &canvas
)=0
cpp设置渲染指定视频流 stream_key 时,使用的视图和渲染模式。
如果需要解除某个用户的绑定视图,你可以把 canvas 设置为空。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_key | RemoteStreamKey | 参看 RemoteStreamKey |
| canvas | const VideoCanvas & | 视图信息和渲染模式,参看: VideoCanvas |
返回值
注意
本地用户离开房间时,会解除调用此 API 建立的绑定关系;远端用户离开房间则不会影响。
virtual int bytertc::IRTCVideo::setLocalVideoRender(
StreamIndex index,
IVideoSink* video_sink,
LocalVideoSinkConfig &render_config
)=0
cppAvailable since 3.57
将本地视频流与自定义渲染器绑定。你可以通过参数设置返回指定位置和格式的视频帧数据。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | StreamIndex | 视频流属性。采集的视频流/屏幕视频流,参看 StreamIndex。 |
| video_sink | IVideoSink * | 自定义视频渲染器,参看 IVideoSink。 |
| render_config | LocalVideoSinkConfig & | 本地视频帧回调配置,参看 LocalVideoSinkConfig。 |
返回值
注意
virtual int bytertc::IRTCVideo::setRemoteVideoRender(
RemoteStreamKey stream_key,
IVideoSink* video_sink,
RemoteVideoSinkConfig &config
)=0
cppAvailable since 3.57
将远端视频流与自定义渲染器绑定。你可以通过参数设置返回指定位置和格式的视频帧数据。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_key | RemoteStreamKey | 远端流信息,用于指定需要渲染的视频流来源及属性,参看 RemoteStreamKey。 |
| video_sink | IVideoSink * | 自定义视频渲染器,参看 IVideoSink。 |
| config | RemoteVideoSinkConfig & | 远端视频帧回调配置,参看 RemoteVideoSinkConfig。 |
返回值
注意
virtual int bytertc::IRTCVideo::pushScreenVideoFrame(IVideoFrame* frame)=0
cpp推送屏幕视频帧
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | IVideoFrame * | 设置屏幕视频帧,详见: IVideoFrame。 |
返回值
方法调用结果:
注意
virtual int bytertc::IRTCVideo::updateScreenCaptureRegion(const Rectangle ®ion_rect)=0
cpp通过 RTC SDK 提供的采集模块采集屏幕视频流时,更新采集区域。仅用于采集源为显示器屏幕时。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| region_rect | const Rectangle & | 采集区域。参见 Rectangle 此参数描述了调用此接口后的采集区域,和 startScreenVideoCapture 中 source_info 设定区域的相对关系。 |
返回值
注意
调用此接口前,必须已通过调用 startScreenVideoCapture 开启了内部屏幕流采集。
virtual int bytertc::IRTCVideo::startScreenVideoCapture(
const ScreenCaptureSourceInfo &source_info,
const ScreenCaptureParameters &capture_params
)=0
cpp采集屏幕视频流,用于共享。屏幕视频流包括:屏幕上显示的内容,应用窗口中显示的内容,或虚拟屏幕中显示的内容。
其中,虚拟屏幕中显示的内容仅在 Windows 平台上支持。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| source_info | const ScreenCaptureSourceInfo & | 待共享的屏幕源,参看 ScreenCaptureSourceInfo。 你可以调用 getScreenCaptureSourceList 获得所有可以共享的屏幕源。 |
| capture_params | const ScreenCaptureParameters & | 共享参数。参看 ScreenCaptureParameters。 |
返回值
注意
virtual int bytertc::IRTCVideo::stopScreenVideoCapture()=0
cpp停止屏幕视频流采集。
返回值
注意
virtual int bytertc::IRTCVideo::updateScreenCaptureHighlightConfig(const HighlightConfig &highlight_config)=0
cpp通过 RTC SDK 提供的采集模块采集屏幕视频流时,更新边框高亮设置。默认展示表框。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| highlight_config | const HighlightConfig & | 边框高亮设置。参见 HighlightConfig |
返回值
注意
virtual int bytertc::IRTCVideo::updateScreenCaptureMouseCursor(MouseCursorCaptureState capture_mouse_cursor)=0
cpp通过 RTC SDK 提供的采集模块采集屏幕视频流时,更新对鼠标的处理设置。默认采集鼠标。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| capture_mouse_cursor | MouseCursorCaptureState | 参看 MouseCursorCaptureState |
返回值
注意
调用此接口前,必须已通过调用 startScreenVideoCapture 开启了内部屏幕流采集。
virtual IScreenCaptureSourceList * bytertc::IRTCVideo::getScreenCaptureSourceList()=0
cpp获取共享对象列表。
返回值
共享对象列表,包括应用窗口和屏幕。详见 IScreenCaptureSourceList。用户选择后,可调用 startScreenVideoCapture 进行共享。
注意
virtual IVideoFrame * bytertc::IRTCVideo::getThumbnail(
ScreenCaptureSourceType type,
view_t source_id,
int max_width,
int max_height
)=0
cpp获取共享对象缩略图
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | ScreenCaptureSourceType | 屏幕采集对象的类型。详见 ScreenCaptureSourceType。 |
| source_id | view_t | 屏幕共享对象的 ID,可通过 getScreenCaptureSourceList 枚举共享对象列表中获取。详见 view_t。 |
| max_width | int | 最大宽度。保持采集对象本身的宽高比不变,将缩略图缩放到指定范围内的最大宽高。如果给出的尺寸与共享对象比例不同,得到的缩略图会有黑边。 |
| max_height | int | 最大高度。参见 max_width 的说明。 |
返回值
共享对象缩略图,详见 IVideoFrame。
注意
对 Linux 系统,采用 X11 协议时可用;采用 Wayland 协议时不可用。
virtual IVideoFrame * bytertc::IRTCVideo::getWindowAppIcon(
view_t source_id,
int max_width=100,
int max_height=100
)=0
cpp获取应用窗体所属应用的图标。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| source_id | view_t | 屏幕共享对象的 ID,可通过 getScreenCaptureSourceList 枚举共享对象列表中获取。详见 view_t。 |
| max_width | int | 最大宽度。返回的图标将是宽高相等的,输入宽高不等时,取二者较小值。宽高范围为 [32,256],超出该范围将返回 nullptr,默认输出 100 x 100 的图像。 |
| max_height | int | 最大高度。参见 max_width 的说明。 |
返回值
详见 IVideoFrame。当屏幕共享对象为应用窗体,且有图标时有效,否则返回 nullptr。
注意
对 Linux 系统,采用 X11 协议时可用;采用 Wayland 协议时不可用。
virtual int bytertc::IRTCVideo::setVideoSourceType(
StreamIndex stream_index,
VideoSourceType type
)=0
cpp设置向 SDK 输入的视频源,包括屏幕流
默认使用内部采集。内部采集指:使用 RTC SDK 内置的视频采集机制进行视频采集。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_index | StreamIndex | 视频流的属性,参看 StreamIndex |
| type | VideoSourceType | 视频输入源类型,参看 VideoSourceType |
返回值
注意
virtual int bytertc::IRTCVideo::pushExternalVideoFrame(IVideoFrame* frame)=0
cpp推送外部视频帧。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | IVideoFrame * | 设置视频帧,参看 IVideoFrame。 |
返回值
方法调用结果:
注意
virtual IRTCRoom * bytertc::IRTCVideo::createRTCRoom(const char* room_id)=0
cpp创建房间实例。
调用此方法仅返回一个房间实例,你仍需调用 joinRoom 才能真正地创建/加入房间。
多次调用此方法以创建多个 IRTCRoom 实例。分别调用各 IRTCRoom 实例中的 joinRoom 方法,同时加入多个房间。
多房间模式下,用户可以同时订阅各房间的音视频流。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| room_id | const char * | 标识通话房间的房间 ID。该字符串符合正则表达式:[a-zA-Z0-9_@-.]{1,128}。 |
返回值
创建的 IRTCRoom 房间实例。
注意
virtual int bytertc::IRTCVideo::setPublishFallbackOption(PublishFallbackOption option)=0
cpp设置发布的音视频流的回退选项。
你可以调用该接口设置网络不佳或设备性能不足时从大流起进行降级处理,以保证通话质量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| option | PublishFallbackOption | 本地发布的音视频流回退选项,参看 PublishFallbackOption。 |
返回值
注意
virtual int bytertc::IRTCVideo::setSubscribeFallbackOption(SubscribeFallbackOption option)=0
cpp设置订阅的音视频流的回退选项。
你可调用该接口设置网络不佳或设备性能不足时允许订阅流进行降级或只订阅音频流,以保证通话流畅。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| option | SubscribeFallbackOption | 订阅的音视频流回退选项,参看 SubscribeFallbackOption。 |
返回值
注意
virtual int bytertc::IRTCVideo::setRemoteUserPriority(
const char* room_id,
const char* user_id,
RemoteUserPriority priority
)=0
cpp设置用户优先级。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| room_id | const char * | 房间 ID |
| user_id | const char * | 远端用户的 ID |
| priority | RemoteUserPriority | 远端用户的需求优先级,详见枚举类型 RemoteUserPriority |
返回值
0: 方法调用成功
注意
virtual int bytertc::IRTCVideo::setBusinessId(const char* business_id)=0
cpp设置业务标识参数
可通过 businessId 区分不同的业务场景。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能,但不需要鉴权。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| business_id | const char * | 用户设置的自己的 businessId 值 businessId 只是一个标签,颗粒度需要用户自定义。 |
返回值
注意
virtual int bytertc::IRTCVideo::setRemoteVideoMirrorType(
RemoteStreamKey stream_key,
RemoteMirrorType mirror_type
)=0
cppAvailable since 3.57
使用内部渲染时,为远端流开启镜像。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_key | RemoteStreamKey | 远端流信息,用于指定需要镜像的视频流来源及属性,参看 RemoteStreamKey。 |
| mirror_type | RemoteMirrorType | 远端流的镜像类型,参看 RemoteMirrorType。 |
返回值
virtual IVideoEffect * bytertc::IRTCVideo::getVideoEffectInterface()=0
cpp获取视频特效接口。
返回值
视频特效接口,参看 IVideoEffect。
virtual int bytertc::IRTCVideo::setEncryptInfo(
EncryptType encrypt_type,
const char* key,
int key_size
)=0
cpp设置传输时使用内置加密的方式。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| encrypt_type | EncryptType | 内置加密算法,详见 EncryptType |
| key | const char * | 加密密钥,长度限制为 36 位,超出部分将会被截断 |
| key_size | int | 参数 key 的长度 |
返回值
注意
virtual int bytertc::IRTCVideo::setCustomizeEncryptHandler(IEncryptHandler* handler)=0
cpp设置自定义加密和解密方式。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handler | IEncryptHandler * | 自定义加密 handler,需要实现 handler 的加密和解密方法。参看 IEncryptHandler。 |
返回值
注意
virtual int bytertc::IRTCVideo::enableAudioFrameCallback(
AudioFrameCallbackMethod method,
AudioFormat format
)=0
cpp设置并开启指定的音频数据帧回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| method | AudioFrameCallbackMethod | 音频回调方法,参看 AudioFrameCallbackMethod。 当音频回调方法设置为 kRecord、kPlayback、kMixed、kRecordScreen时,你需要在参数 format 中指定准确的采样率和声道,暂不支持设置为自动。当音频回调方法设置为 kRemoteUser时,将 format 中的各个字段设置为默认值。 |
| format | AudioFormat | 音频参数格式,参看 AudioFormat。 |
返回值
注意
开启音频回调并调用 registerAudioFrameObserver 后, IAudioFrameObserver 会收到对应的音频回调。两者调用顺序没有限制且相互独立。
virtual int bytertc::IRTCVideo::disableAudioFrameCallback(AudioFrameCallbackMethod method)=0
cpp关闭音频回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| method | AudioFrameCallbackMethod | 音频回调方法,参看 AudioFrameCallbackMethod。 |
返回值
注意
该方法需要在调用 enableAudioFrameCallback 之后调用。
virtual int bytertc::IRTCVideo::registerAudioFrameObserver(IAudioFrameObserver* observer)=0
cpp注册音频数据回调观察者。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| observer | IAudioFrameObserver * | 音频数据观察者,参看 IAudioFrameObserver。如果传入 null,则取消注册。 |
返回值
注意
注册音频数据回调观察者并调用 enableAudioFrameCallback 后, IAudioFrameObserver 会收到对应的音频回调。对回调中收到的音频数据进行处理,不会影响 RTC 的编码发送或渲染。
virtual int bytertc::IRTCVideo::registerAudioProcessor(IAudioFrameProcessor* processor)=0
cpp注册自定义音频处理器。
注册完成后,你可以调用 enableAudioProcessor,对本地采集到的音频进行处理,RTC SDK 将对处理后的音频进行编码和发送。也可以对接收到的远端音频进行自定义处理,RTC SDK 将对处理后的音频进行渲染。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| processor | IAudioFrameProcessor * | 自定义音频处理器,详见 IAudioFrameProcessor。 SDK 只持有 processor 的弱引用,你应保证其生命周期。需要取消注册时,设置此参数为 nullptr。 |
返回值
注意
virtual int bytertc::IRTCVideo::enableAudioProcessor(
AudioProcessorMethod method,
AudioFormat format
)=0
cpp设置并开启指定的音频帧回调,进行自定义处理。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| method | AudioProcessorMethod | 音频帧类型,参看 AudioProcessorMethod。可多次调用此接口,处理不同类型的音频帧。 选择不同类型的音频帧将收到对应的回调:
|
| format | AudioFormat | 设定自定义处理时获取的音频帧格式,参看 AudioFormat。 |
返回值
注意
virtual int bytertc::IRTCVideo::disableAudioProcessor(AudioProcessorMethod method)=0
cpp关闭自定义音频处理。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| method | AudioProcessorMethod | 音频帧类型,参看 AudioProcessorMethod。 |
返回值
virtual int bytertc::IRTCVideo::registerLocalVideoProcessor(
IVideoProcessor* processor,
VideoPreprocessorConfig config
)=0
cpp设置自定义视频前处理器。
使用这个视频前处理器,你可以调用 processVideoFrame 对 RTC SDK 采集得到的视频帧进行前处理,并将处理后的视频帧用于 RTC 音视频通信。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| processor | IVideoProcessor * | 自定义视频处理器,详见 IVideoProcessor。如果传入 null,则不对 RTC SDK 采集得到的视频帧进行前处理。 SDK 只持有 processor 的弱引用,你应保证其生命周期。 |
| config | VideoPreprocessorConfig | 自定义视频前处理器适用的设置,详见 VideoPreprocessorConfig。 当前, config 中的 required_pixel_format 仅支持:kVideoPixelFormatI420 和 kVideoPixelFormatUnknown:
|
返回值
注意
kVideoPixelFormatI420config 中的 required_pixel_format 设置为 kVideoPixelFormatI420,可以通过避免格式转换带来一些性能优化。virtual int bytertc::IRTCVideo::setVideoDigitalZoomConfig(
ZoomConfigType type,
float size
)=0
cppAvailable since 3.51
设置本地摄像头数码变焦参数,包括缩放倍数,移动步长。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | ZoomConfigType | 数码变焦参数类型,缩放系数或移动步长。参看 ZoomConfigType。必填。 |
| size | float | 缩放系数或移动步长,保留到小数点后三位。默认值为 0。必填。 选择不同 type 时有不同的取值范围。当计算后的结果超过缩放和移动边界时,取临界值。
|
返回值
注意
0 ,在调用 setVideoDigitalZoomControl 或 startVideoDigitalZoomControl 进行数码变焦操作前,应先调用本接口。virtual int bytertc::IRTCVideo::setVideoDigitalZoomControl(ZoomDirectionType direction)=0
cppAvailable since 3.51
控制本地摄像头数码变焦,缩放或移动一次。设置对本地预览画面和发布到远端的视频都生效。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| direction | ZoomDirectionType | 数码变焦操作类型,参看 ZoomDirectionType。 |
返回值
注意
0,调用该方法前需通过 setVideoDigitalZoomConfig 设置参数。setCameraZoomRatio。virtual int bytertc::IRTCVideo::startVideoDigitalZoomControl(ZoomDirectionType direction)=0
cppAvailable since 3.51
开启本地摄像头持续数码变焦,缩放或移动。设置对本地预览画面和发布到远端的视频都生效。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| direction | ZoomDirectionType | 数码变焦操作类型,参看 ZoomDirectionType。 |
返回值
注意
0,调用该方法前需通过 setVideoDigitalZoomConfig 设置参数。setCameraZoomRatio。virtual int bytertc::IRTCVideo::stopVideoDigitalZoomControl()=0
cppAvailable since 3.51
停止本地摄像头持续数码变焦。
返回值
注意
关于开始数码变焦,参看 startVideoDigitalZoomControl。
virtual int bytertc::IRTCVideo::sendSEIMessage(
StreamIndex stream_index,
const uint8_t* message,
int length,
int repeat_count,
SEICountPerFrame mode
)=0
cpp通过视频帧发送 SEI 数据。
在视频通话场景下,SEI 数据会随视频帧发送;在语音通话场景下,SDK 会自动生成一路 16px × 16px 的黑帧视频流用来发送 SEI 数据。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_index | StreamIndex | 指定携带 SEI 数据的媒体流类型,参看 StreamIndex。 语音通话场景下,该值需设为 kStreamIndexMain,否则 SEI 数据会被丢弃从而无法送达远端。 |
| message | const uint8_t * | SEI 消息。 |
| length | int | SEI 消息长度,建议每帧 SEI 数据总长度长度不超过 4 KB。 |
| repeat_count | int | 消息发送重复次数。取值范围是 [0, max{29, %{视频帧率}-1}]。推荐范围 [2,4]。 调用此接口后,SEI 数据会添加到从当前视频帧开始的连续 repeat_count+1 个视频帧中。 |
| mode | SEICountPerFrame | SEI 发送模式,参看 SEICountPerFrame。 |
返回值
注意
virtual IVideoDeviceManager * bytertc::IRTCVideo::getVideoDeviceManager()=0
cpp创建视频设备管理实例
返回值
视频设备管理实例,详见 IVideoDeviceManager
virtual IAudioDeviceManager * bytertc::IRTCVideo::getAudioDeviceManager()=0
cpp设备音频管理接口创建
返回值
音频设备管理接口
virtual int bytertc::IRTCVideo::startFileRecording(
StreamIndex type,
RecordingConfig config,
RecordingType recording_type
)=0
cpp录制通话过程中的音视频数据到本地的文件中。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | StreamIndex | 流属性,指定录制主流还是屏幕流,参看 StreamIndex |
| config | RecordingConfig | 本地录制参数配置,参看 RecordingConfig |
| recording_type | RecordingType | 本地录制的媒体类型,参看 RecordingType |
返回值
注意
virtual int bytertc::IRTCVideo::stopFileRecording(StreamIndex type)=0
cpp停止本地录制
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | StreamIndex | 流属性,指定停止主流或者屏幕流录制,参看 StreamIndex |
返回值
注意
virtual int bytertc::IRTCVideo::startAudioRecording(AudioRecordingConfig &config)=0
cpp开启录制语音通话,生成本地文件。
在进房前后开启录制,如果未打开麦克风采集,录制任务正常进行,只是不会将数据写入生成的本地文件;只有调用 startAudioCapture 接口打开麦克风采集后,才会将录制数据写入本地文件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| config | AudioRecordingConfig & | 参看 AudioRecordingConfig |
返回值
注意
virtual int bytertc::IRTCVideo::stopAudioRecording()=0
cpp停止音频文件录制
返回值
注意
调用 startAudioRecording 开启本地录制。
virtual int bytertc::IRTCVideo::enableExternalSoundCard(bool enable)=0
cpp启用匹配外置声卡的音频处理模式
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | bool |
|
返回值
注意
virtual int bytertc::IRTCVideo::setRuntimeParameters(const char* json_string)=0
cpp设置运行时的参数
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| json_string | const char * | json 序列化之后的字符串 |
返回值
注意
该接口需在 joinRoom 和 startAudioCapture 之前调用。
virtual int bytertc::IRTCVideo::feedback(
uint64_t type,
const ProblemFeedbackInfo* info
)=0
cpp将用户反馈的问题上报到 RTC。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | uint64_t | 预设问题列表,参看 ProblemFeedbackOption |
| info | const ProblemFeedbackInfo * | 预设问题以外的其他问题的具体描述,房间信息。 参看 ProblemFeedbackInfo |
返回值
注意
virtual IAudioEffectPlayer * bytertc::IRTCVideo::getAudioEffectPlayer()=0
cppAvailable since 3.53
创建音效播放器实例。
返回值
音效播放器。详见 IAudioEffectPlayer。
virtual IMediaPlayer * bytertc::IRTCVideo::getMediaPlayer(int player_id)=0
cppAvailable since 3.53
创建音乐播放器实例。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| player_id | int | 音乐播放器实例 id。取值范围为 [0, 3]。最多同时存在 4 个实例,超出取值范围时返回 nullptr。 |
返回值
音乐播放器实例,详见 IMediaPlayer
virtual int bytertc::IRTCVideo::login(
const char* token,
const char* uid
)=0
cpp登陆 RTS 服务器。
必须先登录,才能调用 sendUserMessageOutsideRoom 和 sendServerMessage 发送房间外点对点消息和向应用服务器发送消息
在调用本接口登录后,如果想要登出,需要调用 logout。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | const char * | 用户登录必须携带的 Token,用于鉴权验证。 测试时可使用控制台生成临时 Token, roomId 填任意值。正式上线需要使用密钥 SDK 在你的服务端生成并下发 Token, roomId 置空,Token 有效期及生成方式参看使用 Token 完成鉴权。 |
| uid | const char * | 用户 ID 用户 ID 在 appid 的维度下是唯一的。 |
返回值
注意
本地用户调用此方法登录后,会收到 onLoginResult 回调通知登录结果,远端用户不会收到通知。
virtual int bytertc::IRTCVideo::logout()=0
cpp登出 RTS 服务器。
调用本接口登出后,无法调用房间外消息以及端到服务器消息相关的方法或收到相关回调。
返回值
注意
virtual int bytertc::IRTCVideo::updateLoginToken(const char* token)=0
cpp更新用户用于登录的 Token
Token 有一定的有效期,当 Token 过期时,需调用此方法更新登录的 Token 信息。
调用 login 方法登录时,如果使用了过期的 Token 将导致登录失败,并会收到 onLoginResult 回调通知,错误码为 kLoginErrorCodeInvalidToken。此时需要重新获取 Token,并调用此方法更新 Token。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | const char * | 更新的动态密钥 |
返回值
注意
virtual int bytertc::IRTCVideo::setServerParams(
const char* signature,
const char* url
)=0
cpp设置应用服务器参数
客户端调用 sendServerMessage 或 sendServerBinaryMessage 发送消息给应用服务器之前,必须设置有效签名和应用服务器地址。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| signature | const char * | 动态签名,应用服务器可使用该签名验证消息来源。 签名需自行定义,可传入任意非空字符串,建议将 uid 等信息编码为签名。 设置的签名会以 post 形式发送至通过本方法中 url 参数设置的应用服务器地址。 |
| url | const char * | 应用服务器的地址 |
返回值
注意
virtual int bytertc::IRTCVideo::getPeerOnlineStatus(const char* peer_user_id)=0
cpp查询对端用户或本端用户的登录状态
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| peer_user_id | const char * | 需要查询的用户 ID |
返回值
注意
virtual int64_t bytertc::IRTCVideo::sendUserMessageOutsideRoom(
const char* uid,
const char* message,
MessageConfig config=kMessageConfigReliableOrdered
)=0
cpp给房间外指定的用户发送文本消息(P2P)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char * | 消息接收用户的 ID |
| message | const char * | 发送的文本消息内容 消息不超过 64 KB。 |
| config | MessageConfig | 消息类型,参看 MessageConfig。 |
返回值
注意
virtual int64_t bytertc::IRTCVideo::sendUserBinaryMessageOutsideRoom(
const char* uid,
int length,
const uint8_t* message,
MessageConfig config=kMessageConfigReliableOrdered
)=0
cpp给房间外指定的用户发送二进制消息(P2P)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char * | 消息接收用户的 ID |
| length | int | 二进制字符串的长度 |
| message | const uint8_t * | 发送的二进制消息内容 消息不超过 46KB。 |
| config | MessageConfig | 消息类型,参看 MessageConfig。 |
返回值
注意
virtual int64_t bytertc::IRTCVideo::sendServerMessage(const char* message)=0
cpp客户端给应用服务器发送文本消息(P2Server)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| message | const char * | 发送的文本消息内容 消息不超过 64 KB。 |
返回值
注意
virtual int64_t bytertc::IRTCVideo::sendServerBinaryMessage(
int length,
const uint8_t* message
)=0
cpp客户端给应用服务器发送二进制消息(P2Server)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| length | int | 二进制字符串的长度 |
| message | const uint8_t * | 发送的二进制消息内容 消息不超过 46KB。 |
返回值
注意
virtual int bytertc::IRTCVideo::startNetworkDetection(
bool is_test_uplink,
int expected_uplink_bitrate,
bool is_test_downlink,
int expected_downlink_biterate
)=0
cpp开启通话前网络探测
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| is_test_uplink | bool | 是否探测上行带宽 |
| expected_uplink_bitrate | int | 期望上行带宽,单位:kbps 范围为 {0, [100-10000]},其中, 0 表示由 SDK 指定最高码率。 |
| is_test_downlink | bool | 是否探测下行带宽 |
| expected_downlink_biterate | int | 期望下行带宽,单位:kbps 范围为 {0, [100-10000]},其中, 0 表示由 SDK 指定最高码率。 |
返回值
注意
virtual int bytertc::IRTCVideo::stopNetworkDetection()=0
cpp停止通话前网络探测
返回值
注意
virtual int bytertc::IRTCVideo::startScreenAudioCapture()=0
cpp在屏幕共享时,开始使用 RTC SDK 内部采集方式,采集屏幕音频
返回值
注意
kAudioSourceTypeExternal 自定义采集,需先切换为 kAudioSourceTypeInternal 内部采集,否则该接口调用无效,并将触发 onAudioDeviceWarning 回调。virtual int bytertc::IRTCVideo::stopScreenAudioCapture()=0
cpp在屏幕共享时,停止使用 RTC SDK 内部采集方式,采集屏幕音频。
返回值
注意
virtual int bytertc::IRTCVideo::setAudioAlignmentProperty(
const RemoteStreamKey &stream_key,
AudioAlignmentMode mode
)=0
cpp在听众端,设置订阅的所有远端音频流精准对齐后播放。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_key | const RemoteStreamKey & | 作为对齐基准的远端音频流。参看 RemoteStreamKey。 一般选择主唱的音频流。 你必须在收到 onUserPublishStream,确认此音频流已发布后,调用此 API。 |
| mode | AudioAlignmentMode | 是否对齐,默认不对齐。参看 AudioAlignmentMode。 |
返回值
注意
kRoomProfileTypeChorus。sync_progress_to_record_frame 设置为 true。virtual int bytertc::IRTCVideo::startPushPublicStream(
const char* public_stream_id,
IPublicStreamParam* param
)=0
cpp发布一路公共流
用户可以指定房间内多个用户发布的媒体流合成一路公共流。使用同一 appID 的用户,可以调用 startPlayPublicStream 获取和播放指定的公共流。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| public_stream_id | const char * | 公共流 ID |
| param | IPublicStreamParam * | 公共流参数。详见 IPublicStreamParam。 一路公共流可以包含多路房间内的媒体流,按照指定的布局方式进行聚合。 如果指定的媒体流还未发布,则公共流将在指定流开始发布后实时更新。 |
返回值
注意
virtual int bytertc::IRTCVideo::stopPushPublicStream(const char* public_stream_id)=0
cpp停止发布当前用户发布的公共流
关于发布公共流,查看 startPushPublicStream。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| public_stream_id | const char * | 公共流 ID 指定的流必须为当前用户所发布。 |
返回值
virtual int bytertc::IRTCVideo::updatePublicStreamParam(
const char* public_stream_id,
IPublicStreamParam* param
)=0
cpp更新公共流参数
关于发布公共流,查看 startPushPublicStream。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| public_stream_id | const char * | 公共流 ID |
| param | IPublicStreamParam * | 公共流参数。详见 IPublicStreamParam。 指定的流必须为当前用户所发布的。 |
返回值
注意
调用本接口前需要通过 onPushPublicStreamResult 确认公共流是否已经成功启动。
virtual int bytertc::IRTCVideo::enableAudioPropertiesReport(const AudioPropertiesConfig &config)=0
cpp启用音频信息提示。开启提示后,你会收到 onLocalAudioPropertiesReport, onRemoteAudioPropertiesReport 和 onActiveSpeaker。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| config | const AudioPropertiesConfig & | 详见 AudioPropertiesConfig |
返回值
virtual int bytertc::IRTCVideo::setRemoteAudioPlaybackVolume(
const char* room_id,
const char* user_id,
int volume
)=0
cpp调节来自指定远端用户的音频播放音量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| room_id | const char * | 音频来源用户所在的房间 ID |
| user_id | const char * | 音频来源的远端用户 ID |
| volume | int | 音频播放音量值和原始音量的比值,范围是 [0, 400],单位为 %,自带溢出保护。为保证更好的通话质量,建议将 volume 值设为 [0,100]。 只改变音频数据的音量信息,不涉及本端硬件的音量调节。
|
返回值
方法调用结果:
注意
假设某远端用户 A 始终在被调节的目标用户范围内,
virtual int bytertc::IRTCVideo::enableVocalInstrumentBalance(bool enable)=0
cpp开启/关闭音量均衡功能。
开启音量均衡功能后,人声的响度会调整为 -16lufs。如果已调用 setAudioMixingLoudness 传入了混音音乐的原始响度,此音乐播放时,响度会调整为 -20lufs。(Linux 不支持)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | bool | 是否开启音量均衡功能:
|
返回值
注意
该接口须在调用 startAudioMixing 开始播放音频文件之前调用。
virtual int bytertc::IRTCVideo::enablePlaybackDucking(bool enable)=0
cpp打开/关闭音量闪避功能,适用于在 RTC 通话过程中会同时播放短视频或音乐的场景,如“一起看”、“在线 KTV”等。
开启该功能后,当检测到远端人声时,本地的媒体播放音量会自动减弱,从而保证远端人声的清晰可辨;当远端人声消失时,本地媒体音量会恢复到闪避前的音量水平。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | bool | 是否开启音量闪避:
|
返回值
virtual int bytertc::IRTCVideo::registerLocalEncodedVideoFrameObserver(ILocalEncodedVideoFrameObserver* observer)=0
cpp注册本地视频帧监测器。
无论使用内部采集还是自定义采集,调用该方法后,SDK 每监测到一帧本地视频帧时,都会将视频帧信息通过 onLocalEncodedVideoFrame 回调给用户
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| observer | ILocalEncodedVideoFrameObserver * | 本地视频帧监测器,参看 ILocalEncodedVideoFrameObserver。将参数设置为 nullptr 则取消注册。 |
返回值
注意
该方法可在进房前后的任意时间调用,在进房前调用可保证尽可能早地监测视频帧并触发回调
virtual int bytertc::IRTCVideo::registerRemoteEncodedVideoFrameObserver(IRemoteEncodedVideoFrameObserver* observer)=0
cpp注册远端编码后视频数据回调。
完成注册后,当 SDK 监测到远端编码后视频帧时,会触发 onRemoteEncodedVideoFrame 回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| observer | IRemoteEncodedVideoFrameObserver * | 远端编码后视频数据监测器,参看 IRemoteEncodedVideoFrameObserver |
返回值
注意
virtual int bytertc::IRTCVideo::setExternalVideoEncoderEventHandler(IExternalVideoEncoderEventHandler* encoder_handler)=0
cpp注册自定义编码帧推送事件回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| encoder_handler | IExternalVideoEncoderEventHandler * | 自定义编码帧回调类,参看 IExternalVideoEncoderEventHandler |
返回值
注意
virtual int bytertc::IRTCVideo::pushExternalEncodedVideoFrame(
StreamIndex index,
int video_index,
IEncodedVideoFrame* video_stream
)=0
cpp推送自定义编码后的视频流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | StreamIndex | 需要推送的编码流的属性,参看 StreamIndex |
| video_index | int | 对应的编码流下标,从 0 开始,如果调用 setVideoEncoderConfig 设置了多路流,此处数量须与之保持一致 |
| video_stream | IEncodedVideoFrame * | 编码流视频帧信息,参看 IEncodedVideoFrame。 |
返回值
方法调用结果:
注意
virtual int bytertc::IRTCVideo::setVideoDecoderConfig(
RemoteStreamKey key,
VideoDecoderConfig config
)=0
cpp在订阅远端视频流之前,设置远端视频数据解码方式
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| key | RemoteStreamKey | 远端流信息,即对哪一路视频流进行解码方式设置,参看 RemoteStreamKey。 |
| config | VideoDecoderConfig | 视频解码方式,参看 VideoDecoderConfig。 |
返回值
注意
key 中的 RoomId 和 UserId 为 nullptr,此时,通过此接口设置的解码方式根据 key 中的 StreamIndex 值,适用于所有的远端主流或屏幕流的解码方式。virtual int bytertc::IRTCVideo::requestRemoteVideoKeyFrame(const RemoteStreamKey &stream_info)=0
cpp在订阅远端视频流之后,向远端请求关键帧
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_info | const RemoteStreamKey & | 远端流信息,参看 RemoteStreamKey。 |
返回值
注意
virtual int bytertc::IRTCVideo::sendStreamSyncInfo(
const uint8_t* data,
int32_t length,
const StreamSycnInfoConfig &config
)=0
cpp发送音频流同步信息。将消息通过音频流发送到远端,并实现与音频流同步,该接口调用成功后,远端用户会收到 onStreamSyncInfoReceived 回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | const uint8_t * | 消息内容。 |
| length | int32_t | 消息长度。取值范围是 [1,255] 字节,建议小于 16 字节,否则可能占用较大带宽。 |
| config | const StreamSycnInfoConfig & | 媒体流信息同步的相关配置,详见 StreamSycnInfoConfig 。 |
返回值
注意
kRoomProfileTypeInteractivePodcast 房间模式下,此消息一定会送达。在其他房间模式下,如果本地用户未说话,此消息不一定会送达。virtual int bytertc::IRTCVideo::setLocalVoicePitch(int pitch)=0
cpp开启本地语音变调功能,多用于 K 歌场景。
使用该方法,你可以对本地语音的音调进行升调或降调等调整。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| pitch | int | 相对于语音原始音调的升高/降低值,取值范围[-12,12],默认值为 0,即不做调整。 取值范围内每相邻两个值的音高距离相差半音,正值表示升调,负值表示降调,设置的绝对值越大表示音调升高或降低越多。 超出取值范围则设置失败,并且会触发 onWarning 回调,提示 WarningCode 错误码为 WARNING_CODE_SET_SCREEN_STREAM_INVALID_VOICE_PITCH 设置语音音调不合法 |
返回值
virtual int bytertc::IRTCVideo::startPlayPublicStream(const char* public_stream_id)=0
cpp订阅指定公共流
无论用户是否在房间内,都可以调用本接口获取和播放指定的公共流。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| public_stream_id | const char * | 公共流 ID,如果指定流暂未发布,则本地客户端将在其开始发布后接收到流数据。 |
返回值
注意
virtual int bytertc::IRTCVideo::stopPlayPublicStream(const char* public_stream_id)=0
cpp取消订阅指定公共流
关于订阅公共流,查看 startPlayPublicStream。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| public_stream_id | const char * | 公共流 ID |
返回值
virtual int bytertc::IRTCVideo::setPublicStreamVideoCanvas(
const char* public_stream_id,
const VideoCanvas &canvas
)=0
cpp为指定公共流绑定内部渲染视图。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| public_stream_id | const char * | 公共流 ID |
| canvas | const VideoCanvas & | 内部渲染视图,如果需要解除视频的绑定视图,把 videoCanvas 设置为空。详见 VideoCanvas。 |
返回值
virtual int bytertc::IRTCVideo::setPublicStreamVideoSink(
const char* public_stream_id,
IVideoSink* video_sink,
IVideoSink::PixelFormat format
)=0
cpp为指定公共流绑定自定义渲染器。详见自定义视频渲染。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| public_stream_id | const char * | 公共流 ID |
| video_sink | IVideoSink * | 自定义视频渲染器,自定义视频渲染器,需要释放渲染器资源时,将 videoSink 设置为 null。参看 IVideoSink |
| format | IVideoSink::PixelFormat | videoSink 适用的视频帧编码格式,参看 PixelFormat |
返回值
方法调用结果:
virtual int bytertc::IRTCVideo::setPublicStreamAudioPlaybackVolume(
const char* public_stream_id,
int volume
)=0
cppAvailable since 3.51
调节公共流的音频播放音量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| public_stream_id | const char * | 公共流 ID |
| volume | int | 音频播放音量值和原始音量值的比值,该比值的范围是 [0, 400],单位为 %,且自带溢出保护。为保证更好的音频质量,建议设定在 [0, 100] 之间,其中 100 为系统默认值。 |
返回值
virtual int bytertc::IRTCVideo::setVideoWatermark(
StreamIndex stream_index,
const char* image_path,
RTCWatermarkConfig config
)=0
cpp在指定视频流上添加水印。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_index | StreamIndex | 需要添加水印的视频流属性,参看 StreamIndex。 |
| image_path | const char * | 水印图片路径,仅支持本地文件绝对路径,长度限制为 512 字节。 水印图片为 PNG 或 JPG 格式。 |
| config | RTCWatermarkConfig | 水印参数,参看 RTCWatermarkConfig。 |
返回值
注意
virtual int bytertc::IRTCVideo::clearVideoWatermark(StreamIndex stream_index)=0
cpp移除指定视频流的水印。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_index | StreamIndex | 需要移除水印的视频流属性,参看 StreamIndex。 |
返回值
virtual int bytertc::IRTCVideo::setDummyCaptureImagePath(const char* file_path)=0
cpp摄像头处于关闭状态时,使用静态图片填充本地推送的视频流。
调用 stopVideoCapture 接口时,会开始推静态图片。若要停止发送图片,可传入空字符串或启用内部摄像头采集。
可重复调用该接口来更新图片。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| file_path | const char * | 设置静态图片的路径。 支持本地文件绝对路径,不支持网络链接,长度限制为 512 字节。 静态图片支持类型为 JPEG/JPG、PNG、BMP。 若图片宽高比与设置的编码宽高比不一致,图片会按编码高宽等比缩放,并裁剪长边。推流帧率与码率与设置的编码参数一致。 |
返回值
注意
virtual int bytertc::IRTCVideo::startCloudProxy(const CloudProxyConfiguration &configuration)=0
cpp开启云代理
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| configuration | const CloudProxyConfiguration & | 云代理服务器信息列表。参看 CloudProxyConfiguration。 |
返回值
注意
virtual int bytertc::IRTCVideo::stopCloudProxy()=0
cpp关闭云代理
返回值
注意
要开启云代理,调用 startCloudProxy。
virtual int bytertc::IRTCVideo::setLocalProxy(
const LocalProxyConfiguration* configurations,
int configuration_num
)=0
cpp设置本地代理。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| configurations | const LocalProxyConfiguration * | 本地代理配置参数。参看 LocalProxyConfiguration。 你可以根据自己的需要选择同时设置 Http 隧道 和 Socks5 两类代理,或者单独设置其中一类代理。如果你同时设置了 Http 隧道 和 Socks5 两类代理,此时,媒体和信令采用 Socks5 代理, Http 请求采用 Http 隧道代理;如果只设置 Http 隧道 或 Socks5 一类代理,媒体、信令和 Http 请求均采用已设置的代理。 调用此接口设置本地代理后,若想清空当前已有的代理设置,可再次调用此接口,选择不设置任何代理即可清空。 |
| configuration_num | int | 本地代理配置参数的数量。 |
注意
virtual int bytertc::IRTCVideo::setLowLightAdjusted(VideoEnhancementMode mode)=0
cppAvailable since 3.57
设置视频暗光增强模式。
对于光线不足、照明不均匀或背光等场景下推荐开启,可有效改善画面质量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mode | VideoEnhancementMode | 默认不开启。参看 VideoEnhancementMode。 |
返回值
注意
virtual int bytertc::IRTCVideo::setVideoEncoderConfig(
StreamIndex index,
const VideoSolution* solutions,
int solution_num
)=0
cppDeprecated since 3.36 and will be deleted in 3.51, use setVideoEncoderConfig instead.
设置推送多路流时的各路视频参数,包括分辨率、帧率、码率、缩放模式、网络不佳时的回退策略等。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | StreamIndex | 视频流属性,参看 StreamIndex。 |
| solutions | const VideoSolution * | 要推送的多路视频流参数,参看 VideoSolution。 最大分辨率为 4096px × 4096px,超过或设置的分辨率无法编码时,会导致编码推流失败。 |
| solution_num | int | 视频参数数组长度。 最多支持 4 路参数。当设置了多路参数时,分辨率必须是从大到小排列。 |
返回值
注意
enableSimulcastMode 开启推送多路流模式。virtual int bytertc::IRTCVideo::updateRemoteStreamVideoCanvas(
RemoteStreamKey stream_key,
const enum RenderMode render_mode,
const uint32_t background_color
)=0
cppDeprecated since 3.56 on iOS and Android, and will be deleted in 3.62.
修改远端视频帧的渲染设置,包括渲染模式和背景颜色。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_key | RemoteStreamKey | 远端流信息。参看 RemoteStreamKey。 |
| render_mode | const enum RenderMode | 渲染模式,参看 RenderMode。 |
| background_color | const uint32_t | 背景颜色,参看 VideoCanvas.background_color |
返回值
注意
你可以在远端视频渲染过程中,调用此接口。调用结果会实时生效。
virtual int bytertc::IRTCVideo::setLocalVideoSink(
StreamIndex index,
IVideoSink* video_sink,
IVideoSink::PixelFormat required_format
)=0
cppDeprecated since 3.57, use setLocalVideoRender instead.
将本地视频流与自定义渲染器绑定。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | StreamIndex | 视频流属性。采集的视频流/屏幕视频流,参看 StreamIndex |
| video_sink | IVideoSink * | 自定义视频渲染器,参看 IVideoSink。 |
| required_format | IVideoSink::PixelFormat | video_sink 适用的视频帧编码格式,参看 PixelFormat |
返回值
注意
virtual int bytertc::IRTCVideo::setRemoteVideoSink(
RemoteStreamKey stream_key,
IVideoSink* video_sink,
IVideoSink::PixelFormat required_format
)=0
cppDeprecated since 3.57, use setRemoteVideoRender instead.
将远端视频流与自定义渲染器绑定。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_key | RemoteStreamKey | 远端流信息,用于指定需要渲染的视频流来源及属性,参看 RemoteStreamKey。 |
| video_sink | IVideoSink * | 自定义视频渲染器,参看 IVideoSink。 |
| required_format | IVideoSink::PixelFormat | video_sink 适用的视频帧编码格式,参看 PixelFormat。 |
返回值
注意
virtual int bytertc::IRTCVideo::sendSEIMessage(
StreamIndex stream_index,
const uint8_t* message,
int length,
int repeat_count
)=0
cppDeprecated since 3.50 and will be deleted in 3.55, use sendSEIMessage instead.
通过视频帧发送 SEI 数据。
在视频通话场景下,SEI 数据会随视频帧发送;在语音通话场景下,SDK 会自动生成一路 16px × 16px 的黑帧视频流用来发送 SEI 数据。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| stream_index | StreamIndex | 指定携带 SEI 数据的媒体流类型,参看 StreamIndex。 语音通话场景下,该值需设为 kStreamIndexMain,否则 SEI 数据会被丢弃从而无法送达远端。 |
| message | const uint8_t * | SEI 消息。 |
| length | int | SEI 消息长度,不超过 4KB。 |
| repeat_count | int | 消息发送重复次数。取值范围是 [0, 30]。 调用此接口后,SEI 数据会添加到从当前视频帧开始的连续 repeat_count+1 个视频帧中。 |
返回值
注意
virtual IAudioMixingManager * bytertc::IRTCVideo::getAudioMixingManager()=0
cppDeprecated since 353.1, will be deleted in 359, use getAudioEffectPlayer or getMediaPlayer instead
混音管理接口创建
返回值
混音管理实例,详见 IAudioMixingManager
virtual int bytertc::IRTCVideo::muteAudioPlayback(MuteState mute_state)=0
cppDeprecated since 3.45 and will be deleted in 3.51, use setPlaybackVolume instead.
控制本地音频流播放状态:播放/不播放
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mute_state | MuteState | 播放状态,标识是否播放本地音频流,详见: MuteState |
返回值
注意
本方法仅控制本地收到音频流的播放状态,并不影响本地音频播放设备。
class bytertc::IAudioDeviceCollection
cpp音频设备相关的信息
| 返回 | 名称 |
|---|---|
| virtual int | getCount |
| virtual int | getDevice |
| virtual void | release |
| virtual int | getDevice |
virtual int bytertc::IAudioDeviceCollection::getCount() override
cpp获取当前系统内音频设备数量
返回值
音频设备数量
virtual int bytertc::IAudioDeviceCollection::getDevice(
int index,
char device_name[MAX_DEVICE_ID_LENGTH],
char device_id[MAX_DEVICE_ID_LENGTH]
) override
cpp根据索引号,获取设备信息
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | int | 设备索引号,从 0 开始,注意需小于 getCount 返回值。 |
| device_name | char[MAX_DEVICE_ID_LENGTH] | 设备名称 |
| device_id | char[MAX_DEVICE_ID_LENGTH] | 设备 ID |
返回值
virtual void bytertc::IAudioDeviceCollection::release() override
cpp释放当前 IAudioDeviceCollection 对象占用的资源。
注意
不需要返回音频设备相关信息列表时应该调用本方法释放相关资源。
virtual int bytertc::IAudioDeviceCollection::getDevice(
int index,
AudioDeviceInfo* audio_device_info
)=0
cpp根据索引号,获取设备信息
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | int | 设备索引号,从 0 开始,注意需小于 getCount 返回值。 |
| audio_device_info | AudioDeviceInfo * | 设备信息,详见 AudioDeviceInfo |
返回值
class bytertc::IScreenCaptureSourceList
cpp屏幕共享对象信息列表
共享对象相关数据将在调用 release 后被释放。
| 返回 | 名称 |
|---|---|
| virtual int32_t | getCount |
| virtual ScreenCaptureSourceInfo | getSourceInfo |
| virtual void | release |
virtual int32_t bytertc::IScreenCaptureSourceList::getCount()=0
cpp获取列表长度
返回值
可共享对象数量
virtual ScreenCaptureSourceInfo bytertc::IScreenCaptureSourceList::getSourceInfo(int32_t index)=0
cpp根据索引号,获取屏幕共享列表中的元素
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | int32_t | 列表索引号 |
返回值
屏幕源类型信息,详见 ScreenCaptureSourceInfo。
virtual void bytertc::IScreenCaptureSourceList::release()=0
cppIScreenCaptureSourceList 使用结束后,调用本接口删除对象,清空和释放内存。
class bytertc::IVideoDeviceCollection
cpp视频设备相关的信息
| 返回 | 名称 |
|---|---|
| virtual int | getCount |
| virtual int | getDevice |
| virtual void | release |
| virtual int | getDevice |
virtual int bytertc::IVideoDeviceCollection::getCount() override
cpp获取当前系统内视频设备数量
返回值
视频设备数量
virtual int bytertc::IVideoDeviceCollection::getDevice(
int index,
char device_name[MAX_DEVICE_ID_LENGTH],
char device_id[MAX_DEVICE_ID_LENGTH]
) override
cpp根据索引号,获取设备信息
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | int | 设备索引号,从 0 开始,注意需小于 getCount 返回值。 |
| device_name | char[MAX_DEVICE_ID_LENGTH] | 设备名称 |
| device_id | char[MAX_DEVICE_ID_LENGTH] | 设备 ID |
返回值
virtual void bytertc::IVideoDeviceCollection::release() override
cpp释放当前 IVideoDeviceCollection 对象占用的资源。
注意
不需要返回视频设备相关信息列表时应该调用本方法释放相关资源。
virtual int bytertc::IVideoDeviceCollection::getDevice(
int index,
VideoDeviceInfo* video_device_info
)=0
cpp根据索引号,获取设备信息
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | int | 设备索引号,从 0 开始,注意需小于 getCount 返回值。 |
| video_device_info | VideoDeviceInfo * | 设备信息 |
返回值
class bytertc::IRTCRoom
cpp房间接口
virtual void bytertc::IRTCRoom::destroy()=0
cpp退出并销毁调用 createRTCRoom 所创建的房间实例。
virtual int bytertc::IRTCRoom::setUserVisibility(bool enable)=0
cpp设置用户可见性。未调用该接口前,本地用户默认对他人可见。
默认情况下,一个 RTC 房间最多同时容纳 50 名可见用户,最多 30 人可同时上麦。更多信息参看用户和媒体流上限。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | bool | 设置用户是否对房间内其他用户可见:
|
返回值
注意
• 在加入房间后设置用户可见性,若可见性前后不同,会触发本回调。
• 在断网重连后,若可见性发生改变,会触发本回调。
• 从不可见切换至可见时,房间内其他用户会收到 onUserJoined。
• 若调用该方法将可见性设为 false,此时尝试发布流会收到 kWarningCodePublishStreamForbiden 警告。
virtual int bytertc::IRTCRoom::setRTCRoomEventHandler(IRTCRoomEventHandler* room_event_handler)=0
cpp通过设置 IRTCRoom 对象的事件句柄,监听此对象对应的回调事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| room_event_handler | IRTCRoomEventHandler * | 参见 IRTCRoomEventHandler |
返回值
virtual int bytertc::IRTCRoom::joinRoom(
const char* token,
const UserInfo &user_info,
const RTCRoomConfig &config
)=0
cpp加入房间。
调用 createRTCRoom 创建房间后,调用此方法加入房间,同房间内其他用户进行音视频通话。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | const char * | 动态密钥,用于对登录用户进行鉴权验证。 进入房间需要携带 Token。测试时可使用控制台生成临时 Token,正式上线需要使用密钥 SDK 在您的服务端生成并下发 Token。Token 有效期及生成方式参看使用 Token 完成鉴权。
|
| user_info | const UserInfo & | 用户信息,参看 UserInfo。 |
| config | const RTCRoomConfig & | 房间参数配置,设置房间模式以及是否自动发布或订阅流。具体配置模式参看 RTCRoomConfig。 |
返回值
注意
virtual int bytertc::IRTCRoom::leaveRoom()=0
cpp离开房间。
调用此方法结束通话过程,并释放所有通话相关的资源。
返回值
注意
virtual int bytertc::IRTCRoom::updateToken(const char* token)=0
cpp更新 Token。
收到 onTokenWillExpire, onPublishPrivilegeTokenWillExpire, 或 onSubscribePrivilegeTokenWillExpire 时,你必须重新获取 Token,并调用此方法更新 Token,以保证通话的正常进行。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | const char * | 重新获取的有效 Token。 如果 Token 无效,你会收到 onRoomStateChanged,错误码是 -1010。 |
返回值
方法调用结果:
注意
virtual int64_t bytertc::IRTCRoom::sendUserMessage(
const char* uid,
const char* message,
MessageConfig config=kMessageConfigReliableOrdered
)=0
cpp给房间内指定的用户发送点对点文本消息(P2P)。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char * | 消息接收用户的 ID |
| message | const char * | 发送的文本消息内容。 消息不超过 64 KB。 |
| config | MessageConfig | 消息类型,参看 MessageConfig。 |
返回值
这次发送消息的编号,从 1 开始递增。
注意
virtual int64_t bytertc::IRTCRoom::sendUserBinaryMessage(
const char* uid,
int length,
const uint8_t* message,
MessageConfig config=kMessageConfigReliableOrdered
)=0
cpp给房间内指定的用户发送点对点二进制消息(P2P)。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | const char * | 消息接收用户的 ID |
| length | int | 二进制字符串的长度。 |
| message | const uint8_t * | 二进制消息的内容。 消息不超过 46KB。 |
| config | MessageConfig | 消息类型,参看 MessageConfig。 |
返回值
这次发送消息的编号,从 1 开始递增。
注意
virtual int64_t bytertc::IRTCRoom::sendRoomMessage(const char* message)=0
cpp给房间内的所有其他用户群发文本消息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| message | const char * | 用户发送的广播消息 消息不超过 64 KB。 |
注意
virtual int64_t bytertc::IRTCRoom::sendRoomBinaryMessage(
int size,
const uint8_t* message
)=0
cpp给房间内的所有其他用户群发二进制消息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| size | int | 发送的二进制消息长度 |
| message | const uint8_t * | 用户发送的二进制广播消息 消息不超过 46KB。 |
返回值
这次发送消息的编号,从 1 开始递增。
注意
virtual int bytertc::IRTCRoom::publishStream(MediaStreamType type)=0
cpp在当前所在房间内发布本地通过摄像头/麦克风采集的媒体流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | MediaStreamType | 媒体流类型,用于指定发布音频/视频,参看 MediaStreamType |
返回值
注意
virtual int bytertc::IRTCRoom::unpublishStream(MediaStreamType type)=0
cpp停止将本地摄像头/麦克风采集的媒体流发布到当前所在房间中
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | MediaStreamType | 媒体流类型,用于指定停止发布音频/视频,参看 MediaStreamType |
返回值
注意
virtual int bytertc::IRTCRoom::publishScreen(MediaStreamType type)=0
cpp在当前所在房间内手动发布本地屏幕共享音视频流。
如果你需要手动向多个房间发布屏幕共享流,可以使用同样的 uid 加入多个房间,并在每个房间调用该方法。同时,你可以在不同的房间发布不同的屏幕共享流类型。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | MediaStreamType | 媒体流类型,用于指定发布屏幕音频/视频,参看 MediaStreamType。 |
返回值
注意
virtual int bytertc::IRTCRoom::unpublishScreen(MediaStreamType type)=0
cpp停止将本地屏幕共享音视频流发布到当前所在房间中
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | MediaStreamType | 媒体流类型,用于指定停止发布屏幕音频/视频,参看 MediaStreamType |
返回值
注意
virtual int bytertc::IRTCRoom::setRemoteVideoConfig(
const char* user_id,
const RemoteVideoConfig &remote_video_config
)=0
cpp设置期望订阅的远端视频流的参数。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| user_id | const char * | 期望配置订阅参数的远端视频流发布用户的 ID。 |
| remote_video_config | const RemoteVideoConfig & | 期望配置的远端视频流参数,参看 RemoteVideoConfig。 |
返回值
方法调用结果:
注意
room_config 中的 remote_video_config 进行设置。virtual int bytertc::IRTCRoom::subscribeStream(
const char* user_id,
MediaStreamType type
)=0
cpp订阅房间内指定的通过摄像头/麦克风采集的媒体流,或更新对指定远端用户的订阅选项
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| user_id | const char * | 指定订阅的远端发布音视频流的用户 ID。 |
| type | MediaStreamType | 媒体流类型,用于指定订阅音频/视频。参看 MediaStreamType。 |
返回值
方法调用结果:
注意
virtual int bytertc::IRTCRoom::subscribeAllStreams(MediaStreamType type)=0
cpp订阅房间内所有通过摄像头/麦克风采集的媒体流,或更新订阅选项。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | MediaStreamType | 媒体流类型,用于指定订阅音频/视频。参看 MediaStreamType。 |
返回值
0: 方法调用成功
!0: 方法调用失败
注意
virtual int bytertc::IRTCRoom::unsubscribeStream(
const char* user_id,
MediaStreamType type
)=0
cpp取消订阅房间内指定的通过摄像头/麦克风采集的媒体流。
该方法对自动订阅和手动订阅模式均适用。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| user_id | const char * | 指定取消订阅的远端发布音视频流的用户 ID。 |
| type | MediaStreamType | 媒体流类型,用于指定取消订阅音频/视频。参看 MediaStreamType。 |
返回值
方法调用结果:
注意
virtual int bytertc::IRTCRoom::unsubscribeAllStreams(MediaStreamType type)=0
cpp取消订阅房间内所有的通过摄像头/麦克风采集的媒体流。
自动订阅和手动订阅的流都可以通过本方法取消订阅。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | MediaStreamType | 媒体流类型,用于指定取消订阅音频/视频。参看 MediaStreamType。 |
返回值
方法调用结果:
注意
virtual int bytertc::IRTCRoom::subscribeScreen(
const char* user_id,
MediaStreamType type
)=0
cpp订阅房间内指定的远端屏幕共享音视频流,或更新对指定远端用户的订阅选项
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| user_id | const char * | 指定订阅的远端发布屏幕流的用户 ID。 |
| type | MediaStreamType | 媒体流类型,用于指定订阅音频/视频。参看 MediaStreamType。 |
返回值
方法调用结果:
注意
virtual int bytertc::IRTCRoom::unsubscribeScreen(
const char* user_id,
MediaStreamType type
)=0
cpp取消订阅房间内指定的远端屏幕共享音视频流。
该方法对自动订阅和手动订阅模式均适用。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| user_id | const char * | 指定取消订阅的远端发布屏幕流的用户 ID。 |
| type | MediaStreamType | 媒体流类型,用于指定取消订阅音频/视频。参看 MediaStreamType。 |
返回值
方法调用结果:
注意
virtual int bytertc::IRTCRoom::pauseAllSubscribedStream(PauseResumeControlMediaType media_type)=0
cpp暂停接收来自远端的媒体流。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| media_type | PauseResumeControlMediaType | 媒体流类型,指定需要暂停接收音频还是视频流,参看 PauseResumeControlMediaType。 |
返回值
注意
virtual int bytertc::IRTCRoom::resumeAllSubscribedStream(PauseResumeControlMediaType media_type)=0
cpp恢复接收来自远端的媒体流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| media_type | PauseResumeControlMediaType | 媒体流类型,指定需要暂停接收音频还是视频流,参看 PauseResumeControlMediaType |
返回值
注意
virtual int bytertc::IRTCRoom::setMultiDeviceAVSync(const char* audio_user_id)=0
cpp设置发流端音画同步。
当同一用户同时使用两个通话设备分别采集发送音频和视频时,有可能会因两个设备所处的网络环境不一致而导致发布的流不同步,此时你可以在视频发送端调用该接口,SDK 会根据音频流的时间戳自动校准视频流,以保证接收端听到音频和看到视频在时间上的同步性。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_user_id | const char * | 音频发送端的用户 ID,将该参数设为空则可解除当前音视频的同步关系。 |
返回值
注意
audio_user_id 即可;如需更换同步视频源,需先解除当前的同步关系,后在新视频源端开启同步。virtual int bytertc::IRTCRoom::startForwardStreamToRooms(const ForwardStreamConfiguration &configuration)=0
cpp开始跨房间转发媒体流。
在调用 joinRoom 后调用本接口,实现向多个房间转发媒体流,适用于跨房间连麦等场景。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| configuration | const ForwardStreamConfiguration & | 跨房间媒体流转发指定房间的信息。参看 ForwardStreamConfiguration。 |
返回值
0: 方法调用成功
<0: 方法调用失败
注意
virtual int bytertc::IRTCRoom::updateForwardStreamToRooms(const ForwardStreamConfiguration &configuration)=0
cpp更新跨房间媒体流转发信息。
通过 startForwardStreamToRooms 发起媒体流转发后,可调用本方法增加或者减少目标房间,或更新房间密钥。
调用本方法增加或删减房间后,将在本端触发 onForwardStreamStateChanged 回调,包含发生了变动的目标房间中媒体流转发状态。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| configuration | const ForwardStreamConfiguration & | 跨房间媒体流转发目标房间信息。参看 ForwardStreamConfiguration。 |
返回值
注意
virtual int bytertc::IRTCRoom::stopForwardStreamToRooms()=0
cpp停止跨房间媒体流转发。
通过 startForwardStreamToRooms 发起媒体流转发后,可调用本方法停止向所有目标房间转发媒体流。
返回值
注意
virtual int bytertc::IRTCRoom::pauseForwardStreamToAllRooms()=0
cpp暂停跨房间媒体流转发。
通过 startForwardStreamToRooms 发起媒体流转发后,可调用本方法暂停向所有目标房间转发媒体流。
调用本方法暂停向所有目标房间转发后,你可以随时调用 resumeForwardStreamToAllRooms 快速恢复转发。
返回值
注意
调用本方法后,目标房间中的用户将接收到本地用户停止发布 onUserUnpublishStream/ onUserUnpublishScreen 和退房 onUserLeave 的回调。
virtual int bytertc::IRTCRoom::resumeForwardStreamToAllRooms()=0
cpp恢复跨房间媒体流转发。
调用 pauseForwardStreamToAllRooms 暂停转发之后,调用本方法恢复向所有目标房间转发媒体流。
返回值
注意
目标房间中的用户将接收到本地用户进房 onUserJoined 和发布 onUserPublishStream/ onUserPublishScreen 的回调。
virtual int bytertc::IRTCRoom::setRemoteRoomAudioPlaybackVolume(int volume)=0
cpp调节某个房间内所有远端用户的音频播放音量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | int | 音频播放音量值和原始音量的比值,范围是 [0, 400],单位为 %,自带溢出保护。为保证更好的通话质量,建议将 volume 值设为 [0,100]。
|
返回值
注意
假设某远端用户 A 始终在被调节的目标用户范围内,
virtual int bytertc::IRTCRoom::setAudioSelectionConfig(AudioSelectionPriority audio_selection_priority)=0
cppAvailable since 3.52.
设置本端发布流在音频选路中的优先级。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_selection_priority | AudioSelectionPriority | 本端发布流在音频选路中的优先级,默认正常参与音频选路。参见 AudioSelectionPriority。 |
注意
virtual int64_t bytertc::IRTCRoom::setRoomExtraInfo(
const char* key,
const char* value
)=0
cppAvailable since 3.52.
设置/更新房间附加信息,可用于标识房间状态或属性,或灵活实现各种业务逻辑。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| key | const char * | 房间附加信息键值,长度小于 10 字节。 同一房间内最多可存在 5 个 key,超出则会从第一个 key 起进行替换。 |
| value | const char * | 房间附加信息内容,长度小于 128 字节。 |
返回值
注意
virtual int bytertc::IRTCRoom::startSubtitle(const SubtitleConfig &subtitle_config)=0
cppAvailable since 3.52
识别或翻译房间内所有用户的语音,形成字幕。
调用该方法时,可以在 SubtitleMode 中选择语音识别或翻译模式。如果选择识别模式,语音识别文本会通过 onSubtitleMessageReceived 事件回调给你;
如果选择翻译模式,你会同时收到两个 onSubtitleMessageReceived 回调,分别包含字幕原文及字幕译文。
调用该方法后,用户会收到 onSubtitleStateChanged 回调,通知字幕是否开启。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| subtitle_config | const SubtitleConfig & | 字幕配置信息。参看 SubtitleConfig。 |
返回值
注意
流式语音识别,而非 音视频字幕生成。创建后,在 RTC 控制台 上启动流式语音识别,并填写创建语音技术应用时获取的相关信息,包括:APP ID,Access Token,和 Cluster ID。joinRoom 接口进房时,通过 extraInfo 参数传入格式为"语种英文名": "语种代号" JSON 字符串,例如设置源语言为英文时,传入 "source_language": "en"。如未指定源语言,SDK 会将系统语种设定为源语言。如果你的系统语种不是中文、英文和日文,此时 SDK 会自动将中文设为源语言。
virtual int bytertc::IRTCRoom::stopSubtitle()=0
cppAvailable since 3.52
关闭字幕。
调用该方法后,用户会收到 onSubtitleStateChanged 回调,通知字幕是否关闭。
返回值
virtual const char * bytertc::IRTCRoom::getRoomId()=0
cppAvailable since 3.53
获取房间 ID。
返回值
房间 ID。
virtual int bytertc::IRTCRoom::subscribeUserStream(
const char* user_id,
StreamIndex stream_type,
SubscribeMediaType media_type,
const SubscribeVideoConfig &video_config
)=0
cppDeprecated since 3.36 and will be deleted in 3.51, use subscribeStream, unsubscribeStream, subscribeScreen and unsubscribeScreen instead.
订阅房间内指定的远端音视频流。
无论是自动订阅还是手动订阅模式,你都可以调用此方法按需订阅房间中的音视频流。
该方法也可用于更新已经订阅的流的属性、媒体类型等配置。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| user_id | const char * | 指定订阅的远端发布音视频流的用户 ID。 |
| stream_type | StreamIndex | 流属性,用于指定订阅主流/屏幕流,参看 StreamIndex。 |
| media_type | SubscribeMediaType | 媒体类型,用于指定订阅音/视频,参看 SubscribeMediaType。 |
| video_config | const SubscribeVideoConfig & | 视频订阅配置,参看 SubscribeVideoConfig。 |
注意
| 返回 | 名称 |
|---|---|
| BYTERTC_API bytertc::IRTCVideo * | createRTCVideo |
| BYTERTC_API void | destroyRTCVideo |
| BYTERTC_API const char * | getErrorDescription |
| BYTERTC_API const char * | getSDKVersion |
| BYTERTC_API int | setLogConfig |
| BYTERTC_API IAudioFrame * | buildAudioFrame |
| BYTERTC_API IPublicStreamParam * | createPublicStreamParam |
| BYTERTC_API ITranscoderParam * | createTranscoderParam |
| BYTERTC_API IMixedStreamConfig * | createMixedStreamConfig |
| BYTERTC_API IVideoFrame * | buildVideoFrame |
| BYTERTC_API IEncodedVideoFrame * | buildEncodedVideoFrame |
BYTERTC_API bytertc::IRTCVideo * bytertc::createRTCVideo(
const char* app_id,
bytertc::IRTCVideoEventHandler* event_handler,
const char* parameters
)
cpp创建 IRTCVideo 实例。
如果当前进程中未创建引擎实例,那么你必须先使用此方法,以使用 RTC 提供的各种音视频能力。
如果当前进程中已创建了引擎实例,再次调用此方法时,会返回已创建的引擎实例。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| app_id | const char * | 每个应用的唯一标识符。只有使用相同的 app_id 生成的实例,才能够进行音视频通信。 |
| event_handler | bytertc::IRTCVideoEventHandler * | SDK 回调给应用层的 Callback 对象,详见 IRTCVideoEventHandler 。 |
| parameters | const char * | 私有参数。如需使用请联系技术支持人员。 |
返回值
BYTERTC_API void bytertc::destroyRTCVideo()
cpp销毁由 createRTCVideo 所创建的引擎实例,并释放所有相关资源。
注意
BYTERTC_API const char * bytertc::getErrorDescription(int code)
cpp获取 SDK 内各种错误码、警告码的描述文字。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 需要获取描述的错误码 |
返回值
错误码的描述
注意
该接口是通用功能,调用时不需要依赖引擎对象。
BYTERTC_API const char * bytertc::getSDKVersion()
cpp获取当前 SDK 版本信息。
返回值
当前 SDK 版本信息。
BYTERTC_API int bytertc::setLogConfig(const LogConfig &log_config)
cpp配置 SDK 本地日志参数,包括日志级别、存储路径、日志文件最大占用的总空间、日志文件名前缀。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| log_config | const LogConfig & | 本地日志参数,参看 LogConfig。 |
返回值
注意
本方法必须在调用 createRTCVideo 之前调用。
BYTERTC_API IAudioFrame * bytertc::buildAudioFrame(const AudioFrameBuilder &builder)
cpp创建 IAudioFrame
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| builder | const AudioFrameBuilder & | 音频帧构建实例,参看 AudioFrameBuilder |
返回值
详见 IAudioFrame
BYTERTC_API IPublicStreamParam * bytertc::createPublicStreamParam()
cpp创建公共流参数实例
BYTERTC_API ITranscoderParam * bytertc::createTranscoderParam()
cpp创建合流参数实例
BYTERTC_API IMixedStreamConfig * bytertc::createMixedStreamConfig()
cpp创建合流参数实例(新)
BYTERTC_API IVideoFrame * bytertc::buildVideoFrame(const VideoFrameBuilder &builder)
cpp创建 IVideoFrame
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| builder | const VideoFrameBuilder & | 视频帧构建实例,参看 VideoFrameBuilder |
返回值
IVideoFrame 实例
BYTERTC_API IEncodedVideoFrame * bytertc::buildEncodedVideoFrame(const EncodedVideoFrameBuilder &builder)
cpp创建 IEncodedVideoFrame
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| builder | const EncodedVideoFrameBuilder & | 编码后的视频帧构建实例,参看 EncodedVideoFrameBuilder |
返回值
class bytertc::IMediaPlayer
cppAvailable since 3.53
音乐播放器
调用 setEventHandler 设置回调句柄以获取相关回调。
| 返回 | 名称 |
|---|---|
| IMediaPlayer | IMediaPlayer |
| virtual | ~IMediaPlayer |
| virtual int | open |
| virtual int | start |
| virtual int | openWithCustomSource |
| virtual int | stop |
| virtual int | pause |
| virtual int | resume |
| virtual int | setVolume |
| virtual int | getVolume |
| virtual int | getTotalDuration |
| virtual int | getPlaybackDuration |
| virtual int | getPosition |
| virtual int | setAudioPitch |
| virtual int | setPosition |
| virtual int | setAudioDualMonoMode |
| virtual int | getAudioTrackCount |
| virtual int | selectAudioTrack |
| virtual int | setPlaybackSpeed |
| virtual int | setProgressInterval |
| virtual int | setLoudness |
| virtual int | registerAudioFrameObserver |
| virtual int | pushExternalAudioFrame |
| virtual int | setEventHandler |
bytertc::IMediaPlayer::IMediaPlayer()
cppvirtual bytertc::IMediaPlayer::~IMediaPlayer()
cppvirtual int bytertc::IMediaPlayer::open(
const char* file_path,
const MediaPlayerConfig &config
)=0
cpp打开音乐文件。
一个播放器实例仅能够同时打开一个音乐文件。如果需要同时打开多个音乐文件,请创建多个音乐播放器实例。
要播放 PCM 格式的音频数据,参看 openWithCustomSource。openWithCustomSource 和此 API 互斥。
传入参数
| 参数名 | 类型 | 说明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| file_path | const char * | 音乐文件路径。 支持在线文件的 URL、本地文件的 URI、或本地文件的绝对路径。对于在线文件的 URL,仅支持 https 协议。 推荐的采样率:8KHz、16KHz、22.05KHz、44.1KHz、48KHz。 不同平台支持的本地文件格式:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| config | const MediaPlayerConfig & | 详见 MediaPlayerConfig。 |
返回值
virtual int bytertc::IMediaPlayer::start()=0
cpp播放音乐。你仅需要在调用 open,且未开启自动播放时,调用此方法。
返回值
注意
openWithCustomSource 和此 API 互斥。virtual int bytertc::IMediaPlayer::openWithCustomSource(
const MediaPlayerCustomSource &source,
const MediaPlayerConfig &config
)=0
cpp启动音频裸数据混音。
要播放音乐文件,参看 open。open 与此 API 互斥。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| source | const MediaPlayerCustomSource & | 数据源,详见 MediaPlayerCustomSource |
| config | const MediaPlayerConfig & | 详见 MediaPlayerConfig |
返回值
注意
virtual int bytertc::IMediaPlayer::stop()=0
cpp调用 open, start, 或 openWithCustomSource 开始播放后,可以调用本方法停止。
返回值
virtual int bytertc::IMediaPlayer::pause()=0
cpp调用 open,或 start 开始播放音频文件后,调用本方法暂停播放。
返回值
注意
virtual int bytertc::IMediaPlayer::resume()=0
cpp调用 pause 暂停音频播放后,调用本方法恢复播放。
返回值
注意
此接口仅支持音频文件,不支持 PCM 数据。
virtual int bytertc::IMediaPlayer::setVolume(
int volume,
AudioMixingType type
)=0
cpp调节指定混音的音量大小,包括音乐文件混音和 PCM 混音。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | int | 播放音量相对原音量的比值。单位为 %。范围为 [0, 400],建议范围是 [0, 100]。带溢出保护。 |
| type | AudioMixingType | 详见 AudioMixingType。 |
返回值
注意
仅在音频播放进行状态时,调用此方法。
virtual int bytertc::IMediaPlayer::getVolume(AudioMixingType type)=0
cpp获取当前音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | AudioMixingType | 详见 AudioMixingType。 |
返回值
注意
仅在音频播放进行状态时,调用此方法。包括音乐文件混音和 PCM 混音。
virtual int bytertc::IMediaPlayer::getTotalDuration()=0
cpp获取音乐文件时长。
返回值
注意
virtual int bytertc::IMediaPlayer::getPlaybackDuration()=0
cpp获取混音音乐文件的实际播放时长,单位为毫秒。
返回值
注意
0 时,调用此方法。virtual int bytertc::IMediaPlayer::getPosition()=0
cpp获取音乐文件播放进度。
返回值
注意
virtual int bytertc::IMediaPlayer::setAudioPitch(int pitch)=0
cpp开启变调功能,多用于 K 歌场景。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| pitch | int | 与音乐文件原始音调相比的升高/降低值,取值范围为 [-12,12],默认值为 0。每相邻两个值的音高距离相差半音,正值表示升调,负值表示降调。 |
返回值
注意
virtual int bytertc::IMediaPlayer::setPosition(int position)=0
cpp设置音乐文件的起始播放位置。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| position | int | 音乐文件起始播放位置,单位为毫秒。 你可以通过 getTotalDuration 获取音乐文件总时长,position 的值应小于音乐文件总时长。 |
返回值
注意
virtual int bytertc::IMediaPlayer::setAudioDualMonoMode(AudioMixingDualMonoMode mode)=0
cpp设置当前音乐文件的声道模式
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mode | AudioMixingDualMonoMode | 声道模式。默认的声道模式和源文件一致,详见 AudioMixingDualMonoMode。 |
返回值
注意
virtual int bytertc::IMediaPlayer::getAudioTrackCount()=0
cpp获取当前音乐文件的音轨数
返回值
注意
virtual int bytertc::IMediaPlayer::selectAudioTrack(int index)=0
cpp指定当前音乐文件的播放音轨
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | int | 指定的播放音轨,从 0 开始,取值范围为 [0, getAudioTrackCount()-1]。 设置的参数值需要小于 getAudioTrackCount 的返回值 |
返回值
注意
virtual int bytertc::IMediaPlayer::setPlaybackSpeed(int speed)=0
cpp设置播放速度
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| speed | int | 播放速度与原始文件速度的比例,单位:%,取值范围为 [50,200],默认值为 100。 |
返回值
注意
virtual int bytertc::IMediaPlayer::setProgressInterval(int64_t interval)=0
cpp设置音频文件混音时,收到 onMediaPlayerPlayingProgress 的间隔。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| interval | int64_t | 时间间隔,单位毫秒。
|
返回值
注意
virtual int bytertc::IMediaPlayer::setLoudness(float loudness)=0
cpp如果你需要使用 enableVocalInstrumentBalance 对音频文件/PCM 音频数据设置音量均衡,你必须通过此接口传入其原始响度。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| loudness | float | 原始响度,单位:lufs,取值范围为 [-70.0, 0.0]。当设置的值小于 -70.0lufs 时,则默认调整为 -70.0lufs,大于 0.0lufs 时,则不对该响度做音量均衡处理。默认值为 1.0lufs,即不做处理。 |
返回值
注意
virtual int bytertc::IMediaPlayer::registerAudioFrameObserver(IMediaPlayerAudioFrameObserver* observer)=0
cpp注册回调句柄以在本地音乐文件混音时,收到相关回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| observer | IMediaPlayerAudioFrameObserver * | 参看 IMediaPlayerAudioFrameObserver。 |
返回值
注意
此接口仅支持音频文件,不支持 PCM 数据。
virtual int bytertc::IMediaPlayer::pushExternalAudioFrame(IAudioFrame* audio_frame)=0
cpp推送用于混音的 PCM 音频帧数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audio_frame | IAudioFrame * | 音频帧,详见 IAudioFrame。
|
返回值
注意
virtual int bytertc::IMediaPlayer::setEventHandler(IMediaPlayerEventHandler* handler)=0
cpp设置回调句柄。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handler | IMediaPlayerEventHandler * | 参看 IMediaPlayerEventHandler。 |
返回值
class bytertc::IAudioEffectPlayer
cppAvailable since 3.53
音效播放器
调用 setEventHandler 设置回调句柄以获取相关回调。
| 返回 | 名称 |
|---|---|
| IAudioEffectPlayer | IAudioEffectPlayer |
| virtual | ~IAudioEffectPlayer |
| virtual int | start |
| virtual int | stop |
| virtual int | stopAll |
| virtual int | preload |
| virtual int | unload |
| virtual int | unloadAll |
| virtual int | pause |
| virtual int | pauseAll |
| virtual int | resume |
| virtual int | resumeAll |
| virtual int | setPosition |
| virtual int | getPosition |
| virtual int | setVolume |
| virtual int | setVolumeAll |
| virtual int | getVolume |
| virtual int | getDuration |
| virtual int | setEventHandler |
bytertc::IAudioEffectPlayer::IAudioEffectPlayer()
cppvirtual bytertc::IAudioEffectPlayer::~IAudioEffectPlayer()
cppvirtual int bytertc::IAudioEffectPlayer::start(
int effect_id,
const char* file_path,
const AudioEffectPlayerConfig &config
)=0
cpp开始播放音效文件。
可以通过传入不同的 ID 和 filepath 多次调用本方法,以实现同时播放多个音效文件,实现音效叠加。
传入参数
| 参数名 | 类型 | 说明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| effect_id | int | 音效 ID。用于标识音效,请保证音效 ID 唯一性。 如果使用相同的 ID 重复调用本方法后,上一个音效会停止,下一个音效开始,并收到 onAudioEffectPlayerStateChanged。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| file_path | const char * | 音效文件路径。 支持在线文件的 URL、本地文件的 URI、或本地文件的绝对路径。对于在线文件的 URL,仅支持 https 协议。 推荐的音效文件采样率:8KHz、16KHz、22.05KHz、44.1KHz、48KHz。 不同平台支持的本地音效文件格式:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| config | const AudioEffectPlayerConfig & | 音效配置,详见 AudioEffectPlayerConfig。 |
返回值
注意
virtual int bytertc::IAudioEffectPlayer::stop(int effect_id)=0
cpp停止播放音效文件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_id | int | 音效 ID |
返回值
注意
virtual int bytertc::IAudioEffectPlayer::stopAll()=0
cpp停止播放所有音效文件。
返回值
注意
virtual int bytertc::IAudioEffectPlayer::preload(
int effect_id,
const char* file_path
)=0
cpp预加载指定音乐文件到内存中,以避免频繁播放同一文件时的重复加载,减少 CPU 占用。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_id | int | 音效 ID。用于标识音效,请保证音效 ID 唯一性。 如果使用相同的 ID 重复调用本方法,后一次会覆盖前一次。 如果先调用 start,再使用相同的 ID 调用本方法 ,会收到回调 onAudioEffectPlayerStateChanged,通知前一个音效停止,然后加载下一个音效。 调用本方法预加载 A.mp3 后,如果需要使用相同的 ID 调用 start 播放 B.mp3,请先调用 unload 卸载 A.mp3 ,否则会报错 AUDIO_MIXING_ERROR_LOAD_CONFLICT。 |
| file_path | const char * | 音效文件路径。支持本地文件的 URI。 预加载的文件长度不得超过 20s。 不同平台支持的音效文件格式和 start 一致。 |
返回值
注意
virtual int bytertc::IAudioEffectPlayer::unload(int effect_id)=0
cpp卸载指定音效文件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_id | int | 音效 ID |
返回值
注意
virtual int bytertc::IAudioEffectPlayer::unloadAll()=0
cpp卸载所有音效文件。
返回值
virtual int bytertc::IAudioEffectPlayer::pause(int effect_id)=0
cpp暂停播放音效文件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_id | int | 音效 ID |
返回值
注意
virtual int bytertc::IAudioEffectPlayer::pauseAll()=0
cpp暂停播放所有音效文件。
返回值
注意
virtual int bytertc::IAudioEffectPlayer::resume(int effect_id)=0
cpp恢复播放音效文件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_id | int | 音效 ID |
返回值
注意
调用 pause 方法暂停播放音效文件后,可以通过调用本方法恢复播放。
virtual int bytertc::IAudioEffectPlayer::resumeAll()=0
cpp恢复播放所有音效文件。
返回值
注意
调用 pauseAll 方法暂停所有正在播放音效文件后,可以通过调用本方法恢复播放。
virtual int bytertc::IAudioEffectPlayer::setPosition(
int effect_id,
int pos
)=0
cpp设置音效文件的起始播放位置。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_id | int | 音效 ID |
| pos | int | 音效文件起始播放位置,单位为毫秒。 你可以通过 getDuration 获取音效文件总时长,pos 的值应小于音效文件总时长。 |
返回值
注意
virtual int bytertc::IAudioEffectPlayer::getPosition(int effect_id)=0
cpp获取音效文件播放进度。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_id | int | 音效 ID |
返回值
注意
virtual int bytertc::IAudioEffectPlayer::setVolume(
int effect_id,
int volume
)=0
cpp调节指定音效的音量大小,包括音效文件和 PCM 音频。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_id | int | 音效 ID |
| volume | int | 播放音量相对原音量的比值。单位为 %。范围为 [0, 400],建议范围是 [0, 100]。带溢出保护。 |
返回值
注意
仅在调用 start 后调用此接口。
virtual int bytertc::IAudioEffectPlayer::setVolumeAll(int volume)=0
cpp设置所有音效的音量大小,包括音效文件和 PCM 音效。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | int | 播放音量相对原音量的比值。单位为 %。范围为 [0, 400],建议范围是 [0, 100]。带溢出保护。 |
返回值
注意
该接口的优先级低于 setVolume,即通过 setVolume 单独设置了音量的音效 ID,不受该接口设置的影响。
virtual int bytertc::IAudioEffectPlayer::getVolume(int effect_id)=0
cpp获取当前音量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_id | int | 音效 ID |
返回值
注意
仅在调用 start 后调用此接口。
virtual int bytertc::IAudioEffectPlayer::getDuration(int effect_id)=0
cpp获取音效文件时长。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effect_id | int | 音效 ID |
返回值
注意
仅在调用 start 后调用此接口。
virtual int bytertc::IAudioEffectPlayer::setEventHandler(IAudioEffectPlayerEventHandler* handler)=0
cpp设置回调句柄。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handler | IAudioEffectPlayerEventHandler * | 参看 IAudioEffectPlayerEventHandler。 |
返回值
class bytertc::IVideoProcessor
cpp视频处理接口类
| 返回 | 名称 |
|---|---|
| virtual IVideoFrame * | processVideoFrame |
virtual IVideoFrame * bytertc::IVideoProcessor::processVideoFrame(IVideoFrame* src_frame)=0
cpp获取 RTC SDK 采集得到的视频帧,根据 registerLocalVideoProcessor 设置的视频前处理器,进行视频前处理,最终将处理后的视频帧给到 RTC SDK 用于编码传输。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| src_frame | IVideoFrame * | RTC SDK 采集得到的视频帧,参看 IVideoFrame。 |
返回值
经过视频前处理后的视频帧,返回给 RTC SDK 供编码和传输,参看 IVideoFrame。
注意
class bytertc::IAudioDeviceManager
cpp音频设备管理类
| 返回 | 名称 |
|---|---|
| virtual IAudioDeviceCollection * | enumerateAudioPlaybackDevices |
| virtual IAudioDeviceCollection * | enumerateAudioCaptureDevices |
| virtual void | followSystemPlaybackDevice |
| virtual void | followSystemCaptureDevice |
| virtual int | setAudioPlaybackDevice |
| virtual int | setAudioCaptureDevice |
| virtual int | setAudioPlaybackDeviceVolume |
| virtual int | getAudioPlaybackDeviceVolume |
| virtual int | setAudioCaptureDeviceVolume |
| virtual int | getAudioCaptureDeviceVolume |
| virtual int | setAudioPlaybackDeviceMute |
| virtual int | getAudioPlaybackDeviceMute |
| virtual int | setAudioCaptureDeviceMute |
| virtual int | getAudioCaptureDeviceMute |
| virtual int | getAudioPlaybackDevice |
| virtual int | getAudioCaptureDevice |
| virtual int | initAudioPlaybackDeviceForTest |
| virtual int | initAudioCaptureDeviceForTest |
| virtual int | startAudioPlaybackDeviceTest |
| virtual int | stopAudioPlaybackDeviceTest |
| virtual int | enableFilterSilentDevice |
virtual IAudioDeviceCollection * bytertc::IAudioDeviceManager::enumerateAudioPlaybackDevices()=0
cpp获取当前系统内音频播放设备列表。如果后续设备有变更,你会收到 onAudioMediaDeviceStateChanged 回调通知,然后需要重新调用本接口以获得新的设备列表。
返回值
包含系统中所有音频播放设备的列表,参看 IAudioDeviceCollection。
等待超时后会返回空列表。超时时间默认为 10 s。建议通过 onAudioDeviceStateChanged 监听到 kMediaDeviceListUpdated 后,再次调用本接口获取。
注意
你可以在收到 onAudioDeviceStateChanged 了解设备变更后,重新调用本接口以获得新的设备列表。
virtual IAudioDeviceCollection * bytertc::IAudioDeviceManager::enumerateAudioCaptureDevices()=0
cpp获取当前系统内音频采集设备列表。如果后续设备有变更,你需要重新调用本接口以获得新的设备列表。
返回值
一个包含系统中所有音频采集设备列表的对象,详见 IAudioDeviceCollection。
等待超时后会返回空列表。超时时间默认为 10 s。建议通过 onAudioDeviceStateChanged 监听到 kMediaDeviceListUpdated 后,再次调用本接口获取。
注意
你可以在收到 onAudioDeviceStateChanged 了解设备变更后,重新调用本接口以获得新的设备列表。
virtual void bytertc::IAudioDeviceManager::followSystemPlaybackDevice(bool followed)=0
cpp设置音频播放路由是否跟随系统。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| followed | bool |
|
virtual void bytertc::IAudioDeviceManager::followSystemCaptureDevice(bool followed)=0
cpp设置音频采集路由是否跟随系统。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| followed | bool |
|
virtual int bytertc::IAudioDeviceManager::setAudioPlaybackDevice(const char device_id[MAX_DEVICE_ID_LENGTH])=0
cpp设置音频播放设备。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| device_id | const char[MAX_DEVICE_ID_LENGTH] | 音频播放设备 ID,可通过 enumerateAudioPlaybackDevices 获取。 |
返回值
注意
当你调用 followSystemPlaybackDevice 设置音频播放设备跟随系统后,将无法调用此接口设置音频播放设备。
virtual int bytertc::IAudioDeviceManager::setAudioCaptureDevice(const char device_id[MAX_DEVICE_ID_LENGTH])=0
cpp设置音频采集设备。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| device_id | const char[MAX_DEVICE_ID_LENGTH] | 音频采集设备 ID,可通过 enumerateAudioCaptureDevices 获取。 |
返回值
方法调用结果
注意
当你调用 followSystemCaptureDevice 设置音频采集设备跟随系统后,将无法调用此接口设置音频采集设备。
virtual int bytertc::IAudioDeviceManager::setAudioPlaybackDeviceVolume(unsigned int volume)=0
cpp设置当前音频播放设备音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | unsigned int | 音频播放设备音量,取值范围为 [0,255], 超出此范围设置无效。
|
返回值
方法调用结果
virtual int bytertc::IAudioDeviceManager::getAudioPlaybackDeviceVolume(unsigned int* volume)=0
cpp获取当前音频播放设备音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | unsigned int * | 音频播放设备音量,范围应在 [0,255] 内。
|
返回值
方法调用结果
virtual int bytertc::IAudioDeviceManager::setAudioCaptureDeviceVolume(unsigned int volume)=0
cpp设置当前音频采集设备音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | unsigned int | 音频采集设备音量,取值范围为 [0,255], 超出此范围设置无效。
|
返回值
方法调用结果
注意
调用 setAudioCaptureDeviceMute 设为 true 静音采集设备后的音量调节会在取消静音后生效。
virtual int bytertc::IAudioDeviceManager::getAudioCaptureDeviceVolume(unsigned int* volume)=0
cpp获取当前音频采集设备音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | unsigned int * | 音频采集设备音量,范围应在 [0,255] 内。
|
返回值
方法调用结果
virtual int bytertc::IAudioDeviceManager::setAudioPlaybackDeviceMute(bool mute)=0
cpp设置当前音频播放设备静音状态,默认为非静音。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mute | bool |
|
返回值
方法调用结果
virtual int bytertc::IAudioDeviceManager::getAudioPlaybackDeviceMute(bool* mute)=0
cpp获取当前音频播放设备是否静音的信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mute | bool * |
|
返回值
方法调用结果
virtual int bytertc::IAudioDeviceManager::setAudioCaptureDeviceMute(bool mute)=0
cpp设置当前音频采集设备静音状态,默认为非静音。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mute | bool |
|
返回值
方法调用结果
注意
true 静音后仍可通过 setAudioCaptureDeviceVolume 调整采集音量,调整后的音量会在取消静音后生效。virtual int bytertc::IAudioDeviceManager::getAudioCaptureDeviceMute(bool* mute)=0
cpp获取当前音频采集设备是否静音的信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mute | bool * |
|
返回值
方法调用结果
virtual int bytertc::IAudioDeviceManager::getAudioPlaybackDevice(char device_id[MAX_DEVICE_ID_LENGTH])=0
cpp获取当前音频播放设备 ID。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| device_id | char[MAX_DEVICE_ID_LENGTH] | 音频播放设备 ID |
返回值
方法调用结果
virtual int bytertc::IAudioDeviceManager::getAudioCaptureDevice(char device_id[MAX_DEVICE_ID_LENGTH])=0
cpp获取当前音频采集设备 ID。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| device_id | char[MAX_DEVICE_ID_LENGTH] | 音频采集设备 ID,使用方负责按 MAX_DEVICE_ID_LENGTH 大小,分配与释放内存 |
返回值
方法调用结果
virtual int bytertc::IAudioDeviceManager::initAudioPlaybackDeviceForTest(const char device_id[MAX_DEVICE_ID_LENGTH])=0
cpp尝试初始化音频播放设备,可检测出设备不存在、权限被拒绝/禁用等异常问题。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| device_id | const char[MAX_DEVICE_ID_LENGTH] | 设备索引号 |
返回值
设备状态错误码
注意
该接口需在进房前调用;
检测成功不代表设备一定可以启动成功,还可能因设备被其他应用进程独占,或 CPU/内存不足等原因导致启动失败。
virtual int bytertc::IAudioDeviceManager::initAudioCaptureDeviceForTest(const char device_id[MAX_DEVICE_ID_LENGTH])=0
cpp尝试初始化音频采集设备,可检测设备不存在、权限被拒绝/禁用等异常问题。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| device_id | const char[MAX_DEVICE_ID_LENGTH] | 设备索引 |
返回值
设备状态错误码
注意
该接口需在进房前调用;
检测成功不代表设备一定可以启动成功,还可能因设备被其他应用进程独占,或 CPU/内存不足等原因导致启动失败。
virtual int bytertc::IAudioDeviceManager::startAudioPlaybackDeviceTest(
const char* test_audio_file_path,
int indication_interval
)=0
cpp启动音频播放设备检测。测试启动后,循环播放指定的音频文件,同时将通过 onAudioPlaybackDeviceTestVolume 回调播放时的音量信息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| test_audio_file_path | const char * | 指定播放设备检测的音频文件网络地址。支持的格式包括 mp3,aac,m4a,3gp 和 wav。 |
| indication_interval | int | 设置 onAudioPlaybackDeviceTestVolume 音量回调的时间间隔,推荐设置为 200 毫秒或以上。单位为毫秒。最小值为 10 毫秒。 |
返回值
方法调用结果
注意
virtual int bytertc::IAudioDeviceManager::stopAudioPlaybackDeviceTest()=0
cpp停止音频播放测试。
返回值
方法调用结果
注意
调用 startAudioPlaybackDeviceTest 后,调用本方法停止测试。
virtual int bytertc::IAudioDeviceManager::enableFilterSilentDevice(bool enable)=0
cpp开启/关闭过滤无声设备功能。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | bool | 是否开启过滤无声设备功能:
|
返回值
class bytertc::IVideoDeviceManager
cpp主要用于枚举、设置视频采集设备
| 返回 | 名称 |
|---|---|
| virtual IVideoDeviceCollection * | enumerateVideoCaptureDevices |
| virtual int | setVideoCaptureDevice |
| virtual int | getVideoCaptureDevice |
virtual IVideoDeviceCollection * bytertc::IVideoDeviceManager::enumerateVideoCaptureDevices()=0
cpp获取当前系统内视频采集设备列表。
返回值
包含系统中所有视频采集设备的列表,参看 IVideoDeviceCollection。
等待超时后会返回空列表。超时时间默认为 10 s。建议通过 onVideoDeviceStateChanged 监听到 kMediaDeviceListUpdated 后,再次调用本接口获取。
注意
你可以在收到 onVideoDeviceStateChanged 了解设备变更后,重新调用本接口以获得新的设备列表。
virtual int bytertc::IVideoDeviceManager::setVideoCaptureDevice(const char device_id[MAX_DEVICE_ID_LENGTH])=0
cpp设置当前视频采集设备
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| device_id | const char[MAX_DEVICE_ID_LENGTH] | 视频设备 ID,可以通过 enumerateVideoCaptureDevices 获取 |
返回值
virtual int bytertc::IVideoDeviceManager::getVideoCaptureDevice(char device_id[MAX_DEVICE_ID_LENGTH])=0
cpp获取当前 SDK 正在使用的视频采集设备信息
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| device_id | char[MAX_DEVICE_ID_LENGTH] | 视频设备 ID。此参数同时是入参和出参。 |
返回值
class bytertc::IDeviceCollection
cppDeprecated since 3.42 and will be deleted in 3.51, use IAudioDeviceCollection and IVideoDeviceCollection instead.
音视频设备相关的信息
| 返回 | 名称 |
|---|---|
| virtual int | getCount |
| virtual int | getDevice |
| virtual void | release |
virtual int bytertc::IDeviceCollection::getCount()=0
cpp获取当前系统内音视频设备数量
返回值
音视频设备数量
virtual int bytertc::IDeviceCollection::getDevice(
int index,
char device_name[MAX_DEVICE_ID_LENGTH],
char device_id[MAX_DEVICE_ID_LENGTH]
)=0
cpp根据索引号,获取设备信息
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | int | 设备索引号,从 0 开始,注意需小于 getCount 返回值。 |
| device_name | char[MAX_DEVICE_ID_LENGTH] | 设备名称 |
| device_id | char[MAX_DEVICE_ID_LENGTH] | 设备 ID |
返回值
virtual void bytertc::IDeviceCollection::release()=0
cpp释放当前 IAudioDeviceCollection 对象占用的资源。
注意
不需要返回音视频设备相关信息列表时应该调用本方法释放相关资源。