NIMSDK-AOS  9.19.0
AVChatManager.java
浏览该文件的文档.
1 /*
2  * Copyright (c) 2014-2018 NetEase, Inc.
3  * All right reserved.
4  */
5 
6 package com.netease.nimlib.sdk.avchat;
7 
8 import android.content.Context;
9 
10 import com.netease.nimlib.avchat.AVChatManagerImpl;
17 import com.netease.nrtc.engine.rawapi.IRtcEngine;
18 import com.netease.nrtc.engine.rawapi.RtcCode;
19 import com.netease.nrtc.sdk.NRtcConstants;
20 import com.netease.nrtc.voice.AudioMixing;
21 
22 import java.util.List;
23 
24 
25 /**
26  * {@inheritDoc}
27  */
28 public abstract class AVChatManager extends AVChatManagerLite {
29 
30  /**
31  * 获取抽象类具体实现对象
32  *
33  * @return AVChatManager对象
34  */
35  public static AVChatManager getInstance() {
36  return AVChatManagerImpl.InstanceHolder.instance;
37  }
38 
39  /**
40  * 设置网络代理,需要在发起通话前前设置
41  *
42  * @param proxy 代理信息
43  */
44  public abstract void setNetworkProxy(AVChatNetworkProxy proxy);
45 
46 
47  /**
48  * 获取已经设置的网络代理
49  */
50  public abstract AVChatNetworkProxy getNetworkProxy();
51 
52 
53  /**
54  * 是否采用外部语音采集方式,启用后会关闭SDK内部语音采集
55  *
56  * @param enabled 是否开启
57  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
58  */
59  public abstract boolean setExternalAudioSource(boolean enabled);
60 
61 
62  /**
63  * 外部输入音频数据, 每次最多允许传递 40ms 数据
64  *
65  * @param data 音频数据
66  * @param samples 样本数量
67  * @param sampleRate 采样率,仅支持 8000,16000,32000,44100,48000
68  * @param channel 频道数量
69  * @param bytesPerSample 每个样本的字节数, 仅支持PCM 16
70  * @param blocking 是否阻塞写入数据。
71  * 如果非阻塞写入数据, 内部缓冲不足时会立即返回失败<code>-100</code>,
72  * 如果阻塞写入数据, 当内部缓冲不足时,会等待一定时间后再返回(待写入数据时长), 内部缓冲不足返回失败<code>-100</code>。
73  * @return {@code 0} 方法调用成功,其他失败
74  * @see #setExternalAudioSource(boolean)
75  */
76  public abstract int pushExternalAudioData(byte[] data,
77  int samples,
78  int sampleRate,
79  int channel,
80  int bytesPerSample,
81  boolean blocking) throws NullPointerException, IllegalArgumentException;
82 
83  /**
84  * 开始录制某个用户的语音和视频数据到文件,格式为mp4,该用户的语音和视频数据会被记录在MP4文件中,文件保存在客户端本地。
85  * <br>在视频模式时录制的是音视频数据,在语音模式时录制的是音频数据。</br>
86  * <p>注意:录制双方数据可以采用服务器录制。 </p>
87  *
88  * @param account 用户账号
89  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
90  */
91  public abstract boolean startAVRecording(String account);
92 
93  /**
94  * 停止录制某个用户的语音和视频数据到文件,格式为mp4,该用户的语音和视频数据会被记录在MP4文件中,文件保存在客户端本地。
95  * <br>在视频模式时录制的是音视频数据,在语音模式时录制的是音频数据。</br>
96  * <p>注意:录制双方数据可以采用服务器录制。 </p>
97  *
98  * @param account 用户账号
99  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
100  */
101  public abstract boolean stopAVRecording(String account);
102 
103  /**
104  * 通话中开始录音,包含所有用户的语音数据,录音文件格式为wav,文件保存在客户端本地。
105  *
106  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
107  */
108  public abstract boolean startAudioRecording();
109 
110  /**
111  * 通话中开始录音,包含所有用户的语音数据,录音文件格式为wav或aac,文件保存在客户端本地。
112  *
113  * @param type {@link AVChatAudioRecordType}
114  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
115  */
116  public abstract boolean startAudioRecording(int type);
117 
118  /**
119  * 通话中停止录音,包含所有用户的语音数据,录音文件格式为wav,文件保存在客户端本地。
120  *
121  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
122  */
123  public abstract boolean stopAudioRecording();
124 
125  /**
126  * 是否打开观众角色, 设置观众角色后所有的语音和视频数据的采集和发送会关闭,允许接收和播放远端其他用户的数据.
127  * <p>角色设置仅在多人会话时生效. </p>
128  * <p>注意:用户角色和Mute区别。观众角色会影响本地数据的采集、处理和发送等; 本地的 <code>Mute</code> 只会影响发送的数据.</p>
129  *
130  * @param enable {@code true} 观众模式,{@code false} 普通用户模式
131  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
132  */
133  public abstract boolean enableAudienceRole(boolean enable);
134 
135 
136  /**
137  * 当前是否处于观众角色.
138  * <p>角色设置仅在多人会话时生效. </p>
139  *
140  * @return {@code true} 观众角色模式,{@code false} 正常用户模式
141  */
142  public abstract boolean isAudienceRole();
143 
144 
145  /**
146  * 检查音视频模块缺失的权限.
147  * <p>在Android 6.0 平台需要获取权限后运行.</p>
148  *
149  * @param context Android 上下文
150  * @return 返回缺失的权限
151  */
152  public static List<String> checkPermission(Context context) {
153  return IRtcEngine.checkPermission(context);
154  }
155 
156  /**
157  * 截取用户的画面
158  * <p>文件保存路径: <code>/Sdcard/Android/data/{app_package_name}/files/snapshot</code> .</p>
159  *
160  * @param account 用户账号
161  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
162  */
163  public abstract boolean takeSnapshot(String account);
164 
165 
166  /**
167  * 指定本地音频文件或者远程URL来和麦克风采集的音频流进行混音和替换
168  *
169  * @param path 本地文件路径或者远程URL
170  * @param loopback 是否循环播放
171  * @param replace 是否替换麦克风采集的音频数据
172  * @param cycle 循环的次数
173  * @param volume 音量[0.0f - 1.0f]
174  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
175  */
176  public abstract boolean startAudioMixing(String path,
177  boolean loopback,
178  boolean replace,
179  int cycle,
180  float volume);
181 
182  /**
183  * 设置伴音本地播放音量
184  *
185  * @param volume [0.0f - 1.0f]
186  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
187  */
188  public abstract boolean setAudioMixingPlaybackVolume(float volume);
189 
190  /**
191  * 设置伴音发送音量
192  *
193  * @param volume [0.0f - 1.0f]
194  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
195  */
196  public abstract boolean setAudioMixingSendVolume(float volume);
197 
198  /**
199  * 设置伴音进度
200  *
201  * @param ms 目标位置,单位毫秒,可参考{@link AudioMixing#getCurrentMs()}
202  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
203  */
204  public abstract boolean seekAudioMixing(long ms);
205 
206  /**
207  * 停止伴音
208  *
209  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
210  */
211  public abstract boolean stopAudioMixing();
212 
213  /**
214  * 恢复伴音
215  *
216  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
217  */
218  public abstract boolean resumeAudioMixing();
219 
220  /**
221  * 暂停伴音
222  *
223  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
224  */
225  public abstract boolean pauseAudioMixing();
226 
227 
228  /**
229  * 预加载或卸载 音效文件(播放音效前的必要操作)
230  *
231  * @param effectId 音效id ,用户自定义 , 重复加载同一个id ,会先停止播放并卸载。
232  * @param audioFilePath 音效文件路径,如果传 null ,表示卸载相应的音效 。在播放过程中卸载会停止播放并触发播放结束的回调。<br/>
233  * 预加载的结果在{@link AVChatStateObserver#onAudioEffectPreload(int, int) }中回调。<br/>
234  * 如果需要,用户可以自己记录id 与 file 之间的对应关系
235  */
236  public abstract void preloadAudioEffect(int effectId, String audioFilePath);
237 
238 
239  /**
240  * 播放音效 , 播放之前一定要预加载音效文件{@link #preloadAudioEffect(int, String)} ,并在预加载结果回调{@link AVChatStateObserver#onAudioEffectPreload(int effectId, int result) }中判断是否加载成功<br/>
241  * <p>
242  * 播放完成后会有{@link AVChatStateObserver#onAudioEffectPlayEvent(int effectId, int event)}回调
243  *
244  * @param effectId 音效id , 同预加载时的id
245  * @param loopback 音效循环次数 , -1 表示无限循环
246  * @param send 是否发送
247  * @param volume 播放及发送音量 [0.0f - 1.0f]
248  * @return {@code true} : 播放成功,{@code false}: 方法调用失败
249  */
250  public abstract boolean playAudioEffect(int effectId, int loopback, boolean send, float volume);
251 
252 
253  /**
254  * 停止播放音效
255  *
256  * @param effectId 音效id
257  * @return {@code true} 方法调用成功,其他失败
258  */
259  public abstract boolean stopPlayAudioEffect(int effectId);
260 
261  /**
262  * 注册/注销来电或者呼出电话(自己或者对方无响应)超时的通知,默认超时时间为45秒
263  *
264  * @param observer 观察者,参数true表示呼出电话超时对方应答,false表示来电自己超时未接听
265  * @param register {@code true} 注册监听,{@code false} 注销监听
266  * @deprecated 用户外部实现超时,SDK内部未来不再提供
267  */
268  @Deprecated
269  public abstract void observeTimeoutNotification(Observer<Long> observer, boolean register);
270 
271 
272  /**
273  * <p>开启耳返</p>
274  * <p>
275  * <p>在通话建立后可以打开耳返功能,打开后可以从耳机中实时听到自己的声音。</p>
276  *
277  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
278  */
279  public abstract boolean startPlayCapturedAudio();
280 
281 
282  /**
283  * <p>关闭耳返</p>
284  * <p>
285  * <p>在成功开启耳返功能后, 可以随时关闭耳返效果。</p>
286  *
287  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
288  */
289  public abstract boolean stopPlayCapturedAudio();
290 
291 
292  /**
293  * <p>设置耳返音量</p>
294  * <p>
295  * <p>在成功打开耳返功能后,可以实时调整耳返音量。</p>
296  *
297  * @param volume 播放耳返音量 [0.0f - 1.0f]
298  * @return {@code true} 方法调用成功,{@code false} 方法调用失败
299  */
300  public abstract boolean setPlayCapturedAudioVolume(float volume);
301 
302 
303  /**
304  * 互动直播设置主画面
305  *
306  * @param account 被设置的用户账号
307  * @param callback 设置状态回调
308  */
309  public abstract void setAsMainArea(String account, AVChatRoomServerCallback callback);
310 
311 
312  /**
313  * 是否开启外部语音混音输入
314  *
315  * @param enabled 是否开启
316  * @param asSource 参与语音发送数据混音
317  * @param asSink 参与语音播放数据混音
318  * @return {@code 0} 方法调用成功,其他失败
319  */
320  public abstract boolean setExternalAudioMixingStream(boolean enabled,
321  boolean asSource,
322  boolean asSink);
323 
324  /**
325  * 输入外部需要混音的数据, 数据输入间隔需要保证和数据长度严格一致
326  *
327  * @param audioData 语音数据
328  * @param samplesPerChannel 语音数据每个声道包含采样数
329  * @param sampleRate 语音数据采样率
330  * @param channel 语音数据采样率
331  * @return {@code 0} 方法调用成功,其他失败
332  */
333  public abstract int pushExternalAudioMixingStream(byte[] audioData,
334  int samplesPerChannel,
335  int sampleRate,
336  int channel);
337 
338 
339  /**
340  * 设置是否自动发布,是否自动订阅 ,默认是自动发布和订阅,必须在joinRoom之前设置
341  * 说明:音频暂不支持手动发布,一直是发布的 ,但支持手动/自动订阅
342  *
343  * @param autoPub true表示自动发布;false表示手动发布
344  * @param autoSub true表示自动订阅;false表示手动订阅
345  * @return 操作成功是 0 ,失败 -1
346  */
347  public abstract int setAutoPublish(boolean autoPub, boolean autoSub);
348 
349  /**
350  * 查询当前是否为自动发布模式
351  *
352  * @return true为自动发布,false为手动发布
353  */
354  public abstract boolean isAutoPublishVideo();
355 
356  /**
357  * 查询当前视频是否为自动订阅模式
358  *
359  * @return 返回true为自动订阅,false为手动订阅
360  */
361  public abstract boolean isAutoSubscribeVideo();
362 
363 
364  /**
365  * 查询当前音频是否为自动订阅模式
366  *
367  * @return 返回true为自动订阅,false为手动订阅
368  */
369  public abstract boolean isAutoSubscribeAudio();
370 
371 
372  /**
373  * 设置本地视频多流模式。该方法设置单流(默认)、多流模式,发送端开启多流模式后,接收端可以选择接收大流、小流。
374  * 注意:必须在joinChannel之前设置,同一通通话不能修改。
375  *
376  * @param mode 流模式,参考 :<br/>
377  * {@link NRtcConstants.Subscribe#PUBLISH_MODEL_SINGLE_STREAM}: 单流<br/>
378  * {@link NRtcConstants.Subscribe#PUBLISH_MODEL_DUAL_STREAM}: 双流<br/>
379  * @return 0 :设置成功,但点对点模式下设置不会生效 <br/>
380  * -1 :失败 <br/>
381  */
382 
383  public abstract int setLocalVideoSimulcastModel(int mode);
384 
385 
386  /**
387  * 手动发布视频流
388  *
389  * @return 0 :操作成功,但是否发布成功还得看回调结果{@link AVChatStateObserver#onPublishVideoResult(int)} <br/>
390  * {@link RtcCode.Subscribe#VIDEO_IS_MUTED_ERR }:当前视频是mute 的 <br/>
391  * {@link RtcCode.Subscribe#IS_AUDIENCE_ERR} :当前是观众 <br/>
392  * {@link RtcCode.Subscribe#IS_AUDIO_MODE_ERR}:当前是音频模式 <br/>
393  * {@link RtcCode.Subscribe#ACTION_DUPLICATE_ERR}:当前有正在进行中的操作 <br/>
394  * {@link RtcCode.Subscribe#MODE_CONFLICT_ERR}:模式冲突,当前是自动模式<br/>
395  * {@link RtcCode.Subscribe#FORBID_ACTION}:非法操作 , 订阅相关的操作只在会议模式下有效 ,点对点不支持<br/>
396  * -1 :其它失败 <br/>
397  */
398  public abstract int publishVideo();
399 
400  /**
401  * 手动取消发布视频流
402  *
403  * @return 0 :操作成功,但是否取消发布成功还得看回调结果{@link AVChatStateObserver#onUnpublishVideoResult(int)} <br/>
404  * {@link RtcCode.Subscribe#VIDEO_IS_MUTED_ERR }:当前视频是mute 的 <br/>
405  * {@link RtcCode.Subscribe#IS_AUDIENCE_ERR} :当前是观众 <br/>
406  * {@link RtcCode.Subscribe#IS_AUDIO_MODE_ERR}:当前是音频模式 <br/>
407  * {@link RtcCode.Subscribe#ACTION_DUPLICATE_ERR}:当前有正在进行中的操作 <br/>
408  * {@link RtcCode.Subscribe#MODE_CONFLICT_ERR}:模式冲突,当前是自动模式<br/>
409  * {@link RtcCode.Subscribe#FORBID_ACTION}:非法操作 , 订阅相关的操作只在会议模式下有效 ,点对点不支持<br/>
410  * -1 :其它失败 <br/>
411  */
412  public abstract int unpublishVideo();
413 
414 
415  /**
416  * 手动订阅视频流
417  *
418  * @param account 要订阅的account
419  * @param videoType 要订阅的流类型,参考:<br/>
420  * {@link NRtcConstants.Subscribe#VIDEO_TYPE_HIGH_RES}: 大流<br/>
421  * {@link NRtcConstants.Subscribe#VIDEO_TYPE_LOW_RES}: 小流<br/>
422  * @return 0:操作成功 ,但是否订阅成功还得看回调结果{@link AVChatStateObserver#onSubscribeVideoResult(String, int, int)} <br/>
423  * {@link RtcCode.Subscribe#ACTION_DUPLICATE_ERR}:当前有正在进行中的操作 <br/>
424  * {@link RtcCode.Subscribe#MODE_CONFLICT_ERR}:模式冲突,当前是自动模式<br/>
425  * {@link RtcCode.Subscribe#FORBID_ACTION}:非法操作 , 订阅相关的操作只在会议模式下有效 ,点对点不支持<br/>
426  * {@link RtcCode.Subscribe#TYPE_CONFLICT_ERR}:视频类型冲突,需要取消之前订阅的流<br/>
427  * -1 :其它失败 <br/>
428  */
429  public abstract int subscribeVideo(String account, int videoType);
430 
431  /**
432  * 手动取消订阅视频流
433  *
434  * @param account 要取消订阅的account
435  * @return 0:操作成功 ,但是否取消订阅成功还得看回调结果{{@link AVChatStateObserver#onUnsubscribeVideoResult(String, int, int)}}<br/>
436  * {@link RtcCode.Subscribe#ACTION_DUPLICATE_ERR}:当前有正在进行中的操作 <br/>
437  * {@link RtcCode.Subscribe#MODE_CONFLICT_ERR}:模式冲突,当前是自动模式<br/>
438  * {@link RtcCode.Subscribe#FORBID_ACTION}:非法操作 , 订阅相关的操作只在会议模式下有效 ,点对点不支持<br/>
439  * -1 :其它失败 <br/>
440  */
441  public abstract int unsubscribeVideo(String account);
442 
443 
444  /**
445  * 手动订阅所有的活跃音频流
446  *
447  * @return 0:操作成功 ,但是否订阅成功还得看回调结果{{@link AVChatStateObserver#onSubscribeAudioResult(int)}<br/>
448  * {@link RtcCode.Subscribe#ACTION_DUPLICATE_ERR}:当前有正在进行中的操作 <br/>
449  * {@link RtcCode.Subscribe#MODE_CONFLICT_ERR}:模式冲突,当前是自动模式<br/>
450  * {@link RtcCode.Subscribe#FORBID_ACTION}:非法操作 , 订阅相关的操作只在会议模式下有效 ,点对点不支持<br/>
451  * -1 :其它失败 <br/>
452  */
453  public abstract int subscribeActiveAudio();
454 
455  /**
456  * 手动取消订阅所有的活跃音频流
457  *
458  * @return 0:操作成功,但是否取消订阅成功还得看回调结果{{@link AVChatStateObserver#onUnsubscribeAudioResult(int)}<br/>
459  * {@link RtcCode.Subscribe#ACTION_DUPLICATE_ERR}:当前有正在进行中的操作 <br/>
460  * {@link RtcCode.Subscribe#MODE_CONFLICT_ERR}:模式冲突,当前是自动模式<br/>
461  * {@link RtcCode.Subscribe#FORBID_ACTION}:非法操作 , 订阅相关的操作只在会议模式下有效 ,点对点不支持<br/>
462  * -1 :其它失败 <br/>
463  */
464  public abstract int unsubscribeActiveAudio();
465 
466 
467  /**
468  * 设置弱网条件下发布的音视频流回退选项 , 在加入房间前设置才有效
469  *
470  * @param option : 回退选项 ,默认值为{@link NRtcConstants.PublishFallbackOption#STREAM_FALLBACK_AUDIO_ONLY} , 参考如下:
471  * {@link NRtcConstants.PublishFallbackOption#STREAM_FALLBACK_DISABLED} <br/>
472  * {@link NRtcConstants.PublishFallbackOption#STREAM_FALLBACK_AUDIO_ONLY} <br/>
473  * @return 0: 设置成功
474  */
475  public abstract int setPublishFallbackOption(int option);
476 
477  /**
478  * 注册远端用户 pcm 音频数据回调
479  *
480  * @param account 远端用户account ,用户离开SDK会自动取消注册
481  * @param callback 监听器 ,填 null 表示取消之前的注册的
482  * @return 是否注册成功
483  */
484  public abstract boolean registerRemoteAudioCallBack(String account, IAVChatRemoteAudioCallBack callback);
485 
486 
487  /**
488  * 注册播放前 pcm 音频数据回调
489  *
490  * @param callback 监听器 ,填 null 表示取消之前的注册的
491  * 说明:如果用户需要特定的采集率但又不想自己重采样,可以修改{@link AVChatParameters#KEY_AUDIO_PLAYBACK_DEFAULT_SAMPLE_RATE}
492  * @return 是否注册成功
493  */
494  public abstract boolean registerPlayAudioCallBack(IAVChatPlayAudioCallBack callback);
495 
496  /**
497  * 注册话单观察者
498  *
499  * @param observer 话单观察者
500  * @param register true代表注册,false代表反注册
501  */
502  public abstract void registerAVChatRecordObserver(IAVChatRecordObserver observer, boolean register);
503 
504  /**
505  * 获取当前通话状态
506  *
507  * @return 当前通话状态
508  * @see AVChatConnectStatus#NONE
509  * @see AVChatConnectStatus#CONNECT_ING
510  * @see AVChatConnectStatus#CONNECTED
511  * @see AVChatConnectStatus#RE_CONNECT_ING
512  * @see AVChatConnectStatus#DISCONNECT
513  */
514  public abstract int getConnectStatus();
515 
516 
517  /**
518  * 切换通话模式,只能在非观众模式下的通话过程中能切换
519  *
520  * @param mode 通话模式
521  * @return 0: 切换成功
522  * @see AVChatCommunicateMode#VIDEO_MODE 视频模式 ,音频视频可以同时发,手动发布模式的话,还需要手动发布一下视频
523  * @see AVChatCommunicateMode#AUDIO_MODE 音频模式 ,只能发音频,会停止视频发送
524  */
525  public abstract int switchCommunicateMode(int mode);
526 
527 }
abstract boolean isAutoPublishVideo()
查询当前是否为自动发布模式
static AVChatManager getInstance()
获取抽象类具体实现对象
abstract void setNetworkProxy(AVChatNetworkProxy proxy)
设置网络代理,需要在发起通话前前设置
abstract boolean stopAudioRecording()
通话中停止录音,包含所有用户的语音数据,录音文件格式为wav,文件保存在客户端本地。 ...
abstract boolean resumeAudioMixing()
恢复伴音
abstract void preloadAudioEffect(int effectId, String audioFilePath)
预加载或卸载 音效文件(播放音效前的必要操作)
abstract int subscribeVideo(String account, int videoType)
手动订阅视频流
abstract boolean seekAudioMixing(long ms)
设置伴音进度
abstract boolean registerRemoteAudioCallBack(String account, IAVChatRemoteAudioCallBack callback)
注册远端用户 pcm 音频数据回调
abstract void setAsMainArea(String account, AVChatRoomServerCallback callback)
互动直播设置主画面
abstract int pushExternalAudioData(byte[] data, int samples, int sampleRate, int channel, int bytesPerSample, boolean blocking)
外部输入音频数据, 每次最多允许传递 40ms 数据
abstract int subscribeActiveAudio()
手动订阅所有的活跃音频流
abstract boolean isAutoSubscribeAudio()
查询当前音频是否为自动订阅模式
abstract int unsubscribeActiveAudio()
手动取消订阅所有的活跃音频流
static List< String > checkPermission(Context context)
检查音视频模块缺失的权限.
abstract int setPublishFallbackOption(int option)
设置弱网条件下发布的音视频流回退选项 , 在加入房间前设置才有效
abstract int unsubscribeVideo(String account)
手动取消订阅视频流
abstract int getConnectStatus()
获取当前通话状态
abstract boolean setPlayCapturedAudioVolume(float volume)
abstract boolean setExternalAudioMixingStream(boolean enabled, boolean asSource, boolean asSink)
是否开启外部语音混音输入
abstract boolean playAudioEffect(int effectId, int loopback, boolean send, float volume)
播放音效 , 播放之前一定要预加载音效文件preloadAudioEffect(int, String) ,并在预加载结果回调AVChatSta...
abstract int publishVideo()
手动发布视频流
abstract boolean stopAudioMixing()
停止伴音
abstract int unpublishVideo()
手动取消发布视频流
abstract boolean startAVRecording(String account)
开始录制某个用户的语音和视频数据到文件,格式为mp4,该用户的语音和视频数据会被记录在MP4文件中,文件保...
abstract int setLocalVideoSimulcastModel(int mode)
设置本地视频多流模式。该方法设置单流(默认)、多流模式,发送端开启多流模式后,接收端可以选择接收大流...
abstract void registerAVChatRecordObserver(IAVChatRecordObserver observer, boolean register)
注册话单观察者
abstract boolean enableAudienceRole(boolean enable)
是否打开观众角色, 设置观众角色后所有的语音和视频数据的采集和发送会关闭,允许接收和播放远端其他用户的...
abstract boolean isAutoSubscribeVideo()
查询当前视频是否为自动订阅模式
abstract AVChatNetworkProxy getNetworkProxy()
获取已经设置的网络代理
abstract boolean stopAVRecording(String account)
停止录制某个用户的语音和视频数据到文件,格式为mp4,该用户的语音和视频数据会被记录在MP4文件中,文件保...
abstract boolean setExternalAudioSource(boolean enabled)
是否采用外部语音采集方式,启用后会关闭SDK内部语音采集
abstract boolean startAudioMixing(String path, boolean loopback, boolean replace, int cycle, float volume)
指定本地音频文件或者远程URL来和麦克风采集的音频流进行混音和替换
abstract void observeTimeoutNotification(Observer< Long > observer, boolean register)
注册/注销来电或者呼出电话(自己或者对方无响应)超时的通知,默认超时时间为45秒
abstract int switchCommunicateMode(int mode)
切换通话模式,只能在非观众模式下的通话过程中能切换
abstract boolean pauseAudioMixing()
暂停伴音
abstract int pushExternalAudioMixingStream(byte[] audioData, int samplesPerChannel, int sampleRate, int channel)
输入外部需要混音的数据, 数据输入间隔需要保证和数据长度严格一致
abstract boolean startAudioRecording()
通话中开始录音,包含所有用户的语音数据,录音文件格式为wav,文件保存在客户端本地。 ...
abstract int setAutoPublish(boolean autoPub, boolean autoSub)
设置是否自动发布,是否自动订阅 ,默认是自动发布和订阅,必须在joinRoom之前设置 说明:音频暂不支持手动...
abstract boolean isAudienceRole()
当前是否处于观众角色.
abstract boolean takeSnapshot(String account)
截取用户的画面
abstract boolean setAudioMixingSendVolume(float volume)
设置伴音发送音量
abstract boolean stopPlayAudioEffect(int effectId)
停止播放音效
abstract boolean registerPlayAudioCallBack(IAVChatPlayAudioCallBack callback)
注册播放前 pcm 音频数据回调
abstract boolean setAudioMixingPlaybackVolume(float volume)
设置伴音本地播放音量