原始音频数据

  • Android

更新时间不可用

getEarMonitoringAudioParams

onEarMonitoringAudioFrame 回调的音频格式设置方法。

Java
@CalledByNative public abstract AudioParams getEarMonitoringAudioParams();

调用 registerAudioFrameObserver 注册音频帧观察者时,需要实现该回调。SDK 会触发该回调,你可以在该回调的返回值中设置音频格式。

注: SDK 会根据你在返回值中设置的采样间隔计算公式触发 onEarMonitoringAudioFrame 回调。采样间隔(秒) = samplePerCall /(sampleRate × channel)。请确保采样间隔 ≥ 0.01 秒。

返回值

耳返音频数据格式,详见 AudioParams。

所属接口类

getMixedAudioParams

设置 onMixedAudioFrame 回调的音频格式。

Java
@CalledByNative public abstract AudioParams getMixedAudioParams();

调用 registerAudioFrameObserver 注册音频帧观察者时,需要实现该回调。成功注册音频帧观察者后,SDK 会触发该回调,你可以在该回调的返回值中设置音频格式。

注: SDK 会根据你在返回值中设置的采样间隔计算公式触发 onMixedAudioFrame 回调。采样间隔(秒) = samplePerCall /(sampleRate × channel)。确保采样间隔 ≥ 0.01 秒。

返回值

方法调用成功,返回 AudioParams 对象。详见 AudioParams。

所属接口类

getObservedAudioFramePosition

设置音频数据观察位置。

Java
@CalledByNative public abstract int getObservedAudioFramePosition();

成功注册音频数据观察器后,SDK 会在每个特定的音频帧处理节点调用该回调,以判断是否触发以下回调:

你可以根据场景需求,通过修改 getObservedAudioFramePosition 的返回值设置需要观察的一个或多个位置。当需要观察多个位置时,需使用 |(或运算符)。为节省系统资源,建议减少观察的帧位置数量。

返回值

返回一个位掩码,用于设置观察位置,具体取值如下:

  • POSITION_PLAYBACK(0x0001):可观察所有远端用户混音后的播放音频,对应 onPlaybackAudioFrame 回调。
  • POSITION_RECORD(0x0002):可观察本地用户采集的音频,对应 onRecordAudioFrame 回调。
  • POSITION_MIXED(0x0004):可观察本地用户与所有远端用户混音后的播放音频,对应 onMixedAudioFrame 回调。
  • POSITION_BEFORE_MIXING(0x0008):可观察单个远端用户混音前的音频,对应 onPlaybackAudioFrameBeforeMixing 回调。
  • POSITION_EAR_MONITORING(0x0010):可观察本地用户的耳返音频,对应 onEarMonitoringAudioFrame 回调。

所属接口类

getPlaybackAudioParams

onPlaybackAudioFrame 回调的音频格式设置方法。

Java
public abstract AudioParams getPlaybackAudioParams()

你需要在调用 registerAudioFrameObserver 方法时注册回调。在成功注册音频观测器后,SDK 会触发该回调。你可以在该回调的返回值中设置音频格式。

注: SDK 会根据你在返回值中设置的 AudioParams 计算采样间隔,并以此触发 onPlaybackAudioFrame 回调。采样间隔的计算公式为:采样间隔(秒) = samplePerCall /(sampleRate × channel)。确保采样间隔 ≥ 0.01 秒。

返回值

方法调用成功,返回 AudioParams 对象。详见 AudioParams。

所属接口类

getRecordAudioParams

设置 onRecordAudioFrame 回调的音频格式。

Java
@CalledByNative public abstract AudioParams getRecordAudioParams();

调用 registerAudioFrameObserver 注册回调后,SDK 会触发该回调。你可以在该回调的返回值中设置音频格式。

注: SDK 会根据你在返回值中设置的 AudioParams 计算采样间隔并触发 onRecordAudioFrame 回调。采样间隔(秒) = samplePerCall /(sampleRate × channel)。请确保采样间隔 ≥ 0.01 秒。

返回值

方法调用成功,返回 AudioParams 对象。

所属接口类

registerAudioFrameObserver

注册音频帧观测器对象。

Java
public abstract int registerAudioFrameObserver(IAudioFrameObserver observer);

调用该方法注册音频帧观测器对象后,SDK 会触发 onMixedAudioFrame、onRecordAudioFrame、onPlaybackAudioFrame、onPlaybackAudioFrameBeforeMixing 或 onEarMonitoringAudioFrame 回调。

调用时机

在加入频道前调用此方法。

相关回调

相关回调:onMixedAudioFrame、onRecordAudioFrame、onPlaybackAudioFrame、onPlaybackAudioFrameBeforeMixing、onEarMonitoringAudioFrame。

参数

参数名描述
observer

音频帧观测器实例。详见 IAudioFrameObserver。设置为 null 可释放该实例。建议在收到 onLeaveChannel 回调后调用此方法释放音频帧观测器对象。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setEarMonitoringAudioFrameParameters

设置耳返音频数据格式。

Java
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

设置混音后用于采集和播放的原始音频数据格式。

Java
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]

设置混音前原始音频播放数据的格式。

Java
public abstract int setPlaybackAudioFrameBeforeMixingParameters(int sampleRate, int channel);

SDK 会根据采样间隔触发 onPlaybackAudioFrameBeforeMixing 回调。

调用时机

请在加入频道前调用此方法。

相关回调

相关回调: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 回调中返回音频数据的格式。

Java
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

设置原始音频播放数据的格式。

Java
public abstract int setPlaybackAudioFrameParameters(int sampleRate, int channel, int mode, int samplesPerCall);

SDK 会根据 samplesPerCall、sampleRate 和 channel 参数计算采样间隔。采样间隔(单位:秒) = samplesPerCall /(sampleRate × channel)。请确保采样间隔 ≥ 0.01 秒。SDK 会根据采样间隔触发 onPlaybackAudioFrame 回调。

调用时机

在加入频道前调用此方法。

相关回调

该方法会根据采样间隔触发 onPlaybackAudioFrame 回调。

参数

参数名描述
sampleRate

回调中返回的采样率。可设置为 8000、16000、24000、32000、44100 或 48000 Hz。

channel

音频声道数。可设置为:

  • 1:单声道。
  • 2:立体声。
mode

音频帧的使用模式:

  • RAW_AUDIO_FRAME_OP_MODE_READ_ONLY (0):(默认)只读模式。例如,用户通过声网 SDK 获取数据后推送 RTMP 或 RTMPS 流。
  • RAW_AUDIO_FRAME_OP_MODE_READ_WRITE (2):读写模式。用户从 AudioFrame 中读取数据,修改后再播放。例如,用户有自己的音效处理模块并进行语音预处理,如变声。
samplesPerCall

每次调用返回的数据采样数,例如媒体推流时为 1024。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setRecordingAudioFrameParameters

设置采集的原始音频数据格式。

Java
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

耳返音频帧回调。

Java
public abstract boolean onEarMonitoringAudioFrame(int type, int samplesPerChannel, int bytesPerSample, int channels, int samplesPerSec, ByteBuffer buffer, long renderTimeMs, int avsync_type);

该回调用于获取耳返音频数据。为了确保获取的数据符合预期,声网建议你通过以下任一方式设置音频数据格式:

注: 方法一的优先级高于方法二。如果使用方法一设置音频数据格式,则方法二的设置无效。

参数

参数名描述
type

音频帧类型。

samplesPerChannel

每个声道中的采样点数。

bytesPerSample

每个音频采样点的字节数。例如,每个 PCM 音频采样点通常占用 16 位(2 字节)。

channels

声道数:

  • 1:单声道。
  • 2:立体声。若为立体声,数据为交错格式。
samplesPerSec

录音采样率(Hz)。

buffer

音频缓冲区。缓冲区大小 = samplesPerChannel × channels × bytesPerSample。详见 ByteBuffer。

renderTimeMs

外部音频帧的时间戳(毫秒)。你可以使用该参数在视频或音频相关场景中(包括使用自定义视频源的场景)实现音视频帧同步。

avsync_type

预留参数。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • true:回调处理成功。
  • false:回调处理失败。

所属接口类

