W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
音頻采集的主要工作是通過輸入設(shè)備將聲音采集并轉(zhuǎn)碼為音頻數(shù)據(jù),同時對采集任務(wù)進行管理。
接口名 | 描述 |
---|---|
AudioCapturer(AudioCapturerInfo audioCapturerInfo) throws IllegalArgumentException | 構(gòu)造函數(shù),設(shè)置錄音相關(guān)音頻參數(shù),使用默認錄音設(shè)備。 |
AudioCapturer(AudioCapturerInfo audioCapturerInfo, AudioDeviceDescriptor devInfo) throws IllegalArgumentException | 構(gòu)造函數(shù),設(shè)置錄音相關(guān)音頻參數(shù)并指定錄音設(shè)備。 |
static int getMinBufferSize(int sampleRate, int channelCount, int audioFormat) | 獲取指定參數(shù)條件下所需的最小緩沖區(qū)大小。 |
boolean addSoundEffect(UUID type, String packageName) | 增加錄音的音頻音效。 |
boolean start() | 開始錄音。 |
int read(byte[] data, int offset, int size) | 讀取音頻數(shù)據(jù)。 |
int read(byte[] data, int offset, int size, boolean isBlocking) | 讀取音頻數(shù)據(jù)并寫入傳入的 byte 數(shù)組中。 |
int read(float[] data, int offsetInFloats, int sizeInFloats) | 阻塞式讀取音頻數(shù)據(jù)并寫入傳入的 float 數(shù)組中。 |
int read(float[] data, int offsetInFloats, int sizeInFloats, boolean isBlocking) | 讀取音頻數(shù)據(jù)并寫入傳入的 float 數(shù)組中。 |
int read(short[] data, int offsetInShorts, int sizeInShorts) | 阻塞式讀取音頻數(shù)據(jù)并寫入傳入的 short 數(shù)組中。 |
int read(short[] data, int offsetInShorts, int sizeInShorts, boolean isBlocking) | 讀取音頻數(shù)據(jù)并寫入傳入的 short 數(shù)組中。 |
int read(java.nio.ByteBuffer buffer, int sizeInBytes) | 阻塞式讀取音頻數(shù)據(jù)并寫入傳入的 ByteBuffer 對象中。 |
int read(java.nio.ByteBuffer buffer, int sizeInBytes, boolean isBlocking) | 讀取音頻數(shù)據(jù)并寫入傳入的 ByteBuffer 對象中。 |
boolean stop() | 停止錄音。 |
boolean release() | 釋放錄音資源。 |
AudioDeviceDescriptor getSelectedDevice() | 獲取輸入設(shè)備信息。 |
AudioDeviceDescriptor getCurrentDevice() | 獲取當前正在錄制音頻的設(shè)備信息。 |
int getCapturerSessionId() | 獲取錄音的 session ID。 |
Set<SoundEffect> getSoundEffects() | 獲取已經(jīng)激活的音頻音效列表。 |
AudioCapturer.State getState() | 獲取音頻采集狀態(tài)。 |
int getSampleRate() | 獲取采樣率。 |
int getAudioInputSource() | 獲取錄音的輸入設(shè)備信息。 |
int getBufferFrameCount() | 獲取以幀為單位的緩沖區(qū)大小。 |
int getChannelCount() | 獲取音頻采集通道數(shù)。 |
AudioStreamInfo.EncodingFormat getEncodingFormat() | 獲取音頻采集的音頻編碼格式。 |
boolean getAudioTime(Timestamp timestamp, Timestamp.Timebase timebase) | 獲取一個即時的捕獲時間戳。 |
AudioStreamInfo audioStreamInfo = new AudioStreamInfo.Builder().sampleRate(
AudioStreamInfo.SAMPLE_RATE_UNSPECIFIED)
.audioStreamFlag(AudioStreamInfo.AudioStreamFlag.AUDIO_STREAM_FLAG_NONE)
.encodingFormat(AudioStreamInfo.EncodingFormat.ENCODING_INVALID)
.channelMask(AudioStreamInfo.ChannelMask.CHANNEL_INVALID)
.streamUsage(AudioStreamInfo.StreamUsage.STREAM_USAGE_UNKNOWN)
.build();
AudioStreamInfo audioStreamInfo = new AudioStreamInfo.Builder().encodingFormat(
AudioStreamInfo.EncodingFormat.ENCODING_PCM_16BIT) // 16-bit PCM
.channelMask(AudioStreamInfo.ChannelMask.CHANNEL_IN_STEREO) // 雙聲道
.sampleRate(44100) // 44.1kHz
.build();
AudioCapturerInfo audioCapturerInfo = new AudioCapturerInfo.Builder().audioStreamInfo(audioStreamInfo)
.build();
private AudioManager audioManager = new AudioManager();
public void main() {
AudioCapturerCallback cb = new AudioCapturerCallback() {
@Override
public void onCapturerConfigChanged(List<AudioCapturerConfig> configs) {
configs.forEach(config -> doSomething(config));
}
};
audioManager.registerAudioCapturerCallback(cb);
}
private void doSomething(AudioCapturerConfig config) {
...
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: