音频观测器
介绍跟音频观测器相关的方法和回调。
registerAudioEncodedFrameObserver
注册音频编码数据观测器。
void registerAudioEncodedFrameObserver( {required AudioEncodedFrameObserverConfig config, required AudioEncodedFrameObserver observer});
详情
- 请在加入频道后调用该方法。
- 由于该方法和 startAudioRecording 都会设置音频内容和音质,不建议该方法和 startAudioRecording 一起使用。否则,只有后调用的方法会生效。
参数
- config
- 编码后音频的观测器设置。详见 AudioEncodedFrameObserverConfig。
- observer
- 编码后音频的观测器。详见 AudioEncodedFrameObserver。
异常
方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。
registerAudioFrameObserver
注册音频观测器对象。
void registerAudioFrameObserver(AudioFrameObserver observer);
详情
该方法用于注册音频观测器对象,即注册回调。当需要 SDK 给出 onMixedAudioFrame、onRecordAudioFrame、onPlaybackAudioFrame 或 onEarMonitoringAudioFrame 等回调时,需要使用该方法注册回调。
参数
- observer
-
接口对象实例。详见 AudioFrameObserver。建议在收到 onLeaveChannel 后调用,来释放音频观测器对象。
异常
方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。
registerAudioSpectrumObserver
注册音频频谱观测器。
void registerAudioSpectrumObserver(AudioSpectrumObserver observer);
详情
成功注册音频频谱观测器并调用 enableAudioSpectrumMonitor 开启音频频谱监测后,SDK 会按照你设置的时间间隔报告你在 AudioSpectrumObserver 类中实现的回调。
参数
- observer
-
音频频谱观测器。详见 AudioSpectrumObserver。
异常
方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。
setMixedAudioFrameParameters
设置 onMixedAudioFrame 报告的音频数据格式。
Future<void> setMixedAudioFrameParameters( {required int sampleRate, required int channel, required int samplesPerCall});
参数
- sampleRate
-
音频数据采样率 (Hz),可设置为
8000
、16000
、32000
、44100
或48000
。
- channel
-
音频数据声道数,可设置为
1
(单声道) 或2
(双声道)。
- samplesPerCall
-
音频数据采样点数。旁路推流场景下通常设为
1024
。
SDK 会根据该方法设置的采样间隔(秒)定期触发 onMixedAudioFrame 回调。 采样间隔 = samplesPerCall
/(sampleRate
x channel
)。请确保你的取值能满足采样间隔大于或等于 0.01 秒。
异常
方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。
- < 0: 方法调用失败
setPlaybackAudioFrameBeforeMixingParameters
设置 onPlaybackAudioFrameBeforeMixing 报告的音频数据格式。
Future<void> setPlaybackAudioFrameBeforeMixingParameters( {required int sampleRate, required int channel});
参数
- sampleRate
-
音频数据采样率 (Hz),可设置为
8000
、16000
、32000
、44100
或48000
。
- channel
-
音频数据声道数,可设置为
1
(单声道) 或2
(双声道) 。
异常
方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。
- < 0: 方法调用失败
setPlaybackAudioFrameParameters
设置播放的音频格式。
Future<void> setPlaybackAudioFrameParameters( {required int sampleRate, required int channel, required RawAudioFrameOpModeType mode, required int samplesPerCall});
详情
该方法设置 onPlaybackAudioFrame 回调数据的格式。
- 该方法需要在加入频道前调用。
- SDK 会通过该方法中的 samplesPerCall、sampleRate 和 channel 参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。SDK 会根据该采样间隔触发 onPlaybackAudioFrame 回调。
参数
- sampleRate
- onPlaybackAudioFrame 中返回数据的采样率,可设置为 8000、 16000、 32000、44100 或 48000。
- channel
-
onPlaybackAudioFrame 中返回数据的通道数,可设置为 1 或 2:
- 1: 单声道
- 2: 双声道
- mode
-
音频帧的使用模式,详见 RawAudioFrameOpModeType。
- samplesPerCall
- onPlaybackAudioFrame 中返回数据的采样点数,如旁路推流应用中通常为 1024。
异常
方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。
- < 0:方法调用失败。
setRecordingAudioFrameParameters
设置采集的原始音频数据格式。
Future<void> setRecordingAudioFrameParameters( {required int sampleRate, required int channel, required RawAudioFrameOpModeType mode, required int samplesPerCall});
详情
该方法设置 onRecordAudioFrame 回调的采集音频格式。
- 该方法需要在加入频道前调用。
- SDK 会通过该方法中的 samplesPerCall、sampleRate 和 channel 参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。
参数
- sampleRate
- onRecordAudioFrame 中返回数据的采样率,可设置为 8000、 16000、 32000、44100 或 48000。
- channel
-
onRecordAudioFrame 中返回数据的通道数,可设置为 1 或 2:
- 1: 单声道。
- 2: 双声道。
- mode
-
音频帧的使用模式,详见 RawAudioFrameOpModeType。
- samplesPerCall
- onRecordAudioFrame 中返回数据的采样点数,如旁路推流应用中通常为 1024。
异常
方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。
- < 0:方法调用失败。
unregisterAudioEncodedFrameObserver
取消注册音频编码数据观测器。
void unregisterAudioEncodedFrameObserver(AudioEncodedFrameObserver observer);
参数
- observer
- 音频编码数据观测器。详见 AudioEncodedFrameObserver。
异常
方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。
- < 0: 方法调用失败。
unregisterAudioSpectrumObserver
取消注册音频频谱观测器。
void unregisterAudioSpectrumObserver(AudioSpectrumObserver observer);
详情
调用 registerAudioSpectrumObserver 后,如果你想取消注册音频频谱观测器,请调用该方法。
异常
方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。
- < 0: 方法调用失败
unregisterAudioFrameObserver
取消注册音频帧观测器。
void unregisterAudioFrameObserver(AudioFrameObserver observer);
参数
- observer
- 音频帧观测器,观测每帧音频的接收,详见 AudioFrameObserver。
异常
方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。
- < 0: 方法调用失败。
onEarMonitoringAudioFrame
获得耳返的原始音频数据。
final void Function(AudioFrame audioFrame)? onEarMonitoringAudioFrame;
为保证耳返的音频数据格式符合预期,你可以使用如下方法设置耳返音频数据格式:调用 setEarMonitoringAudioFrameParameters 设置音频数据格式后,调用 registerAudioFrameObserver 注册音频观测器对象,SDK 会根据该方法中的参数计算采样间隔,并根据该采样间隔触发 onEarMonitoringAudioFrame 回调。
- 由于 Flutter 框架的限制,该回调不支持将处理后的音频数据发送回 SDK。
参数
- audioFrame
- 音频原始数据。详见 AudioFrame。
onFrame
已获取音频帧回调。
final void Function(AudioPcmFrame frame)? onFrame;
注册音频数据观测器后,每次接收到一帧音频帧时,都会触发该回调,报告音频帧信息。
参数
- frame
- 音频帧信息。详见 AudioPcmFrame。
onLocalAudioSpectrum
获取本地音频频谱。
final void Function(AudioSpectrumData data)? onLocalAudioSpectrum;
成功调用 registerAudioSpectrumObserver 实现 AudioSpectrumObserver 中的 onLocalAudioSpectrum 回调并调用 enableAudioSpectrumMonitor 开启音频频谱监测后,SDK 会按照你设置的时间间隔触发该回调,报告编码后的本地音频数据的频谱。
参数
- data
- 本地用户的音频频谱数据。详见 AudioSpectrumData。
onMixedAudioEncodedFrame
获取本地和所有远端用户混音后的音频编码数据。
final void Function(Uint8List frameBuffer, int length, EncodedAudioFrameInfo audioEncodedFrameInfo)? onMixedAudioEncodedFrame;
调用 registerAudioEncodedFrameObserver 并将音频编码内容设为 audioEncodedFrameObserverPositionMixed 后,你可以通过该回调获取本地和所有远端用户混音、编码后的音频数据。
参数
- frameBuffer
- 音频 buffer。
- length
- 音频数据长度,单位为字节。
- audioEncodedFrameInfo
- 编码后音频的信息。详见 EncodedAudioFrameInfo。
onMixedAudioFrame
获取采集和播放音频混音后的数据。
final void Function(String channelId, AudioFrame audioFrame)? onMixedAudioFrame;
为保证采集和播放混音后的音频数据格式符合预期,你可以在如下方法设置音频的数据格式:调用 setMixedAudioFrameParameters 设置音频数据格式后,调用 registerAudioFrameObserver 注册音频观测器对象,SDK 会根据该方法中的参数计算采样间隔,并根据该采样间隔触发 onMixedAudioFrame 回调。
- 由于 Flutter 框架的限制,该回调不支持将处理后的音频数据发送回 SDK。
参数
- audioFrame
- 音频原始数据。详见 AudioFrame。
- channelId
- 频道 ID。
onPlaybackAudioEncodedFrame
获取所有远端用户的音频编码数据。
final void Function(Uint8List frameBuffer, int length, EncodedAudioFrameInfo audioEncodedFrameInfo)? onPlaybackAudioEncodedFrame;
调用 registerAudioEncodedFrameObserver 并将音频编码内容设为 audioEncodedFrameObserverPositionPlayback 后,你可以通过该回调获取所有远端用户的音频编码数据。
参数
- frameBuffer
- 音频 buffer。
- length
- 音频数据长度,单位为字节。
- audioEncodedFrameInfo
- 编码后音频的信息。详见 EncodedAudioFrameInfo。
onPlaybackAudioFrame
获得播放的原始音频数据。
final void Function(String channelId, AudioFrame audioFrame)? onPlaybackAudioFrame;
为保证播放的音频数据格式符合预期,你可以在如下方法设置音频的数据格式:调用 setPlaybackAudioFrameParameters 设置音频数据格式后,调用 registerAudioFrameObserver 注册音频观测器对象,SDK 会根据该方法中的参数计算采样间隔,并根据该采样间隔触发 onPlaybackAudioFrame 回调。
- 由于 Flutter 框架的限制,该回调不支持将处理后的音频数据发送回 SDK。
参数
- audioFrame
- 音频原始数据。详见 AudioFrame。
- channelId
- 频道 ID。
onPlaybackAudioFrameBeforeMixing
获得混音前的指定用户的声音。
final void Function(String channelId, int uid, AudioFrame audioFrame)? onPlaybackAudioFrameBeforeMixing;
参数
- channelId
- 频道 ID。
- uid
- 指定用户的用户 ID。
- audioFrame
- 音频原始数据。详见 AudioFrame。
onRecordAudioEncodedFrame
获取本地用户的音频编码数据。
final void Function(Uint8List frameBuffer, int length, EncodedAudioFrameInfo audioEncodedFrameInfo)? onRecordAudioEncodedFrame;
调用 registerAudioEncodedFrameObserver 并将音频编码内容设为 audioEncodedFrameObserverPositionRecord 后,你可以通过该回调获取本地用户的音频编码数据。
参数
- frameBuffer
- 音频 buffer。
- length
- 音频数据长度,单位为字节。
- audioEncodedFrameInfo
- 编码后音频的信息。详见 EncodedAudioFrameInfo。
onRecordAudioFrame
获得采集的原始音频数据。
final void Function(String channelId, AudioFrame audioFrame)? onRecordAudioFrame;
为保证采集的音频数据格式符合预期,你可以在如下方法设置音频的数据格式:调用 setRecordingAudioFrameParameters 设置音频数据格式后,调用 registerAudioFrameObserver 注册音频观测器对象,SDK 会根据该方法中的参数计算采样间隔,并根据该采样间隔触发 onRecordAudioFrame 回调。
- 由于 Flutter 框架的限制,该回调不支持将处理后的音频数据发送回 SDK。
参数
- audioFrame
- 音频原始数据。详见 AudioFrame。
- channelId
- 频道 ID。
onRemoteAudioSpectrum
获取远端音频频谱。
final void Function( List<UserAudioSpectrumInfo> spectrums, int spectrumNumber)? onRemoteAudioSpectrum;
成功调用 registerAudioSpectrumObserver 实现 AudioSpectrumObserver 中的 onRemoteAudioSpectrum 回调并调用 enableAudioSpectrumMonitor 开启音频频谱监测后,SDK 会按照你设置的时间间隔触发该回调,报告接收到的远端音频数据的频谱。
参数
- spectrums
- 远端用户的音频频谱信息,详见 UserAudioSpectrumInfo。 数组数量等于 SDK 监测到的远端用户数量,数组为空表示没有监测到远端用户的音频频谱。
- spectrumNumber
- 远端用户的数量。