onMixedAudioFrame

获取混合采集和播放的音频帧回调。

Java
public abstract boolean onMixedAudioFrame(String channelId, int type, int samplesPerChannel, int bytesPerSample, int channels, int samplesPerSec, ByteBuffer buffer, long renderTimeMs, int avsync_type);

声网建议通过以下两种方式之一设置音频数据格式,以确保混合采集和播放音频帧的数据格式符合预期:

注: setMixedAudioFrameParameters 的设置优先级高于 getObservedAudioFramePosition。如果使用方法一设置音频数据格式,则方法二的设置无效。

参数

参数名描述
channelId

频道 ID。

type

音频帧类型。

samplesPerChannel

每个声道的采样点数。

bytesPerSample

每个音频采样的字节数。例如,每个 PCM 音频采样通常占用 16 位(2 字节)。

channels

声道数:

  • 1:单声道。
  • 2:立体声。使用立体声时,数据为交错格式。
samplesPerSec

录音采样率(Hz)。

buffer

音频缓冲区。缓冲区大小 = samplesPerChannel × channels × bytesPerSample。详见 ByteBuffer。

renderTimeMs

外部音频帧的时间戳(毫秒)。你可以使用该参数在视频或音频相关场景中(包括使用外部视频源的场景)实现音视频帧同步。

avsync_type

预留参数。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • true:回调处理成功。
  • false:回调处理失败。

所属接口类

onPlaybackAudioFrame

获取用于播放的原始音频帧回调。

Java
public abstract boolean onPlaybackAudioFrame(String channelId, int type, int samplesPerChannel, int bytesPerSample, int channels, int samplesPerSec, ByteBuffer buffer, long renderTimeMs, int avsync_type);

你可以通过以下两种方式之一设置音频数据格式:

注: setPlaybackAudioFrameParameters 的设置优先级高于 getObservedAudioFramePosition。如果使用方法一设置音频数据格式,则方法二的设置无效。

参数

参数名描述
channelId

频道 ID。

type

音频帧类型。

samplesPerChannel

每个声道中的采样点数。

bytesPerSample

每个音频采样点的字节数。例如,每个 PCM 音频采样点通常占用 16 位(2 字节)。

channels

声道数:

  • 1:单声道。
  • 2:立体声。若为立体声,数据为交错排列。
samplesPerSec

录音采样率(Hz)。

buffer

音频缓冲区。缓冲区大小 = samplesPerChannel × channels × bytesPerSample。

renderTimeMs

外部音频帧的时间戳(毫秒)。你可以使用该参数在视频或音频相关场景中(包括使用外部视频源的场景)实现音视频帧同步。

avsync_type

预留参数。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • true:回调处理成功。
  • false:回调处理失败。

所属接口类

onPlaybackAudioFrameBeforeMixing

获取已订阅远端用户混音前的音频帧回调。

Java
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

获取采集到的音频帧回调。

Java
public abstract boolean onRecordAudioFrame(String channelId, int type, int samplesPerChannel, int bytesPerSample, int channels, int samplesPerSec, ByteBuffer buffer, long renderTimeMs, int avsync_type);

你可以通过以下两种方式之一设置音频数据格式:

注: setRecordingAudioFrameParameters 的设置优先级高于 getObservedAudioFramePosition。如果使用方法一设置音频数据格式,则方法二的设置无效。

参数

参数名描述
channelId

频道 ID。

type

音频帧类型。

samplesPerChannel

每个声道中的采样点数。

bytesPerSample

每个音频采样的字节数。例如,每个 PCM 音频采样通常占用 16 位(2 字节)。

channels

声道数:

  • 1:单声道。
  • 2:立体声。如果使用立体声,数据为交错排列。
samplesPerSec

录音采样率(Hz)。

buffer

音频缓冲区。缓冲区大小 = samplesPerChannel × channels × bytesPerSample。

renderTimeMs

外部音频帧的时间戳(毫秒)。你可以使用该参数在视频或音频相关场景中(包括使用外部视频源的场景)实现音视频帧同步。

avsync_type

预留参数。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • true:回调处理成功。
  • false:回调处理失败。

所属接口类