原始音频数据
getEarMonitoringAudioParams
onEarMonitoringAudioFrame 回调的音频格式设置方法。
@CalledByNative public abstract AudioParams getEarMonitoringAudioParams();
调用 registerAudioFrameObserver 注册音频帧观察者时,需要实现该回调。SDK 会触发该回调,你可以在该回调的返回值中设置音频格式。
samplePerCall /(sampleRate × channel)。请确保采样间隔 ≥ 0.01 秒。返回值
耳返音频数据格式,详见 AudioParams。
所属接口类getMixedAudioParams
设置 onMixedAudioFrame 回调的音频格式。
@CalledByNative public abstract AudioParams getMixedAudioParams();
调用 registerAudioFrameObserver 注册音频帧观察者时,需要实现该回调。成功注册音频帧观察者后,SDK 会触发该回调,你可以在该回调的返回值中设置音频格式。
samplePerCall /(sampleRate × channel)。确保采样间隔 ≥ 0.01 秒。返回值
方法调用成功,返回 AudioParams 对象。详见 AudioParams。
所属接口类getObservedAudioFramePosition
设置音频数据观察位置。
@CalledByNative public abstract int getObservedAudioFramePosition();
- onRecordAudioFrame
- onPlaybackAudioFrame
- onPlaybackAudioFrameBeforeMixing
- onMixedAudioFrame
- onEarMonitoringAudioFrame
返回值
POSITION_PLAYBACK(0x0001):可观察所有远端用户混音后的播放音频,对应 onPlaybackAudioFrame 回调。POSITION_RECORD(0x0002):可观察本地用户采集的音频,对应 onRecordAudioFrame 回调。POSITION_MIXED(0x0004):可观察本地用户与所有远端用户混音后的播放音频,对应 onMixedAudioFrame 回调。POSITION_BEFORE_MIXING(0x0008):可观察单个远端用户混音前的音频,对应 onPlaybackAudioFrameBeforeMixing 回调。POSITION_EAR_MONITORING(0x0010):可观察本地用户的耳返音频,对应 onEarMonitoringAudioFrame 回调。
getPlaybackAudioParams
onPlaybackAudioFrame 回调的音频格式设置方法。
public abstract AudioParams getPlaybackAudioParams()
你需要在调用 registerAudioFrameObserver 方法时注册回调。在成功注册音频观测器后,SDK 会触发该回调。你可以在该回调的返回值中设置音频格式。
samplePerCall /(sampleRate × channel)。确保采样间隔 ≥ 0.01 秒。返回值
方法调用成功,返回 AudioParams 对象。详见 AudioParams。
所属接口类getRecordAudioParams
设置 onRecordAudioFrame 回调的音频格式。
@CalledByNative public abstract AudioParams getRecordAudioParams();
调用 registerAudioFrameObserver 注册回调后,SDK 会触发该回调。你可以在该回调的返回值中设置音频格式。
samplePerCall /(sampleRate × channel)。请确保采样间隔 ≥ 0.01 秒。返回值
方法调用成功,返回 AudioParams 对象。
所属接口类registerAudioFrameObserver
注册音频帧观测器对象。
public abstract int registerAudioFrameObserver(IAudioFrameObserver observer);
调用该方法注册音频帧观测器对象后,SDK 会触发 onMixedAudioFrame、onRecordAudioFrame、onPlaybackAudioFrame、onPlaybackAudioFrameBeforeMixing 或 onEarMonitoringAudioFrame 回调。
调用时机
在加入频道前调用此方法。
相关回调
相关回调:onMixedAudioFrame、onRecordAudioFrame、onPlaybackAudioFrame、onPlaybackAudioFrameBeforeMixing、onEarMonitoringAudioFrame。
参数
- observer
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setEarMonitoringAudioFrameParameters
设置耳返音频数据格式。
public abstract int setEarMonitoringAudioFrameParameters(int sampleRate, int channel, int mode, int samplesPerCall);
该方法用于设置 onEarMonitoringAudioFrame 回调中报告的耳返音频数据格式。
- 在调用该方法前,你需要先调用
enableInEarMonitoring方法,并将includeAudioFilters设置为EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS或EAR_MONITORING_FILTER_NOISE_SUPPRESSION。 - SDK 会根据该方法中设置的
samplesPerCall、sampleRate和channel参数计算采样间隔。采样间隔(秒)=samplesPerCall/(sampleRate×channel)。请确保采样间隔 ≥ 0.01 秒。SDK 会根据采样间隔触发 onEarMonitoringAudioFrame 回调。
参数
- sampleRate
- 在 onEarMonitoringAudioFrame 回调中报告的音频采样率。可设置为 8000、16000、32000、44100 或 48000 Hz。
- channel
- 在 onEarMonitoringAudioFrame 回调中报告的音频通道数:
- 1:单声道。
- 2:立体声。
- mode
- 音频帧的使用模式:
RAW_AUDIO_FRAME_OP_MODE_READ_ONLY(0):(默认)只读模式。例如,用户通过声网 SDK 获取数据后推送 RTMP 或 RTMPS 流。RAW_AUDIO_FRAME_OP_MODE_READ_WRITE(2):读写模式。用户从 AudioFrame 中读取数据,修改后再播放。例如,用户有自己的音效处理模块并进行语音预处理,如变声。
- samplesPerCall
- 在 onEarMonitoringAudioFrame 回调中报告的每次调用采样数,例如媒体推流时为 1024。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setMixedAudioFrameParameters
设置混音后用于采集和播放的原始音频数据格式。
public abstract int setMixedAudioFrameParameters(int sampleRate, int channel, int samplesPerCall);
SDK 会根据该方法中设置的 samplesPerCall、sampleRate 和 channel 参数计算采样间隔。 采样间隔(秒) = samplesPerCall / (sampleRate × channel),请确保采样间隔 ≥ 0.01 秒。 SDK 会根据采样间隔触发 onMixedAudioFrame 回调。
调用时机
请在加入频道前调用该方法。
参数
- sampleRate
- 回调中返回的采样率,可设置为 8000、16000、32000、44100 或 48000 Hz。
- channel
- 音频声道数,可设置为以下取值:
- 1:单声道。
- 2:立体声。
- samplesPerCall
- 每次回调的数据采样数,例如媒体推流时为 1024。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setPlaybackAudioFrameBeforeMixingParameters [1/2]
设置混音前原始音频播放数据的格式。
public abstract int setPlaybackAudioFrameBeforeMixingParameters(int sampleRate, int channel);
SDK 会根据采样间隔触发 onPlaybackAudioFrameBeforeMixing 回调。
调用时机
请在加入频道前调用此方法。
相关回调
参数
- sampleRate
- 回调中返回的采样率。可设置为以下值:
- 8000:8 kHz。
- 16000:16 kHz。
- 32000:32 kHz。
- 44100:44.1 kHz。
- 48000:48 kHz。
- channel
- 音频声道数。可设置为以下值:
- 1:单声道。
- 2:立体声。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setPlaybackAudioFrameBeforeMixingParameters [2/2]
设置 onPlaybackAudioFrameBeforeMixing 回调中返回音频数据的格式。
public abstract int setPlaybackAudioFrameBeforeMixingParameters(int sampleRate, int channel, int samplesPerCall);
参数
- sampleRate
- 设置 onPlaybackAudioFrameBeforeMixing 回调中返回的采样率。可设置为以下值(单位:Hz):
- 8000
- 16000
- 32000
- 44100
- 48000
- channel
- 设置 onPlaybackAudioFrameBeforeMixing 回调中返回的音频数据的声道数。可设置为:
- 1:单声道。
- 2:立体声。
- samplesPerCall
- 设置 onMixedAudioFrame 回调中返回的音频数据的采样点数。信息在 RTMP 推流场景中,建议设置为 1024。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setPlaybackAudioFrameParameters
设置原始音频播放数据的格式。
public abstract int setPlaybackAudioFrameParameters(int sampleRate, int channel, int mode, int samplesPerCall);
SDK 会根据 samplesPerCall、sampleRate 和 channel 参数计算采样间隔。采样间隔(单位:秒) = samplesPerCall /(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。SDK 会根据采样间隔触发 onPlaybackAudioFrame 回调。
调用时机
请在加入频道前调用该方法。
参数
- sampleRate
- 回调中返回的采样率。可设置为 8000、16000、32000、44100 或 48000 Hz。
- channel
- 音频声道数,可设置为:
- 1:单声道。
- 2:立体声。
- mode
- 音频帧的使用模式:
0:(默认)只读模式。例如,用户通过声网 SDK 获取数据后推送 RTMP 或 RTMPS 流。2:读写模式。用户从 AudioFrame 中读取数据,修改后再播放。例如,用户有自己的音效处理模块并进行语音预处理,如变声。
- samplesPerCall
- 每次调用的数据采样数,例如媒体推流时为 1024。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setRecordingAudioFrameParameters
设置采集的原始音频数据格式。
public abstract int setRecordingAudioFrameParameters(int sampleRate, int channel, int mode, int samplesPerCall);
SDK 会根据 samplesPerCall、sampleRate 和 channel 参数计算采样间隔。采样间隔(单位:秒) = samplesPerCall /(sampleRate × channel)。请确保采样间隔 ≥ 0.01 秒。SDK 会根据采样间隔触发 onRecordAudioFrame 回调。
调用时机
请在加入频道前调用该方法。
参数
- sampleRate
- 回调中返回的采样率,可设置为 8000、16000、32000、44100 或 48000 Hz。
- channel
- 音频声道数,可设置为:
- 1:单声道。
- 2:立体声。
- mode
- 音频帧的使用模式:
- 0:只读模式。例如,用户通过声网 SDK 获取数据后推送 RTMP 或 RTMPS 流。
- 2:读写模式。用户从 AudioFrame 中读取数据并进行修改后播放。例如,用户有自己的音效处理模块并进行语音预处理,如变声。
- samplesPerCall
- 每次调用的数据采样数,例如媒体推流时为 1024。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
onEarMonitoringAudioFrame
耳返音频帧回调。
public abstract boolean onEarMonitoringAudioFrame(int type, int samplesPerChannel, int bytesPerSample, int channels, int samplesPerSec, ByteBuffer buffer, long renderTimeMs, int avsync_type);
- 方法一:调用 setEarMonitoringAudioFrameParameters 设置音频数据格式,并调用 registerAudioFrameObserver 注册音频帧观察者对象后,SDK 会根据设置的参数计算采样间隔,并按该间隔触发 onEarMonitoringAudioFrame 回调。
- 方法二:调用 registerAudioFrameObserver 注册音频帧观察者对象后,在 getObservedAudioFramePosition 的返回值中设置音频数据格式。然后 SDK 会根据 getEarMonitoringAudioParams 的返回值计算采样间隔,并按该间隔触发 onEarMonitoringAudioFrame 回调。
参数
- type
- 音频帧类型。
- samplesPerChannel
- 每个声道中的采样点数。
- bytesPerSample
- 每个音频采样点的字节数。例如,每个 PCM 音频采样点通常占用 16 位(2 字节)。
- channels
- 声道数:
- 1:单声道。
- 2:立体声。若为立体声,数据为交错格式。
- samplesPerSec
- 录音采样率(Hz)。
- buffer
- 音频缓冲区。缓冲区大小 =
samplesPerChannel×channels×bytesPerSample。详见ByteBuffer。 - renderTimeMs
- 外部音频帧的时间戳(毫秒)。你可以使用该参数在视频或音频相关场景中(包括使用自定义视频源的场景)实现音视频帧同步。
- avsync_type
- 预留参数。
返回值
- true:回调处理成功。
- false:回调处理失败。
onMixedAudioFrame
获取混合采集和播放的音频帧回调。
public abstract boolean onMixedAudioFrame(String channelId, int type, int samplesPerChannel, int bytesPerSample, int channels, int samplesPerSec, ByteBuffer buffer, long renderTimeMs, int avsync_type);
- 方法一:调用 setMixedAudioFrameParameters 设置音频数据格式,并调用 registerAudioFrameObserver 注册音频帧观察者对象后,SDK 会根据设置的参数计算采样间隔,并按照采样间隔触发该回调。
- 方法二:调用 registerAudioFrameObserver 注册音频帧观察者对象后,在 getObservedAudioFramePosition 回调的返回值中设置音频数据格式。SDK 会根据 getMixedAudioParams 回调的返回值计算采样间隔,并按照采样间隔触发该回调。
参数
- channelId
- 频道 ID。
- type
- 音频帧类型。
- samplesPerChannel
- 每个声道的采样点数。
- bytesPerSample
- 每个音频采样的字节数。例如,每个 PCM 音频采样通常占用 16 位(2 字节)。
- channels
- 声道数:
- 1:单声道。
- 2:立体声。使用立体声时,数据为交错格式。
- samplesPerSec
- 录音采样率(Hz)。
- buffer
- 音频缓冲区。缓冲区大小 =
samplesPerChannel×channels×bytesPerSample。详见ByteBuffer。 - renderTimeMs
- 外部音频帧的时间戳(毫秒)。你可以使用该参数在视频或音频相关场景中(包括使用外部视频源的场景)实现音视频帧同步。
- avsync_type
- 预留参数。
返回值
- true:回调处理成功。
- false:回调处理失败。
onPlaybackAudioFrame
获取用于播放的原始音频帧回调。
public abstract boolean onPlaybackAudioFrame(String channelId, int type, int samplesPerChannel, int bytesPerSample, int channels, int samplesPerSec, ByteBuffer buffer, long renderTimeMs, int avsync_type);
- 方法一:调用 setPlaybackAudioFrameParameters 设置音频数据格式,并调用 registerAudioFrameObserver 注册音频帧观察者对象后,SDK 会根据设置的参数计算采样间隔,并按照采样间隔触发该回调。
- 方法二:调用 registerAudioFrameObserver 注册音频帧观察者对象后,在 getObservedAudioFramePosition 回调的返回值中设置音频数据格式。SDK 会根据 getPlaybackAudioParams 回调的返回值计算采样间隔,并按照采样间隔触发该回调。
参数
- channelId
- 频道 ID。
- type
- 音频帧类型。
- samplesPerChannel
- 每个声道中的采样点数。
- bytesPerSample
- 每个音频采样点的字节数。例如,每个 PCM 音频采样点通常占用 16 位(2 字节)。
- channels
- 声道数:
- 1:单声道。
- 2:立体声。若为立体声,数据为交错排列。
- samplesPerSec
- 录音采样率(Hz)。
- buffer
- 音频缓冲区。缓冲区大小 =
samplesPerChannel×channels×bytesPerSample。 - renderTimeMs
- 外部音频帧的时间戳(毫秒)。你可以使用该参数在视频或音频相关场景中(包括使用外部视频源的场景)实现音视频帧同步。
- avsync_type
- 预留参数。
返回值
- true:回调处理成功。
- false:回调处理失败。
onPlaybackAudioFrameBeforeMixing
获取已订阅远端用户混音前的音频帧回调。
public abstract boolean onPlaybackAudioFrameBeforeMixing(String channelId, int uid, int type, int samplesPerChannel, int bytesPerSample, int channels, int samplesPerSec, ByteBuffer buffer, long renderTimeMs, int avsync_type, int rtpTimestamp, long presentationMs);
触发时机
该回调在获取远端用户音频帧并在混音前触发。
参数
- channelId
- 频道 ID。
- uid
- 已订阅远端用户的用户 ID。
- type
- 音频帧类型。
- samplesPerChannel
- 每个声道的采样点数。
- bytesPerSample
- 每个音频采样点的字节数。例如,每个 PCM 音频采样点通常为 16 位(2 字节)。
- channels
- 声道数:
- 1:单声道。
- 2:立体声。立体声数据为交错排列。
- samplesPerSec
- 录音采样率(Hz)。
- buffer
- 音频缓冲区。缓冲区大小 =
samplesPerChannel×channels×bytesPerSample。 - renderTimeMs
- 外部音频帧的时间戳(毫秒)。你可以使用该参数在视频或音频相关场景中(包括使用自定义视频源的场景)实现音视频同步。
- avsync_type
- 预留参数。
- rtpTimestamp
- RTP 时间戳。
- presentationMs
- 展示时间戳(毫秒)。
返回值
- true:处理成功。
- false:处理失败。
onRecordAudioFrame
获取采集到的音频帧回调。
public abstract boolean onRecordAudioFrame(String channelId, int type, int samplesPerChannel, int bytesPerSample, int channels, int samplesPerSec, ByteBuffer buffer, long renderTimeMs, int avsync_type);
- 方法一:调用 setRecordingAudioFrameParameters 设置音频数据格式,并调用 registerAudioFrameObserver 注册音频帧观察者对象后,SDK 会根据方法中设置的参数计算采样间隔,并按照采样间隔触发该回调。
- 方法二:调用 registerAudioFrameObserver 注册音频帧观察者对象后,在 getObservedAudioFramePosition 回调的返回值中设置音频数据格式。SDK 会根据 getRecordAudioParams 回调的返回值计算采样间隔,并按照采样间隔触发该回调。
参数
- channelId
- 频道 ID。
- type
- 音频帧类型。
- samplesPerChannel
- 每个声道中的采样点数。
- bytesPerSample
- 每个音频采样的字节数。例如,每个 PCM 音频采样通常占用 16 位(2 字节)。
- channels
- 声道数:
- 1:单声道。
- 2:立体声。如果使用立体声,数据为交错排列。
- samplesPerSec
- 录音采样率(Hz)。
- buffer
- 音频缓冲区。缓冲区大小 =
samplesPerChannel×channels×bytesPerSample。 - renderTimeMs
- 外部音频帧的时间戳(毫秒)。你可以使用该参数在视频或音频相关场景中(包括使用外部视频源的场景)实现音视频帧同步。
- avsync_type
- 预留参数。
返回值
- true:回调处理成功。
- false:回调处理失败。