NIMSDK-AOS  10.9.71
AVChatStateObserverLite.java
浏览该文件的文档.
1 /*
2  * Copyright (c) 2014-2018 NetEase, Inc.
3  * All right reserved.
4  */
5 
6 package com.netease.nimlib.sdk.avchat;
7 
19 import com.netease.nrtc.sdk.common.VideoFilterParameter;
20 import com.netease.nrtc.sdk.video.VideoFrame;
21 
22 import java.util.Map;
23 import java.util.Set;
24 
25 /**
26  * 通话过程中的状态变化监听
27  */
28 public interface AVChatStateObserverLite {
29 
30 
31  /**
32  * 服务器连接回调
33  *
34  * @param code 加入服务器结果 {@link AVChatResCode.JoinChannelCode}
35  * @param audioFile 如果存在服务器录制,指向语音文件.
36  * @param videoFile 如果存在服务器录制,指向视频文件.
37  * @param elapsed 从下面三个相关调用处开始计算,到成功加入房间的耗时,单位ms
38  * @see AVChatManager#call2(String, AVChatType, AVChatNotifyOption, AVChatCallback)
39  * @see AVChatManager#accept2(long, AVChatCallback)
40  * @see AVChatManager#joinRoom2(String, AVChatType, AVChatCallback)
41  */
42  void onJoinedChannel(int code, String audioFile, String videoFile, int elapsed);
43 
44 
45  /**
46  * 用户加入频道
47  *
48  * @param account 用户账号
49  * @see AVChatManager#call2(String, AVChatType, AVChatNotifyOption, AVChatCallback)
50  * @see AVChatManager#accept2(long, AVChatCallback)
51  * @see AVChatManager#joinRoom2(String, AVChatType, AVChatCallback)
52  */
53  void onUserJoined(String account);
54 
55 
56  /**
57  * 用户离开频道
58  *
59  * @param account 用户ID
60  * @param event {@link AVChatUserQuitType}
61  * @see AVChatManager#hangUp2(long, AVChatCallback)
62  * @see AVChatManager#leaveRoom2(String, AVChatCallback)
63  */
64  void onUserLeave(String account, int event);
65 
66 
67  /**
68  * 退出频道.
69  *
70  * @see AVChatManager#hangUp2(long, AVChatCallback)
71  * @see AVChatManager#leaveRoom2(String, AVChatCallback)
72  */
73  void onLeaveChannel();
74 
75 
76  /**
77  * 双方协议版本不兼容
78  *
79  * @param status {@link AVChatResCode#ERROR_PROTO_INCOMPATIBLE_LOCAL_LOW} 自己版本过低, {@link AVChatResCode#ERROR_PROTO_INCOMPATIBLE_REMOTE_LOW} 对方版本过低
80  * @see AVChatResCode#ERROR_PROTO_INCOMPATIBLE_REMOTE_LOW
81  * @see AVChatResCode#ERROR_PROTO_INCOMPATIBLE_LOCAL_LOW
82  */
83  void onProtocolIncompatible(int status);
84 
85 
86  /**
87  * 从服务器断开连接会收到此通知。
88  *
89  * @param code {@link AVChatResCode#ERROR_DISCONNECT_SERVER_TIMEOUT} 断网超时离开, {@link AVChatResCode#ERROR_DISCONNECT_SERVER_CHANNEL_CLOSED} 房间被关闭
90  * @see AVChatResCode#ERROR_DISCONNECT_SERVER_TIMEOUT
91  * @see AVChatResCode#ERROR_DISCONNECT_SERVER_CHANNEL_CLOSED
92  */
93  void onDisconnectServer(int code);
94 
95 
96  /**
97  * 网络状态发生变化
98  *
99  * @param account 用户账号
100  * @param quality 网络状态等级
101  * @param stats 网络状态信息
102  * @see AVChatNetworkQuality
103  */
104  void onNetworkQuality(String account, int quality, AVChatNetworkStats stats);
105 
106  /**
107  * 会话成功建立.
108  */
109  void onCallEstablished();
110 
111 
112  /**
113  * 语音采集设备和视频采集设备事件通知
114  *
115  * @param code 事件ID
116  * @param desc 事件描述
117  * @see com.netease.nimlib.sdk.avchat.constant.AVChatDeviceEvent
118  */
119  void onDeviceEvent(int code, String desc);
120 
121 
122  /**
123  * 客户端网络类型发生了变化
124  *
125  * @param netType 当前的网络类型
126  * @see com.netease.nimlib.sdk.avchat.constant.AVChatConnectionType
127  */
128  void onConnectionTypeChanged(int netType);
129 
130 
131  /**
132  * 用户第一帧视频数据绘制前通知.
133  *
134  * @param account 用户账号
135  */
136  void onFirstVideoFrameAvailable(String account);
137 
138 
139  /**
140  * 第一帧绘制通知
141  *
142  * @param account 用户账号
143  */
144  void onFirstVideoFrameRendered(String account);
145 
146 
147  /**
148  * 用户画面尺寸改变通知
149  *
150  * @param account 用户账号
151  * @param width 视频宽
152  * @param height 视频高
153  * @param rotate 视频角度
154  */
155  void onVideoFrameResolutionChanged(String account, int width, int height, int rotate);
156 
157 
158  /**
159  * 用户视频画面fps更新, 需要设置参数 {@link AVChatParameters#KEY_VIDEO_FPS_REPORTED}.
160  *
161  * @param account 用户账号
162  * @param fps 当前绘制帧率
163  * @see AVChatParameters#KEY_VIDEO_FPS_REPORTED
164  * @see AVChatManager#setParameter(AVChatParameters.Key, Object)
165  */
166  void onVideoFpsReported(String account, int fps);
167 
168 
169  /**
170  * 视频数据外部处理接口, 此接口需要同步执行. 操作运行在视频数据发送线程上,处理速度过慢会导致帧率过低
171  *
172  * @param frame 待处理数据
173  * @param maybeDualInput 如果为 {@code true} 则代表需要外部输入两路数据,
174  * {@link AVChatVideoFrame#data} 处理后的原始数据,{@link AVChatVideoFrame#dataMirror} 处理后的镜像数据。
175  * 如果为 {@code false} 则代表仅需要外部输入一路数据,仅支持 {@link AVChatVideoFrame#data}。
176  * 在实际使用过程中,用户需要根据自己需求来决定是否真正需要输入镜像数据,一般在使用到水印等外部处理时才会需要真正输入两路数据,其他情况可以忽略此参数。
177  * @return 返回true成功
178  */
179  boolean onVideoFrameFilter(AVChatVideoFrame frame, boolean maybeDualInput);
180 
181  /**
182  * 视频数据外部处理接口, 此接口需要同步执行. 操作运行在视频数据发送线程上,处理速度过慢会导致帧率过低
183  * @param input 待处理数据
184  * @param outputFrames {@link VideoFrame[0]} 处理后的原始数据,{@link VideoFrame[1]} 处理后的镜像数据。
185  * 如果为 {@code false} 则代表仅需要外部输入一路数据,仅支持 {@link VideoFrame[0]}。
186  * 在实际使用过程中,用户需要根据自己需求来决定是否真正需要输入镜像数据,一般在使用到水印等外部处理时才会需要真正输入两路数据,其他情况可以忽略此参数。
187  * @param filterParameter 待处理数据的参数
188  * @return 返回true成功
189  */
190  boolean onVideoFrameFilter(final VideoFrame input, VideoFrame[] outputFrames, VideoFilterParameter filterParameter);
191 
192 
193  /**
194  * 语音数据处理接口, 不要改变数据的长度. 需要设置参数 {@link AVChatParameters#KEY_AUDIO_FRAME_FILTER}.
195  *
196  * @param frame 语音帧
197  * @return 返回false 失败
198  * @see AVChatParameters#KEY_AUDIO_FRAME_FILTER
199  * @see AVChatManager#setParameter(AVChatParameters.Key, Object)
200  */
201  boolean onAudioFrameFilter(AVChatAudioFrame frame);
202 
203 
204  /**
205  * 音频设备变化
206  *
207  * @param device 语音设备
208  * @param set 可选语音设备
209  * @param shouldSelect 如果为true,可以弹框选择蓝牙外放、耳机外放选项
210  * @see AVChatAudioDevice
211  */
212  void onAudioDeviceChanged(int device, Set<Integer> set, boolean shouldSelect);
213 
214 
215  /**
216  * 汇报正在说话的用户。 需要设置参数 {@link AVChatParameters#KEY_AUDIO_REPORT_SPEAKER}.
217  *
218  * @param speakers 用户账号和声音强度的键值对
219  * @param mixedEnergy 除去自己后,所有用户语音混音后的强度
220  * @see AVChatParameters#KEY_AUDIO_REPORT_SPEAKER
221  * @see AVChatManager#setParameter(AVChatParameters.Key, Object)
222  */
223  void onReportSpeaker(Map<String, Integer> speakers, int mixedEnergy);
224 
225  /**
226  * 实时统计信息
227  *
228  * @param sessionStats 详细的统计信息
229  */
230  void onSessionStats(AVChatSessionStats sessionStats);
231 
232  /**
233  * 互动直播相关事件通知
234  *
235  * @param event {@link AVChatResCode.LiveEventCode}
236  */
237  void onLiveEvent(int event);
238 }
void onUserLeave(String account, int event)
用户离开频道
void onReportSpeaker(Map< String, Integer > speakers, int mixedEnergy)
汇报正在说话的用户。 需要设置参数 AVChatParameters#KEY_AUDIO_REPORT_SPEAKER.
void onVideoFrameResolutionChanged(String account, int width, int height, int rotate)
用户画面尺寸改变通知
void onFirstVideoFrameRendered(String account)
第一帧绘制通知
void onLiveEvent(int event)
互动直播相关事件通知
void onVideoFpsReported(String account, int fps)
用户视频画面fps更新, 需要设置参数 AVChatParameters#KEY_VIDEO_FPS_REPORTED.
void onDisconnectServer(int code)
从服务器断开连接会收到此通知。
void onFirstVideoFrameAvailable(String account)
用户第一帧视频数据绘制前通知.
boolean onAudioFrameFilter(AVChatAudioFrame frame)
语音数据处理接口, 不要改变数据的长度.
void onAudioDeviceChanged(int device, Set< Integer > set, boolean shouldSelect)
音频设备变化
void onConnectionTypeChanged(int netType)
客户端网络类型发生了变化
void onSessionStats(AVChatSessionStats sessionStats)
实时统计信息
boolean onVideoFrameFilter(AVChatVideoFrame frame, boolean maybeDualInput)
视频数据外部处理接口, 此接口需要同步执行.
void onJoinedChannel(int code, String audioFile, String videoFile, int elapsed)
服务器连接回调
void onProtocolIncompatible(int status)
双方协议版本不兼容
void onDeviceEvent(int code, String desc)
语音采集设备和视频采集设备事件通知
void onNetworkQuality(String account, int quality, AVChatNetworkStats stats)
网络状态发生变化
void onUserJoined(String account)
用户加入频道