| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #ifndef IAUDIOCAPTURER_H
- #define IAUDIOCAPTURER_H
- #include <cstdint>
- #include <functional>
- #include "basic/basic.h"
- // 平台无关的音频格式结构
- struct AudioFormat
- {
- uint32_t sampleRate; // 采样率 (Hz)
- uint16_t channels; // 通道数
- uint16_t bitsPerSample; // 每个样本的位数
- uint32_t avgBytesPerSec; // 平均每秒字节数
- uint16_t blockAlign; // 数据块对齐大小
- // 默认构造函数
- AudioFormat()
- : sampleRate(0)
- , channels(0)
- , bitsPerSample(0)
- , avgBytesPerSec(0)
- , blockAlign(0)
- {}
- // 带参数的构造函数
- AudioFormat(uint32_t rate, uint16_t ch, uint16_t bits)
- : sampleRate(rate)
- , channels(ch)
- , bitsPerSample(bits)
- {
- blockAlign = channels * bitsPerSample / 8;
- avgBytesPerSec = sampleRate * blockAlign;
- }
- };
- class IAudioCapturer
- {
- public:
- // 默认音频格式
- static AudioFormat GetDefaultFormat()
- {
- return AudioFormat(AUDIO_SAMPLE_RATE, AUDIO_CHANNEL, AUDIO_CAPTURE_BITS_PER_SAMPLE);
- }
- enum Type { Microphone, Speaker };
- virtual ~IAudioCapturer() = default;
- virtual bool Init(Type deviceType) = 0;
- virtual bool Start() = 0;
- virtual void Stop() = 0;
- // 获取音频格式
- virtual const AudioFormat& GetFormat() const = 0;
- // 主动拉取音频数据,返回实际读取字节数
- virtual int readAudioData(char* buf, int maxLen) = 0;
- };
- #endif // IAUDIOCAPTURER_H
|