开发者中心
视频通话
API 参考
Agora Java API Reference for Android
Agora Java API Reference for Android
|
abstract boolean | onRecordFrame (byte[] samples, int numOfSamples, int bytesPerSample, int channels, int samplesPerSec) |
|
abstract boolean | onPlaybackFrame (byte[] samples, int numOfSamples, int bytesPerSample, int channels, int samplesPerSec) |
|
abstract boolean | onPlaybackFrameBeforeMixing (byte[] samples, int numOfSamples, int bytesPerSample, int channels, int samplesPerSec, int uid) |
|
abstract boolean | onMixedFrame (byte[] samples, int numOfSamples, int bytesPerSample, int channels, int samplesPerSec) |
|
abstract boolean | isMultipleChannelFrameWanted () |
|
abstract boolean | onPlaybackFrameBeforeMixingEx (byte[] samples, int numOfSamples, int bytesPerSample, int channels, int samplesPerSec, int uid, String channelId) |
|
◆ onRecordFrame()
abstract boolean io.agora.rtc.IAudioFrameObserver.onRecordFrame |
( |
byte [] |
samples, |
|
|
int |
numOfSamples, |
|
|
int |
bytesPerSample, |
|
|
int |
channels, |
|
|
int |
samplesPerSec |
|
) |
| |
|
abstract |
10 ms 自动回调:获得采集的音频。
- 注解
- 为保证采集到的音频数据格式符合预期,Agora 推荐你在调用 registerAudioFrameObserver 注册音频观测器后,调用 setRecordingAudioFrameParameters 方法设置采集的音频数据格式。
- 参数
-
samples | 该帧的采样数据 |
numOfSamples | 采样数 |
bytesPerSample | 每个样本的字节数:对于 PCM 来说,一般使用 16 bit,即两个字节 |
channels | 频道数量(如果是立体声,数据是交叉的)
|
samplesPerSec | 每声道每秒的采样点数 |
- 返回
-
true: 客户提供的数据有效,将被编码发送。
-
false: 客户提供的数据无效,不会被编码发送而会被直接抛弃。
◆ onPlaybackFrame()
abstract boolean io.agora.rtc.IAudioFrameObserver.onPlaybackFrame |
( |
byte [] |
samples, |
|
|
int |
numOfSamples, |
|
|
int |
bytesPerSample, |
|
|
int |
channels, |
|
|
int |
samplesPerSec |
|
) |
| |
|
abstract |
10 ms 自动回调:获得播放的声音。
- 注解
- 为保证播放的音频数据格式符合预期,Agora 推荐你在调用 registerAudioFrameObserver 注册音频观测器后,调用 setPlaybackAudioFrameParameters 方法设置播放的音频数据格式。
- 参数
-
samples | 该帧的采样数据 |
numOfSamples | 采样数 |
bytesPerSample | 每个样本的字节数:对于 PCM 来说,一般使用 16 bit,即两个字节 |
channels | 频道数量(如果是立体声,数据是交叉的)
|
samplesPerSec | 每声道每秒的采样点数 |
- 返回
-
true: 客户提供的数据有效,将被编码发送。
-
false: 客户提供的数据无效,不会被编码发送而会被直接抛弃。
◆ onPlaybackFrameBeforeMixing()
abstract boolean io.agora.rtc.IAudioFrameObserver.onPlaybackFrameBeforeMixing |
( |
byte [] |
samples, |
|
|
int |
numOfSamples, |
|
|
int |
bytesPerSample, |
|
|
int |
channels, |
|
|
int |
samplesPerSec, |
|
|
int |
uid |
|
) |
| |
|
abstract |
获取单个远端用户混音前的音频数据。
- 自从
- 3.3.0。
成功注册音频观测器后,SDK 会在捕捉到混音前的音频数据时,触发该回调,将音频数据发送给你。
- 注解
为保证播放的音频数据格式符合预期,Agora 推荐你在调用 registerAudioFrameObserver 注册音频观测器后,调用 setPlaybackAudioFrameParameters 方法设置播放的音频数据格式。
- 参数
-
samples | 该音频帧的采样数据。 |
numOfSamples | 每个声道的采样点数。 |
bytesPerSample | 每个采样点的字节数: 对于 PCM 来说,一般使用 16 bit,即两个字节。 |
channels | 声道数量:
- 1: 单声道。
- 2: 双声道。双声道的音频数据是交叉存储的。
|
samplesPerSec | 每声道每秒的采样点数,即采样率。 |
uid | 远端用户的 UID。 |
- 返回
true
: 音频数据有效,数据会被发送;
false
: 音频数据无效,数据会被舍弃。
◆ onMixedFrame()
abstract boolean io.agora.rtc.IAudioFrameObserver.onMixedFrame |
( |
byte [] |
samples, |
|
|
int |
numOfSamples, |
|
|
int |
bytesPerSample, |
|
|
int |
channels, |
|
|
int |
samplesPerSec |
|
) |
| |
|
abstract |
获取本地用户和所有远端用户混音后的原始音频数据。
- 自从
- 3.3.0。
SDK 会根据 setMixedAudioFrameParameters 方法设置的采样间隔(秒)定期触发该回调。你可以从该回调中获取本地用户和远端用户混音后的音频数据。
- 注解
- 为保证采集和播放语音混音后的数据格式符合预期,Agora 推荐你在调用 registerAudioFrameObserver 注册音频观测器后,调用 setMixedAudioFrameParameters 方法设置采集与播放声音混音后的数据格式。
- 参数
-
samples | 该音频帧的采样数据。 |
numOfSamples | 每个声道的采样点数。 |
bytesPerSample | 每个采样点的字节数: 对于 PCM 来说,一般使用 16 bit,即两个字节。 |
channels | 声道数量:
- 1: 单声道。
- 2: 双声道。双声道的音频数据是交叉存储的。
|
samplesPerSec | 每声道每秒的采样点数。 |
- 返回
true
: 音频数据有效,数据会被发送;
false
: 音频数据无效,数据会被舍弃。
◆ isMultipleChannelFrameWanted()
abstract boolean io.agora.rtc.IAudioFrameObserver.isMultipleChannelFrameWanted |
( |
| ) |
|
|
abstract |
多频道场景下,设置是否获取多个频道的原始音频数据。
- 自从
- 3.3.0。
成功注册音频观测器后,SDK 会在捕捉到每个音频帧的时候触发该回调。
在多频道场景下,如果你希望从多个频道获取音频数据,则需要将该回调的返回值设为 true。 成功设置后,SDK 会触发 onPlaybackFrameBeforeMixingEx 回调,向你发送接收的混音前的音频帧,并报告该音频帧来自哪个频道。
- 注解
- 一旦你将该回调的返回值设为
true
,则 SDK 只触发 onPlaybackFrameBeforeMixingEx
来返回接收到的混音前的音频数据。 onPlaybackFrameBeforeMixing 将不会被触发。在多频道场景下,我们建议你将该回调的返回值设为 true。
- 如果你将该回调的返回值设为
false
,则 SDK 只触发 onPlaybackFrameBeforeMixing
来返回接收到的音频数据。
- 返回
true
: The audio data is valid, and will be sent to the SDK.
false
: The audio data is invalid, and will not be sent to the SDK.
◆ onPlaybackFrameBeforeMixingEx()
abstract boolean io.agora.rtc.IAudioFrameObserver.onPlaybackFrameBeforeMixingEx |
( |
byte [] |
samples, |
|
|
int |
numOfSamples, |
|
|
int |
bytesPerSample, |
|
|
int |
channels, |
|
|
int |
samplesPerSec, |
|
|
int |
uid, |
|
|
String |
channelId |
|
) |
| |
|
abstract |
获取各频道单个远端用户混音前的音频播放数据。
- 自从
- 3.3.0。
- 注解
- 为保证采集和播放语音混音后的数据格式符合预期,Agora 推荐你在调用 registerAudioFrameObserver 注册音频观测器后,调用 setMixedAudioFrameParameters 方法设置采集与播放声音混音后的数据格式。
成功注册音频观测器后,如果你将 isMultipleChannelFrameWanted 的返回值设为 true
,则 SDK 会在捕捉到各频道内混音前的音频数据时,触发该回调,将音频数据发送给你。
- 参数
-
samples | 该音频帧的采样数据。 |
numOfSamples | 每个声道的采样点数。 |
bytesPerSample | 每个采样点的字节数: 对于 PCM 来说,一般使用 16 bit,即两个字节。 |
channels | 声道数量:
- 1: 单声道。
- 2: 双声道。双声道的音频数据是交叉存储的。
|
samplesPerSec | 每声道每秒的采样点数。 |
uid | 发送该音频帧的用户 ID。 |
channelId | 该音频帧所在的频道名。 |
- 返回
true
: 音频数据有效,数据会被发送;
false
: 音频数据无效,数据会被舍弃。